這個專案中,我們將學習如何使用電位計控制伺服馬達。
透過類比輸入腳位,我們可以讀取電位計的旋轉值,範圍從0到1023。
我們將利用這些數值將伺服馬達從0°旋轉到180°。
首先我們需要建立電路,然後撰寫程式碼。
將電源腳位5V和GND連接到麵包板的「+」和「-」行上:
然後將這些訊號連接至電位計的輸入腳位:
將輸出腳位連接至類比I/O腳位A0:
接下來,連接伺服馬達。將棕色線連接至0V,紅色線連接至5V,橙色線連接至腳位9:
現在切換到Arduino IDE以撰寫程式。
首先我們需要讀取電位計的輸入:
void setup() {
Serial.begin(9600);
}
void loop() {
int value = analogRead(A0);
Serial.println(value);
}
將此程式上傳至Arduino,您應該可以在序列監視器中看到從0到1023的輸出。
現在我們需要將這個0-1023的數值重新映射為0-180,以供伺服馬達使用。
我們可以使用map()
函式來實現:
value = map(value, 0, 1023, 0, 180);
接下來,我們將使用一個函式庫。
在Arduino IDE的「Sketch」選單中,選擇「Include Library」,然後選擇「Servo」:
這將在檔案頂部加入#include <Servo.h>
這一行。
Servo函式庫是一個內建的函式庫,您可以透過開啟「Tools」和「Manage libraries…」來取得更多關於此函式庫的資訊。
這會開啟Library manager:
在搜尋方塊中搜尋「servo」,您應該會看到相關結果:
點擊「More info」連結,這會在您的瀏覽器中開啟https://www.arduino.cc/reference/en/libraries/servo/這個頁面。
這是獲取任何函式庫相關資訊的方式,不僅僅是這個函式庫,知道如何獲取更多資訊是很有用的。
該頁面列出了一些使用資訊、函式庫暴露的方法以及一些範例:
Arduino的好處是它是完全開源的。在這種情況下,您可以在https://github.com/arduino-libraries/Servo找到該函式庫的原始碼,因此您可以撰寫自己修改後的版本,或者僅僅了解其內部運作方式。
使用attach()
函式告訴Servo使用哪個端口。
使用write()
函式將伺服馬達移動到指定的角度(參數範圍為0到180)。
但首先我們需要宣告一個Servo物件。我們在setup()
函式之前這麼做,使用Servo myservo;
:
#include <Servo.h>
Servo myservo;
然後在setup()
函式中,我們將伺服馬達連接至I/O腳位9:
#include <Servo.h>
Servo myservo;
void setup() {
myservo.attach(9);
}
最後在loop()
函式中,我們呼叫myservo.write()
函式,將0到180的數值傳遞進去:
#include <Servo.h>
Servo myservo;
void setup() {
myservo.attach(9);
}
void loop() {
int value = analogRead(A0);
value = map(value, 0, 1023, 0, 180);
myservo.write(value);
}