💡 實驗簡介:什麼是 Arduino 類比訊號(Analog Signal)?
在數位邏輯中,訊號只有「高電位(HIGH / 5V)」與「低電位(LOW / 0V)」兩種狀態;但在現實世界中,許多物理量(如溫度、光線強弱、轉速)都是連續變化的類比訊號(Analog Signal)。
在 Arduino Uno R3 板子上,設有 6 個類比輸入接腳(A0 ~ A5)。這些接腳內建 10 位元類比數位轉換器(ADC),能將輸入的 0V~5V 電壓轉換為 0 到 1023 的數位數值。
本篇教學將使用可變電阻器(Variable Resistor / Potentiometer,簡稱 VR 或電位器)進行實作:旋轉可變電阻來改變輸入電壓,並透過 Serial Monitor 序列埠監視器即時觀察類比數值變化,同時驅動 LED 進行閃爍與調光。
🛠️ 準備材料與實作清單
進行本實驗前,請先準備以下硬體元件:
Arduino Uno R3 開發板 × 1
USB 數據傳輸線 × 1
直插式 LED 燈 × 1
220Ω 限流電阻 × 1
旋鈕可變電阻(10kΩ Potentiometer) × 1
實驗麵包板 × 1
麵包板跳線(公對公) × 若干
🛒 新手必備推薦:
想一次購齊所有感測器與電子零件?歡迎選購我們的 Arduino 程式學習套件組,一次滿足實作需求!
👍爆款推薦:程式學習套件組
🔌 電路接線說明(Pinout & Wiring)
請參考以下步驟進行麵包板接線:
可變電阻(Potentiometer):
左側接腳:連接至 Arduino 的 5V 電源。
中間接腳(訊號腳):連接至 Arduino 的 A0 類比輸入接腳。
右側接腳:連接至 Arduino 的 GND 接地端。
LED 燈與限流電阻:
LED 正極(長腳):接至 Pin 11(支援 PWM 輸出)。
LED 負極(短腳):串聯 220Ω 電阻 後接回 GND。
接線說明:
💻 Arduino 程式碼範例(Code Example)
請將下方程式碼複製並燒錄至您的 Arduino 開發板中:
/*
* Arduino 類比訊號讀取與 LED 閃爍實驗
* 說明:讀取 A0 可變電阻數值,並輸出至序列監視器
*/
// 定義接腳與變數
const int potPin = A0; // 可變電阻訊號腳位 (Analog 0)
const int ledPin = 11; // LED 控制腳位 (PWM Digital 11)
int val = 0; // 儲存類比讀取值的變數
void setup() {
pinMode(ledPin, OUTPUT); // 設定 11 號腳位為輸出模式
Serial.begin(9600); // 初始化序列埠通訊,鮑率設為 9600 bps
}
void loop() {
digitalWrite(ledPin, HIGH); // 點亮 LED
delay(100); // 延遲 100 毫秒
val = analogRead(potPin); // 讀取 A0 腳位的類比數值 (範圍 0 ~ 1023)
Serial.println(val); // 將讀取值印出至序列埠監視器
digitalWrite(ledPin, LOW); // 熄滅 LED
delay(100); // 延遲 100 毫秒
}
🔍 程式重點解析(Code Explanation)
pinMode(ledPin, OUTPUT);:將數位腳位 11 設定為輸出模式,用來控制 LED 的開關。Serial.begin(9600);:開啟序列埠通訊,設定傳輸速率為 9600 baud,讓電腦能接收 Arduino 傳回的資料。analogRead(potPin);:讀取類比輸入腳位(A0)的電壓值,傳回一個 0 至 1023 之間的整數(0V 代表 0,5V 代表 1023)。Serial.println(val);:將讀取到的類比數值即時顯示於 Arduino IDE 的「序列埠監視器(Serial Monitor)」中。
🎯 實驗成果與測試步驟
完成接線並將 Arduino 接上電腦 USB 埠。
開啟 Arduino IDE,點擊右上角 「序列埠監視器(Serial Monitor)」。
確認右下角鮑率設定為 9600 baud。
順時針或逆時針旋轉可變電阻旋鈕,觀察序列監視器上的數值是否在 0 ~ 1023 之間滑順變化!
🚀 進階延伸思考:如何用可變電阻直接改變 LED 亮度?
在基礎程式中,我們透過 analogRead() 取得了 0~1023 的數值。若想做到「旋轉電阻直接調節 LED 亮度(PWM 調光)」,可以使用 map() 函式將 10 位元數值(0~1023)轉換為 8 位元 PWM 訊號(0~255),並使用 analogWrite()輸出:
int pwmValue = map(val, 0, 1023, 0, 255);
analogWrite(ledPin, pwmValue); // 控制 LED 亮度
📚 延伸閱讀與相關課程
💡 電阻基礎補充:



