2013年4月5日 星期五

Arduino : 類比數值讀取



   本個實驗我們就來學習類比I/O  端口(Port)的使用,Arduino 類比0類比5 共計6 類比port,這6 個port也可以算作為I/O Port功能用,除類比port功能以外,這6 個port可作為數位port使用,編號為數位14—數位19,簡單瞭解以後就來開始實驗。電位計是大家比較熟悉的典型的類比值輸出元件,本實驗就用它來完成。


本實驗我們將電位計的阻值轉化為類比值讀取出來,然後顯示到螢幕上,這也是我們以後完成自己所需的實驗功能所必須掌握的實例應用。

我們使用的是類比0 端口。程式也很簡單,一個analogRead();語句就可以讀出類比端口的值,Arduino 32810 位的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燈就會閃爍一下。
下面就是讀出的類比值。



本實驗到這裏就完成了,當您旋轉電位計旋鈕的時候就可以看到螢幕上數值的變化了,讀取類比值這個方法將一直陪伴我們,類比值讀取是我們很常用的功能,因為很多感測器都是類比值輸出,我們讀出類比值後再進行相應的算數處理,就可以應用到我們需要實現的功能中。


沒有留言:

張貼留言

2024_09 作業3 以Node-Red 為主

 2024_09 作業3  (以Node-Red 為主  Arduino 可能需要配合修改 ) Arduino 可能需要修改的部分 1)mqtt broker  2) 主題Topic (發行 接收) 3) WIFI ssid , password const char br...