Arduino專案:使用電位計控制伺服馬達
這個專案中,我們將學習如何使用電位計控制伺服馬達。
透過類比輸入腳位,我們可以讀取電位計的旋轉值,範圍從0到1023。
我們將利用這些數值將伺服馬達從0°旋轉到180°。
首先我們需要建立電路,然後撰寫程式碼。
將電源腳位5V和GND連接到麵包板的「+」和「-」行上:
然後將這些訊號連接至電位計的輸入腳位:
將輸出腳位連接至類比I/O腳位A0:
接下來,連接伺服馬達。將棕色線連接至0V,紅色線連接至5V,橙色線連接至腳位9:
現在切換到Arduino IDE以撰寫程式。
首先我們需要讀取電位計的輸入:
1 | void setup() { |
將此程式上傳至Arduino,您應該可以在序列監視器中看到從0到1023的輸出。
現在我們需要將這個0-1023的數值重新映射為0-180,以供伺服馬達使用。
我們可以使用map()
函式來實現:
1 | 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;
:
1 |
|
然後在setup()
函式中,我們將伺服馬達連接至I/O腳位9:
1 |
|
最後在loop()
函式中,我們呼叫myservo.write()
函式,將0到180的數值傳遞進去:
1 |
|
tags: [“Arduino”, “Servo motor”, “Potentiometer”, “Control”]