在”如何用按鈕開關控控LED燈中實物接線“段落提到LED燈與Arduino連接時,因為5V會導致LED燈燒毀,所以必須在之間加上一個220歐姆值電阻,也可以選用330歐姆值,只是LED燈會較暗點!大家有沒有注意到這電阻值的增加會造成LED燈明暗有變化耶!但手動換電阻來得到自己要的明亮度,這樣子實在很麻煩,有沒有一種零件可以調整電阻值呢?
答案是有的,這零件稱為可變電阻或電位器,它像是一個旋鈕的類比控制元件,旋轉約270~300度之間,就可以調整電阻值由小至大,而使得被控制端元件,有不同的變化,如LED燈明暗或音響的聲音大小。
那我們話不多說,就開始本篇Arduino可變電阻教學的說明。
實驗準備材料
- 旋鈕式可變電阻 x 1顆
- LED燈 x 1顆
- 220Ω電阻 x 1顆
- 杜邦線 x 5條
設計邏輯想法
Arduino類比輸入(analogRead)的範圍值介於0~1023之間,而類比輸出(analogWrite)則介於0~255之間。為了調整數值範圍,我們可以將輸入值除以4,或者用map函數調整,使用旋鈕可變電阻,讓電阻值變化,讓LED燈能隨著明暗變化。
map函數說明:
調整結果=map(原始變數,起始值,結束值,起始值,結束值);
byte val = map(originValue, 0, 1023, 0, 255);
程式流程圖

程式設計
byte vrPin = A0; //設定可變電阻A0腳位變數為vrPin
byte ledPin = 11; //設定LED腳位11變數為ledPin
int originValue = 0; //類比輸出值
byte val = 0; //儲存轉換範圍值
void setup() {
// put your setup code here, to run once:
pinMode(ledPin, OUTPUT); //設定ledPin為輸出
pinMode(vrPin, INPUT); //設定vrPin為輸入
}
void loop() {
// put your main code here, to run repeatedly:
originValue = analogRead(vrPin); //將vrPink在類比讀取到的值付與給originValue
val = map(originValue, 0, 1023, 0, 255); //使用map函數將類比輸入值與輸出值做比率計算
analogWrite(ledPin, val); //將val的值以類比輸出給ledPin,使LED明暗變化
}
實物接線

實物執行影片
結論
在此篇我們運用了Arduino的(analog)類比輸出(Write)/輸入(Read)指令,並使用這map函數將讀取數值與輸出比率換算,取得此值來做為LED燈輸出功率大小,以觀察到這可變電阻控制LED燈明暗變化。
本篇參考了Arduino官網資料,連結如下:https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/
優質YouTube Paul McWhorter教學影片,連結分享如下:
https://youtu.be/7wKdxsvXAFo?si=je_JjSoGGXZ35Yfs
有主意,就動手!下篇見~
