今日實驗室要用探討為何實驗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亮滅相隔時間越長,亮滅越慢。
成果
沒有留言:
張貼留言