實驗簡介:什麼是 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 之間滑順變化!

常見問題與除錯指南(FAQ)
在動手實作可變電阻與序列埠數值讀取的過程中,新手常會遇到一些小狀況。如果您在測試時發現數值或燈號不如預期,可以對照以下方向自行排查與思考:
-
Q1:為什麼打開「序列埠監視器」後,畫面上出現一堆亂碼或完全沒有數字?
-
思考方向:請檢查 Arduino IDE 右下角的「鮑率(Baud Rate)」設定是否為
9600。如果程式碼中使用Serial.begin(9600);,但介面選到不同的速率(例如 115200),就會導致傳輸不同步而產生亂碼。
-
-
Q2:旋轉可變電阻時,為什麼序列埠的數值卡在 0 或 1023 都不會變?
-
思考方向:這通常是硬體接線的問題。請仔細檢查可變電阻的左右兩端是否有確實接到 5V 與 GND?如果接反或接錯腳位(例如把訊號腳接到 5V),就會失去分壓效果。建議使用三用電表或重新確認麵包板插孔。
-
-
Q3:為什麼 LED 燈一直恆亮或恆暗,無法隨著程式碼正常閃爍?
-
思考方向:請確認 LED 的正負極方向是否正確,以及限流電阻(220Ω)是否有確實串聯。此外,程式碼中的
ledPin宣告是否與您實際插在開發板上的數位腳位相符?
-
結語小建議:動手排查錯誤(Debug)是成為優秀創客與工程師的必經之路。透過序列監視器觀察數值來驗證硬體狀態,能幫助您在未來打造更大型的互動專題時,更快找出問題所在!
延伸閱讀與相關課程
-
電阻基礎補充: