- 材料清單:Arduino開發板 超聲波傳感器 舵機 杜邦線
- 原理:當我們人靠近垃圾桶,超聲波傳感器測出兩者之間的距離,距離小於設定的閾值,舵機轉動,垃圾桶蓋打開。
- 功能:實現人到自動打開垃圾袋。
- 線路連接:
元件名稱 | I/O引腳 | ||||
arduino | 正極 | 負極 | 引腳2 | 引腳3 | 引腳9 |
舵機 | 正極 | 負極 | 信號接收口 | ||
超聲波傳感器 | 正極 | 負極 | TrigPin | EchoPin |
5.注意事項:舵機紅色線:正極接5v 棕色(有的黑色)線:負極 黃色(橘色):arduino9號引腳
- 代碼:
1 #include <Servo.h> 2 Servo myservo; // 創建舵機對象來控制舵機 3 int pos = 0; 4 const int TrigPin = 2; 5 const int EchoPin = 3; 6 float distance; 7 void setup() 8 { 9 // 初始化串口通信及連接SR04的引腳 10 Serial.begin(9600); 11 pinMode(TrigPin, OUTPUT); 12 // 要檢測引腳上輸入的脈沖寬度,需要先設置為輸入狀態 13 pinMode(EchoPin, INPUT); 14 Serial.println("Ultrasonic sensor:"); 15 myservo.attach(9); 16 // 把連接在引腳9上的舵機賦予舵機對其控制 17 } 18 void loop() 19 { 20 // 產生一個10us的高脈沖去觸發TrigPin 21 digitalWrite(TrigPin, LOW); 22 delayMicroseconds(2); 23 digitalWrite(TrigPin, HIGH); 24 delayMicroseconds(10); 25 digitalWrite(TrigPin, LOW); 26 // 檢測脈沖寬度,並計算出距離 27 distance = pulseIn(EchoPin, HIGH) / 58.00; 28 Serial.println(distance); 29 delay(300); 30 if (distance<=50) 31 { 32 for(pos = 0; pos <= 120; pos += 120) // 從0度到120度 步長為120度,角度自己可調整 33 { 34 myservo.write(5); // 告訴舵機到達位置 35 delay(150); // 舵機命令之間等待15ms 36 } 37 } 38 if (distance>=50) 39 { 40 for(pos = 180; pos>=0; pos-=180) // 從120度到0度 41 { 42 myservo.write(120); // 在相反的方向上移動舵 43 delay(150); // 舵機命令之間等待15ms 44 } 45 } 46 }
6.選擇對應串口上傳,每個人的電腦有可能不一樣,查看舵機轉動,方向不合適可自己調整。
總結:1,制作模型過程要多加小心,我的手指就是在制作過程中操作不當,流血不止 嘻嘻 還好沒有什么大礙。2、在連接電路過程中有必要的時候可以把線路接穩了,能固 定就可以固定了,現在接的電路比較簡單,以后可能要接觸多電路時就很難排錯。