實驗目的
使用可變電阻 (potentiometer) 控制 LED 的燈光亮度,達到調光的目的。材料
- 麵包板 x 1
- Arduino 主板 x 1
- LED x 1
- 220 ohm 電阻 x 1
- 可變電阻 x 1
- 單心線 x N
接線
- LED 接到 pin9 和 GND,長腳(陽極)串接一顆 220 ohm 電阻到 pin9,短腳(陰極)直接接到 GND
- 可變電阻中間腳位接到類比輸入(Analog Input) pin3,剩下的兩支腳位,一支接到 5V,另外一支接到 GND
電路圖
程式碼
說明:
- L01: 宣告可變電阻所用的類比輸入腳位
- L02: 宣告 LED 燈號腳位
- L05: 設定 SerialPort 的傳輸速率,鮑率為 9600 bps (bit per second)
- L09: 讀取可變電阻讀值並且放到 sensorValue 變數裏
- L10: 使用 Serial.println(sensorValue, DEC) 把電阻值列印到 SerialPort。DEC 代表以十進位顯示數字
- L12: analogRead() 讀進來的是一個 10 位元的數值,值域為 0 到 1023,由於 analogWrite() 的參數只能接受 0 到 255 的數值,所以得將 sensorValue 除以 4,讓 sensorValue 的數值從 0-1023 等比例縮小到 0-255 的範圍。
範例照片/影片
編譯好程式,上傳到 Arduino 後,按下 Serial Monitor 這個按鈕,就會看到 COM Port 不斷收到一串範圍介於 0 到 1023 的數值,這些數值與可變電阻是相關聯的。如果旋轉可變電阻,對應的數值也會跟著改變,而且 LED 燈號的亮度也會跟著改變。Youtube 上正好有段示範利用可變電阻控制 LED 燈光亮度的影片,我們來看看他的示範:
1 意見:
您好 我把壓力感測器取代可變電阻,沒有施加力量的情況壓力感測器電阻非常大,LED沒有亮可是我發現 Serial Monitor裡的數值卻一直保持在0,不是應該保持在最大值1023嗎?請問一下為什麼會這樣呢
(我使用的是相同的程式碼)
張貼留言