伺服馬達(servo)是可以指定旋轉角度的馬達,在Arduino中一般是使用SG90的型號。
透過使用函示庫,我們可以用數位腳位控制伺服馬達。
新概念
函式庫:將許多程式寫成一個檔案。當我們要使用某個功能的時候,只要使用那個函式庫,就不用重新輸入每一行程式,也可以達到相同的效果。

伺服馬達(servo)轉動的角度雖然是從0~180度之間,但受到製造廠商、型號的影響,會有些微的差距,建議操作的角度設定在20~160之間比較不會有問題。
(事實上每一顆伺服馬達都會有差異,所以必須要實際的測試看看。)

有些伺服馬達可以不停轉動超過360度以及正轉反轉,但是需要特別改造,市面上有在賣。
伺服馬達一共有三條線。
紅色的為電源線,要接5V;
黃色的為訊號線,要接數位腳位;
棕色的為接地線,要接GND。
在這個範例之中,我們將訊號線(黃色)接到數位腳位9。
由於伺服馬達預設的杜邦線是母頭,因此我們要再接上一條接頭為公公的電線,才能接上Arudino。
#include <Servo.h>
Servo myservo;
int pos = 0;

void setup() {
myservo.attach(9);
}

void loop() {
myservo.write(pos);
}

加入伺服馬達函式庫
將伺服馬達命名為myservo
將正整數變數pos設為0


myservo的腳位設為9



myservo轉到pos度角(也就是0度角)
以下提供可變電阻控制伺服馬達轉動角度的範例。
註解1:浮點數就是帶有小數點的數。因為計算pos的時會除以1023, 結果會小於1,如果是整數的話會直接變成0。因此要用小數再*180。註解2:
#include
Servo myservo;
int pos = 0;
float pinRead = 0;

void setup() {
myservo.attach(9);
Serial.begin(9600);
}

void loop() {
pinRead = analogRead(A2);
Serial.println(pinRead);
pos=pinRead/1023*180;
myservo.write(pos);
}
加入伺服馬達函式庫
將伺服馬達命名為myservo
將正整數變數pos設為0
將浮點數pinRead設為0(註解1)


myservo的腳位設為9
序列埠速率9600(為了序列埠顯示)



pinRead設為類比腳位A2讀取的訊號
序列埠監控視窗顯示pinRead數值
pos設為pinRead/1023*180
myservo轉到pos度角(也就是0度角)