(Control 2 servo motors with an Arduino )
利用 Arduino 控制一顆伺服馬達,很容易,
在官方網站,甚至隨意搜尋都能找到 sample code
但同時控制兩顆轉向不同位置,似乎就是很多人頭痛的問題
在單晶片領域中,要同時控制兩顆馬達轉向不同位置,
可以利用軟體方法,也可以利用硬體方法
詳細的內容請上 Arduino 官方網站,點選左上方 playground 進入,
並於左側選單中點選 Interfacing With Hardware,
接著在網頁中搜尋: Servos ,將會有更多控制多顆伺服馬達的說明
在此我們提供利用 Servo.h 與副程式的軟體方法
來達成同時控制兩顆伺服馬達的需求,source code 如下:
來達成同時控制兩顆伺服馬達的需求,source code 如下:
#include <Servo.h>
Servo servoLeft; // 宣告左邊伺服馬達
Servo servoRight; // 宣告右邊伺服馬達
void setup() {
servoLeft.attach(10); // 將 Pin 10 指定為左邊伺服馬達
servoRight.attach(9); // 將 Pin 9 指定為右邊伺服馬達
}
void loop() {
initial(); // 馬達位置歸零
delay(2000); // 執行後停止兩秒
same_degree(); // 左右伺服馬達同樣各轉30度
delay(2000); // 執行後停止兩秒
initial(); // 馬達位置歸零
delay(2000); // 執行後停止兩秒
dif_degree(); // 左伺服馬達轉30度,右伺服馬達轉150度
delay(2000); // 執行後停止兩秒
}
/* 以下為副程式宣告 */
void initial(){
servoLeft.write(0);
servoRight.write(0);
}
void same_degree() {
servoLeft.write(30);
servoRight.write(30);
}
void dif_degree() {
servoLeft.write(30);
servoRight.write(150);
}
以上為完整的程式碼#include <Servo.h>
程式一開始,我們就先宣告引入 Servo.h 檔,這樣後續的伺服馬達功能宣告、控制,我們才可以正常使用。
Servo servoLeft; // 宣告左邊伺服馬達
Servo servoRight; // 宣告右邊伺服馬達
引入 Servo.h 檔後,我們就可以 Servo 宣告左右伺服馬達變數完成以上步驟後,就只需要按照 Page 2 中提到的程式架構進行功能撰寫,
如此一來伺服馬達就可以依照指定角度進行旋轉了。
以下影片是 Arduino 經由本文中的程式同時控制兩顆馬達同時轉向30度;
與單顆轉向30度,另一顆轉向150度的範例影片。
影片中的紅色板子,是利基科技的教育學習板,
本實驗僅利用教育學習板上的麵包板,並無額外利用其他控制器。:
透過以上的程式與影片說明,希望能讓你學習到如何控制兩顆伺服馬達,
做出更多有趣的作品!
Marcus.
請問您是使用連續旋轉伺服馬達嗎
回覆刪除您好,是的,影片中所使用的是兩顆連續旋轉的伺服馬達。
刪除您好!
回覆刪除想請問:
我使用連續旋轉的伺服馬達,
但他不是旋轉30度後停止兩秒,而是旋轉兩秒再換下一步,
怎麼會不一樣呢? 謝謝!
servoLeft.write(30);
回覆刪除servoRight.write(30);
启动转动的时候程序执行是不是会有10微秒的前后延迟?而并不是同时
請問如何將程式停止
回覆刪除沒有辦法停
刪除只能把電線拔掉(連接電腦的USB線)
請問有辦法同時控制兩顆馬達同時轉一樣的角度嗎
回覆刪除