Arduino專案:使用電位計控制伺服馬達

這個專案中,我們將學習如何使用電位計控制伺服馬達。 透過類比輸入腳位,我們可以讀取電位計的旋轉值,範圍從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....

Arduino項目:讀取類比輸入

在這個項目中,我們將使用一個電位計並將其連接到Arduino的類比輸入引腳,並編寫一個程式來讀取當前的值。 在Arduino的第2個項目中,我們學會了如何讀取數字輸入。讀取到的值可以是 0 或 1,LOW 或 HIGH。 這可以通過數字I/O引腳來完成,引腳編號從 0 到 13。 類比I/O引腳以 A 開頭。在Arduino Uno上,您可以找到6個類比I/O引腳 A0 / A5: 在Arduino MKR 1010 WiFi上,您有7個類比I/O引腳,從 A0 到 A6: 不同的板子擁有不同數量和位置的引腳。這些引腳可以配置為類比輸入或類比輸出。 數字信號只能是高或低。類比信號可以保持一系列的值,在Arduino的情況下,它的範圍從 0 到 1023,對應著輸入端的電壓從0V到5V的程度。 各種傳感器都會提供給我們類比值。想想溫度傳感器、距離傳感器、聲音傳感器、運動傳感器…我們可以使用Arduino讀取它們的數值,並根據數據決定要做什麼。 我們可以使用一個名為 analogRead() 的函數來實現。 但讓我們先建立一個小電路。 在項目“使用電位計建立一個LED調光器”中,我們建立了一個簡單的電路,使用一個電位計控制LED光。現在讓我們複製該電路的一部分,除了現在我們將Arduino放在那裡。 如果將電位計完全向左轉動,我們讀取到的值應該是 0。完全向右轉動時,我們讀到的值應該是 1023,在中間位置時應該是 512。 以下是使用一個10kΩ電位計構建的電路示意圖: 我們從Arduino的電源輸出引腳獲得0V和5V,並將它們連接到麵包板。然後我們將這些電壓級別連接到電位計的輸入引腳,並獲得輸出引腳,將其連接到類比引腳 A1: 我們編寫一個程式從該引腳讀取,並將讀取到的值打印到串行接口,這樣我們就可以從Arduino IDE的串行監視器上讀取它: void setup() { Serial.begin(9600); } void loop() { int value = analogRead(A1); Serial.println(value); } 需要注意的是,我沒有將 A1 引腳明確設置為輸入引腳,因為引腳默認情況下是輸入的。如果我想寫入該引腳,我需要在 setup() 中使用 pinMode() 进行設置。 以下是我們的程式運行時的結果。當電位計完全向左轉動時,我們讀到的值是 0: 當電位計完全向右轉動時,我們讀到的值是 1023(有時由於處理類比值並且不是100%精確,可能是 1022):...

電子元件:可變電阻器(Potentiometers)

可變電阻器是一種微小的元件,具有3個連接器:一側有2個,另一側有1個: 其中的兩個連接器是輸入端,一個連接到負極,一個連接到正極,而另一端則是輸出端。 透過旋轉可變電阻器,我們可以在輸出端獲得輸入引腳間的電壓差的一部分。 這是因為可變電阻器是一種可以調整電阻的電阻器。在這個例子中,我們使用的是一個10kΩ的可變電阻器: 看這個模擬:如果我們將可變電阻器旋轉到最左邊(逆時針),在輸出端和地之間會有9V的電壓差,因為可變電阻器以100%的10kΩ電阻工作並吸收所有電流: 如果我們將可變電阻器旋轉到最右邊,輸出端的電壓差仍然為9V,因為此時可變電阻器不吸收任何電流。它的工作原理就像一根導線,即電阻為0。 將可變電阻器設置為50%時,在輸出端獲得輸入端電壓的一半: 可變電阻器具有許多使用方便的原因,不僅可以獨立使用,而且還可用於集成電路中,幫助我們調節輸出。例如,在這個聲音傳感器中,可變電阻器就是我們可以用螺絲起子調節的藍色盒子: