ARDUINO_實驗4_ 類比訊號輸入在電腦上印出

目的


  今日實驗室要用探討為何實驗3電燈泡會改變,藉由電腦把電阻改變的數值顯示超級終端機上。



程式


int sensorPin = 0; // 宣告可變電阻輸入腳位為0
int ledPin = 2; // 宣告LED控制腳位為2
int sensorValue = 0; // 宣告sensorValue變數,初始為0




void setup() {
pinMode(ledPin, OUTPUT); //設定LED腳位為輸出
Serial.begin(9600);             //Serial.begin(baud)
                                             串列訊號初始化→鮑率設定 bit/sec

}


void loop() {
//讀取感測器的數值,儲存在sensorValue變數中
sensorValue = analogRead(sensorPin);

Serial.println(sensorValue);    //列印出至超級終端機上

//LED接腳輸出高電壓,LED亮
digitalWrite(ledPin, HIGH);

//以sensorValue的讀值為延遲時間
delay(sensorValue);

//LED接腳輸出低電壓,LED滅
digitalWrite(ledPin, LOW);

//以sensorValue的讀值為延遲時間
delay(sensorValue);
}







說明


  執行程式,並且轉動可變電阻的旋鈕,LED燈亮滅時間會有長短變化,這是受到可變電阻控制的影響。


  當可變電阻的旋鈕向右轉,LED燈亮滅間隔時間就會變長,因為類比接腳P0所接收到的電壓值增加,sensorValue值變大;相反的當可變電阻的旋鈕向左轉,LED燈亮滅間隔時間會縮短,因為類比接腳P0所接收到的電壓降低,sensorValue值變小。


  由Arduino提供的5V電壓,可透過可變電阻,改變輸入到類比接腳P0的電壓大小。
  
  由於Arduino本身具有10bit(2的”10”次方=1024)解析度的ADC轉換,也就是A(類比)轉D(數位),


  因此可以將0~5V的類比電壓值,轉換成0~1023的數位數值,方便程式作運算。


  如果類比接腳接收到電壓是0V,轉換成的數值是0;如果接收到電壓是5V,轉換成的數值是1023;如果接收到電壓是2.5V,轉換成的數值是511。
  
  程式中delay()的時間單位是毫秒,1000毫秒即1秒。


  類比腳位讀取訊號的範圍值是0~1023,換算成LED的亮滅延遲時間是在0~1.023秒間。


  Arduino的類比接腳接收到電壓值越高,從電壓轉換數位數值越高,也就代表的延遲時間越高,LED亮滅相隔時間越長,亮滅越慢。



成果

沒有留言: