我使用了兩個舵機 (MG995) +雲台放置於小車前方,目的是裝上如超聲波感測器後,可以讓其上下、左右移動。
目前已把兩個舵機含雲台給裝上小車上了,同時也把超聲波感測模組給鎖上雲台支架上,這樣看起來像雙機器人眼睛。
現在先把兩個舵機的測試程式寫好,至於超聲波模組的測試程式則留待另一篇討論。
舵機控制的程式相當簡單,因為 Arduino 已內建
舵機有三條電源線,一般棕色為接地、紅色為電線線;還有一條橘色則為訊號線。在 Arduino 擴展板上連接任一編號的 GVS 接腳即可。本例兩個舵機是連接編號為 4與5 的接腳組。
再來注意的是,MG995 舵機的轉向角度為 180度,但實際連接到小車後可移動角度因與其它裝置會碰觸到,所以需要經過調整,往往會小於 180度。本例控制左右的舵機把角度控制在 0~160 度;控制上下的舵機把角度控制在 0~125 度。
測試程式參考如下:
#include <Servo.h> Servo servoLR; // 控制左右的舵機變數 Servo servoTD; // 控制上下的舵機變數 int pos = 0; // variable to store the servo position void setup() { servoLR.attach(4); servoTD.attach(5); } void loop() { // 測試舵機往左移動 for(pos = 0; pos < 160; pos += 1) // goes from 0 degrees to 180 degrees { // in steps of 1 degree servoLR.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } delay(4000); // 測試舵機往右移動 for(pos = 160; pos>=0; pos-=1) // goes from 180 degrees to 0 degrees { servoLR.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } delay(4000); // 測試舵機往上移動 for(pos = 0; pos < 125; pos += 1) // goes from 0 degrees to 180 degrees { // in steps of 1 degree servoTD.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } delay(4000); // 測試舵機往下移動 for(pos = 125; pos>=0; pos-=1) // goes from 180 degrees to 0 degrees { servoTD.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } delay(4000); } |
照例我仍放了一段測試可以左右與上下移動的舵機測試影片: