第98-9課:用Arduino嘅LED電壓電平表或者用電位器嘅走馬燈
呢個項目會教你點樣整一個用五粒 LED 做條狀圖顯示嘅電壓電平錶,完全由一塊 Arduino 同一個電位器驅動。當你扭動旋鈕,Arduino 會讀取類比腳上變化緊嘅電壓,並且每伏特著一粒 LED,所以嗰排燈會隨住旋鈕 literally「行」上行落。呢個係理解類比輸入最清楚嘅方法之一,因為你可以實時睇到類比轉數位嘅過程變成一個實體光條。
呢度嘅實際價值遠遠唔止一場燈光秀。一旦你明白點樣將量度到嘅電壓映射到一組輸出,你就可以將完全相同嘅模式重用喺真實嘅儀器上面。例如,你可以整:
- 一個電池電量指示器,用一排 LED 顯示 12 V 或者 USB 尿袋嘅剩餘容量。
- 一個水箱液位計,用一個浮波感應器輸出同深度成正比嘅電壓。
- 一個用 LM35 之類類比溫度感應器嘅溫度條狀顯示器。
- 一個用喺收音機接收器或者擴音機嘅信號強度或者音頻電平錶。
- 一個簡單嘅感應器讀數,適用於任何 0–5 V 類比換能器(壓力、光、位置)。
- 一個工作檯測試用嘅電壓探針,唔使睇萬用錶螢幕都可以檢查電源軌。
因為啲門檻值係以板電壓嘅百分比計算,同一份程式碼喺 Uno 同 Mega 呢類 5 V 板,以及 3.3 V 板上面都行得通,只需要改一行。
硬件同組件
零件清單刻意做到最精簡,而所有嘢都會喺影片嘅早期部分解釋(影片 01:54 位置)。你需要:
- 一塊 Arduino 板(Uno、Nano 或者 Mega)。
- 五粒 LED,最好係同一隻色,噉條狀圖先會讀得清楚,不過混合顏色都冇問題。
- 五粒限流電阻。教學用嘅係 1 kΩ 電阻,但係大概 300 Ω 到 1 kΩ 之間嘅任何值都行;數值越高,LED 就越暗(影片 05:33 位置)。
- 一個電位器。旋鈕式同滑動式兩種都有示範(影片 02:19 位置)。
- 一塊麵包板同跳線。
關於 LED 本身嘅快速提示,因為呢點對接線好重要:LED 係一粒二極管,所以佢只會單向導電。塑膠外殼嘅平邊,同埋短啲嗰隻腳,係陰極(負極)。長啲嗰隻腳係陽極(正極)。教學會詳細講解呢個符號同實物形狀(影片 02:39 位置)。
電阻值唔係隨便揀嘅。一粒 LED 大概會降 2 V,而 3 mm 同 5 mm 嘅細粒型號會食大約 10 mA。喺 5 V 供電之下,剩低嘅 3 V 必須降喺電阻上面,所以歐姆定律得出 R = 3 V / 0.01 A = 300 Ω。呢個係最大亮度嘅數值;用 1 kΩ 係一個安全、稍微暗啲嘅選擇(影片 04:41 位置)。
接線指南
接線嘅 LED 部分同之前嘅走馬燈項目一模一樣:每粒 LED 嘅陽極連去自己嘅數位腳,而每粒陰極就經過一粒電阻去共通接地軌。喺教學入面,啲 LED 係接去腳 7、6、5、4 同 3(影片 43:04 位置)。
電位器係唯一嘅新零件。佢兩隻外腳去兩條電源軌 — 一隻外腳去地,另一隻去 5 V(如果你量度緊 3.3 V 系統就去 3.3 V)。中間嗰隻腳,叫做滑臂,係輸出,必須連去類比腳 A0(影片 43:30 位置)。滑臂就係產生可變電壓嘅嘢:當你扭動旋鈕,滑臂會沿住一條電阻軌滑動,佢呈現嘅電壓就會喺兩條軌之間平滑咁變化。
一個重要細節:如果你喺電路運行緊嘅時候拆走電位器,類比腳就會浮空,啲 LED 就會隨機閃爍。呢個行為喺影片入面有示範(影片 48:52 位置),亦都好好提醒你,類比輸入永遠都需要一個定義好嘅電壓源。
程式碼解釋
份程式碼好短,大部分都好直接,所以呢一節只會集中講你可能想改嘅部分。所有呢啲設定都喺 sketch 嘅頂部。
腳位定義。 呢啲話俾 Arduino 知 LED 同電位器係連去邊啲腳。如果你嘅 LED 接線唔同,就改呢啲數字去配合 — 順序好重要,因為 LED1 係最低門檻,LED5 係最高。
const int potPin = A0;//define a pin to connect potentiometer
const int LED1 = 7;
const int LED2 = 6;
const int LED3 = 5;
const int LED4 = 4;
const int LED5 = 3;開發板電壓。 呢個係最緊要啱嘅數值。佢係所有門檻值計算嘅參考基準。Uno 或者 Mega 就設做 5.0,3.3V Nano 或者類似嘅板就設做 3.3。如果你設錯咗,每一粒 LED 都會喺錯誤嘅電壓切換(影片 44:19)。
float boardVoltage= 5.0;//for UNO and MEGA 5.0V for Nano either 5V or 3.3V
序列埠電壓顯示。 將呢個設做 true 就會以 9600 鮑率將量度到嘅電壓印去序列監控器,喺校準嗰陣非常有用。搞掂晒之後設做 false 就可以收埋啲輸出。
boolean showVoltage = true;//true or false to read voltage in serial monitor
轉換係點運作。 Arduino 嘅類比數位轉換器會回傳 0 到 1023 嘅數字,因為佢係 10 位元轉換器(210 = 1024 級)。程式碼會用開發板電壓做參考,將嗰個原始數字縮放成真實電壓。如果你第日轉去用 Due 呢類 12 位元嘅板,就要記住呢行,到時你要除 4095 而唔係 1023。
int sensorValue = analogRead(A0);
float voltage = sensorValue * (boardVoltage / 1023.0);
門檻邏輯。 唔係硬編碼電壓,而係將每一步表達成開發板電壓嘅百分比。95% 或以上,五粒 LED 全着;高過 80% 就淨係着四粒;如此類推落到 20%,就淨係着一粒 LED。呢個百分比做法就係令呢個 sketch 可以喺 5V 同 3.3V 板之間通用,唔使改寫啲比較嘅原因。
if (voltage >= boardVoltage*0.95)
{
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, HIGH);
}
因為程式碼用咗 else if,每次行迴圈都淨係會行一個分支,所以任何時候都淨係會着正確數量嘅 LED。每次迴圈尾嗰 50 毫秒延遲就係防止顯示閃爍。
即場專案同示範
上載咗 sketch 之後,以 9600 鮑率打開序列監控器,慢慢扭個旋鈕。印出嚟嘅電壓同 LED 光棒會好貼咁一齊行:大約 1V 嗰陣着一粒 LED,2V 嗰陣着兩粒,如此類推去到大概 4.8V 就五粒全着(影片 47:37)。讀數同預期值相差只有幾個百分之一伏特,對於 10 位元轉換器嚟講已經非常好。
如果啲級數睇落有啲唔平均,通常係電阻嘅問題而唔係程式碼。教學提到標準碳膜電阻有 10% 誤差,而藍色金屬膜嗰啲通常係 1%,級數會明顯更緊密、更準確(影片 48:18)。
你亦都可以將旋轉電位器換做滑動電位器,得到同樣嘅行為但係線性嘅手感,如果你打算將個錶裝喺面板度,呢個係一個唔錯嘅選擇(影片 49:07)。
如果你想用手動而唔係用旋鈕去移動啲燈,可以睇 Lesson 98-8: Walking Light with Push Button and LEDs with Arduino。而如果你淨係想啲 LED 自己按計時器行,就睇 Lesson 98-7: Walking Light Using Arduino and 5 LEDs。
呢條片嘅相關專案
- Lesson 98-1: How to Turn On and Off an LED with Arduino
- Lesson 98-2: How to Turn On and Off an LED Using a Push Button with Arduino
- Lesson 98-3: How to Turn On/Off a Toggle LED Using a Push Button with Arduino
- Lesson 98-4: Fading an LED Light Using Arduino: Brightness Control
- Lesson 98-5: Fade Light When a Button Is Pressed Using Arduino
- Lesson 98-6: Seesaw LED Game with Arduino
- Lesson 98-7: Walking Light Using Arduino and 5 LEDs
- Lesson 98-8: Walking Light with Push Button and LEDs with Arduino
- Lesson 98-10: Arduino Traffic Light
章節
- [00:00] 10 個 LED 專案概覽
- [02:29] LED 基礎、符號同電阻計算
- [42:25] LED 電壓電平錶介紹
- [43:04] 接駁 LED 同電位器
- [43:54] 解釋電壓光棒程式碼
- [44:19] 設定開發板電壓參考
- [46:00] 門檻邏輯同百分比級數
- [47:14] 示範:用 LED 光棒讀取電壓
- [48:18] 電阻誤差同準確度
- [49:07] 使用滑動電位器
This code has not been parsed yet. Please return to the admin panel to parse it.
你可能需要嘅嘢
-
亞馬遜SunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
亞馬遜
-
亞馬遜
資源與參考資料
-
文件记录Documentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
文件📁
Arduino 函式庫 (zip)
-
SunFounder 3合1智能車學習套件原始碼
3in1-kit-main-v2.zip12.80 MB
用户手册
-
SunFounder 3合1 Arduino 智能車組裝手冊呢份文件逐步展示 SunFounder 3合1 Arduino 智能車嘅組裝過程
SunFounder_car_assembly_manual.pdf1.20 MB