本個實驗我們就來學習類比I/O 端口(Port)的使用,Arduino 有類比0—類比5 共計6 個類比port,這6 個port也可以算作為I/O Port功能用,除類比port功能以外,這6 個port可作為數位port使用,編號為數位14—數位19,簡單瞭解以後就來開始實驗。電位計是大家比較熟悉的典型的類比值輸出元件,本實驗就用它來完成。
本實驗我們將電位計的阻值轉化為類比值讀取出來,然後顯示到螢幕上,這也是我們以後完成自己所需的實驗功能所必須掌握的實例應用。
我們使用的是類比0 端口。程式也很簡單,一個analogRead();語句就可以讀出類比端口的值,Arduino 328是10 位的A/D 取樣,所以讀取的類比值範圍是0-1023,本個實驗的程序裏還有一個難點就是顯示數值在螢幕這一問題,學習起來也是很簡單的。
首先我們要在voidsetup()裏面設置baud rate,顯示數值屬於Arduino 與PC通信,所以Arduino 的Baud rate應與PC searial monitor軟體設置的相同才能顯示出正確的數值,否則將會顯示亂碼或是不顯示,在Arduino 軟體的監視窗口右下角有一個可以設置Baud rate的按鈕,這裏設置的Baud rate需要跟程序中void setup()裏面設置Baud rate相同,程序設置Baud rate的語句為Serial.begin();括號中為Baud rate的值。其次就是顯示數值的語句,Serial.print();或者Serial.println();都可以,不同的是後者顯示完數值後 new line自動換行,前者不是。
int potpin=0;//定義類比端口0
int ledpin=13;//定義數位端口13
int val=0;//將定義變數val,並賦予初值0
void setup()
{
pinMode(ledpin,OUTPUT); //定義數位端口為輸出
Serial.begin(9600); //設置Baud rate為9600
}
void loop()
{
digitalWrite(ledpin,HIGH); //ON dogital port 13 的LED
delay(50); //延時0.05 秒 50ms
digitalWrite(ledpin,LOW);//熄滅數字接口13 的LED
delay(50);//延時0.05 秒
val=analogRead(potpin);//讀取類比端口0 的值,並將其傳給val
Serial.println(val); //傳回PC端顯示出val 的值
}
參考程序借用了Arduino 數位13端 口內定的LED,每讀一次值LED燈就會閃爍一下。
下面就是讀出的類比值。
本實驗到這裏就完成了,當您旋轉電位計旋鈕的時候就可以看到螢幕上數值的變化了,讀取類比值這個方法將一直陪伴我們,類比值讀取是我們很常用的功能,因為很多感測器都是類比值輸出,我們讀出類比值後再進行相應的算數處理,就可以應用到我們需要實現的功能中。
沒有留言:
張貼留言