這個專案中,我們將學習如何使用電位計控制伺服馬達。

透過類比輸入腳位,我們可以讀取電位計的旋轉值,範圍從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()write()

使用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);
}