目的
今日實驗室要要利用可變電阻控制Arduino版上 LED 燈的閃爍快慢。
介紹
利用可變電阻Potentiometer改變所產生的電壓變化,來調整類比電壓的輸入值。
可變電阻樣式具有三個端子,如下圖 。
圖接腳1和接腳3分別接地和電源(相反亦可),接腳2傳輸可變電阻造成的電壓變化。
當旋鈕順時鐘旋轉接腳1和接腳2的電阻值會升高,接腳2和接腳3的電阻值則降低。
常見的可變電阻分兩種特性:電阻成指數遞增,代號A;電阻成線性遞增,代號B。
使用材料
項次 | 圖片 | 材料名稱 | 數量 |
| 1 | Arduino載板 | 1 | |
| 2 | USB連接埠 | 1 | |
| 3 | LED燈 | 1 | |
| 4 | 可變電阻 | 1 | |
| 5 | 跳線 | 若干 | |
| 6 | 麵包版 | 1 | |
| 7 | 電阻 2k歐姆 (黑紅橙)和 220歐姆 (紅紅棕) | 2 |
接線方式:按鈕在Arduino的實際配線法,如圖
程式
int sensorPin = 0; // 宣告可變電阻輸入腳位為0
int ledPin = 2; // 宣告LED控制腳位為2
int sensorValue = 0; // 宣告sensorValue變數,初始為0
void setup() {
pinMode(ledPin, OUTPUT); //設定LED腳位為輸出
}
void loop() {
//讀取感測器的數值,儲存在sensorValue變數中
sensorValue = analogRead(sensorPin);
//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亮滅相隔時間越長,亮滅越慢。
結果


沒有留言:
張貼留言