和12岁小同志搞创客开发:手撕代码,做一款密室自动门
機緣巧合在網上認識一位12歲小同志,從零開始系統輔導其創客開發思維和技巧。
項目專欄:https://blog.csdn.net/m0_38106923/category_11097422.html?
所謂密室自動門,就是這門不是輕易能打開的,存在著某些玄關需要你去破解。這里設計的這個門,是通過不斷晃動手中的傳感器才能開。
有人會說,傳感器我知道是那個數字震動傳感器,那門呢?你沒看錯就是舵機,它能控制角度。所以,所謂的門的轉動,是靠舵機來完成的。做個來看下效果就知道了~
拓展學習:和12歲小同志搞創客開發:遙控舵機_不脫發的程序猿-CSDN博客
項目連線如下所示:
實現代碼如下所示:
#include <Servo.h> int sensorPin = 3; //震動傳感器 – Digital 3
Servo myservo;
int pos = 0; void setup() { Serial.begin(9600);pinMode(sensorPin, INPUT); myservo.attach(9); //舵機 – Digital 9
}void loop() {int sensorState = digitalRead(sensorPin);//讀取震動傳感器的狀態Serial.println(sensorState);if(!sensorState){ //一旦狀態發生變化,舵機加2°,直到加到180°pos = pos +2;if(pos >=180){ pos = 180; } myservo.write(pos); //寫入舵機的角度 Serial.println(pos); //串口同時輸出角度值delay(100); } else{ //狀態不發生變化,舵機減2°,直到減到0°pos = pos - 2; if(pos <=0){pos = 0; }myservo.write(pos); Serial.println(pos);delay(100); }delay(1);
}
代碼的開始先調用<Servo.h>庫:
#include <Servo.h>
這個庫已經在Arduino IDE中了,可以打開Arduino安裝路徑,例如我的安裝路徑:D:\Arduino\libraries\Servo\src,這就是Servo庫所在位置。
如果要在代碼中用庫中函數,是不能直接調用的,需要給庫找個中介,讓“他”建立代碼和庫中間的關系,也就是類的使用:
Servo myservo;
這里的myservo起到的就是這個作用。建立聯系,之后調用庫中的方法和變量的話,就要按照下面這個模式進行:
myservo.方法名
myservo.變量
如何定義舵機是接到那個引腳呢?用到就是attach()方法了。
myservo.attach(引腳ID); //舵機 – Digital 9
知道了如何定義一個舵機之后,如何把對應的角度寫進去呢?
myservo.write(角度); //寫入舵機的角度
最后,運行程序,不斷的晃動震動傳感器,可以看到舵機的角度會隨之變大。停止晃動后,舵機角度又開始慢慢減小。好比一扇門慢慢打開,合上。
總結
以上是生活随笔為你收集整理的和12岁小同志搞创客开发:手撕代码,做一款密室自动门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 和12岁小同志搞创客开发:手撕代码,做一
- 下一篇: 和12岁小同志搞创客开发:手撕代码,做一