本文最初發佈在deviceplus.jp網站上,而後被翻譯成英語。
使用數位輸入,可以將5V讀取為“HIGH”,將0V讀取為“LOW”。可以透過狀態來判斷開關是否已導通。但是,實際上電壓不只是5V和0V,而是各種各樣。例如,一節AA電池的電壓為1.5V,日本家用插座的電壓為100V。
Arduino支持類比輸入,以能夠讀取這些不同的電壓。利用類比輸入功能,能夠讀取逐漸變化的電子元件的狀態。例如,使用“電位器”可以調節亮度或音量,也可以從溫度感測器獲取當前溫度。
本文是本系列文章的最後一篇,將介紹使用“電位器”進行類比輸入的方法。
實際的電壓不是像1V或5V這樣的精確值,而是像5.01342…V這樣的無理數,其小數點後的數字是無限不循環的。這樣的值是無法透過電腦直接處理的。因此,在電子電路中,會使用一種稱為“AD轉換器”的機制將類比值轉換為數位值,以便它們可以由電腦處理。Arduino作為標配搭載了AD轉換器,可以讀取類比電壓值並將其轉換為數位值。
AD轉換器會將物件電壓等分。對於Arduino Uno而言,可以讀取0-5V範圍內的電壓,並會將這些0-5V的電壓值分成1023等份。AD轉換器會將讀取到的類比電壓值轉換為最接近等分值的值。例如,如果電壓為3V,則“614”是最接近的值。這個值將發送給Arduino使用。
讀取到的多達1023個的整數值將會用於程式處理。但是,輸入值不是電壓值。如果想知道電壓值,可以進行如下計算:
例如,如果來自AD轉換器的值為“614”,則除以1023再乘以5即可得到約3V。
要使用Arduino Uno的數位輸入功能時,有從A0到A5的6個引腳可用。透過將電子元件連接到這些引腳上,即可讀取施加了多少電壓。但是,引腳A4和A5也用於稱為“I2C”的數位通訊。請注意,在連接感測器或顯示器等使用I2C數位通訊的電子元件時,這些引腳不能用於類比輸入。
“電位器”是一個可以用來調節音量或照明亮度的電子零件。在電位器內部配有電阻元件,並有在電阻元件上移動的引腳。透過移動引腳可以改變電阻。
電位器通常會配有三個引腳。左右兩側的引腳安裝在電阻器的兩端。中間的引腳可以在電阻元件上移動。如果將中間引腳向右移動,則左側和中間引腳之間的電阻會增加。反之,如果將中間引腳向左移動,則左側和中間引腳之間的電阻會減小。
在上圖中,電阻元件是線性的,但在旋轉式的電位器中,內部電阻元件是圓形的。儘管形狀不同,但它們的工作原理基本相同。
Arduino的類比輸入使用電壓的變化進行輸入。但是,由於電位器的電阻會發生變化,因此無法透過將其直接連接到Arduino來讀取電位器的變化情況。因此,需要將電阻的變化轉換為電壓的變化。將電源和GND分別連接到電阻的左右引腳。這樣,中間引腳的電壓將根據引腳的位置發生變化。例如,假設將GND連接到左側引腳,將電源(5V)連接到右側引腳,當中間引腳向右移動,電壓會升高,向左移動時,電壓會降低。此外,由於左端為0V,右端為5V,因此可以使電壓值在0V到5V的範圍內變化。
只要將這個中間引腳與Arduino的類比輸入引腳相連接,就可以透過操作電位器來更改輸入。
現在,我們嘗試使用電位器進行類比輸入。需要準備好以下電子零件:
電位器
電位器會記錄可調範圍內的電阻值。作為Arduino輸入使用時,最好使用10kΩ的電位器。另外,如果電位器的旋轉軸配有旋鈕會更容易操作。
用於連接電位器,使用時用鱷魚夾夾住電位器的引腳。點選連結可以看到我們使用的是2條紅線和2條黑線配套銷售的產品。
所需零件準備好以後,按如下方式連接。由於電位器無法插入麵包板,因此需要使用鱷魚夾線將其直接連接到Arduino。此時需要注意的是,要確保鱷魚夾的金屬部分不要接觸相鄰的夾子部分。
編寫以下程式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
const int VOL_PIN = A0; void setup(){ Serial.begin( 9600 ); } void loop(){ int value; float volt; value = analogRead( VOL_PIN ); volt = value * 5.0 / 1023.0; Serial.print( "Value: " ); Serial.print( value ); Serial.print( " Volt: " ); Serial.println( volt ); delay( 500 ); } |
要確認類比輸入引腳的連接狀態時,請在第11行的“analogRead()”中指定對象引腳。這樣,即可使用0到1023的值輸入引腳電壓值。如果想知道電壓,請按第13行所示進行計算並將計算值轉換為電壓值。
將程式發送給Arduino並顯示串列監視器。
您可以看到,經AD轉換器轉換為數位的值顯示在“Value:”之後,經計算並轉換為電壓的值顯示在“Volt:”之後,當轉動電位器時,值也隨之變化。
在本系列連載文章中,我們介紹了Arduino基礎的用法。歡迎您根據這些內容來嘗試製作各種電子作品或者讓一些電子零件動起來。非常感謝您連續關注這個長達半年的連載系列,謝謝!
想瞭解更多有關Arduino的基礎知識嗎?歡迎查看相關的文章: