Basic Tutorial for Arduino, 入門篇

【Arduino 入門教學】第 11 篇:類比訊號應用!用可變電阻(Potentiometer)控制 LED 亮度與 PWM 調光

flat lay photography of circuit board

實驗簡介:什麼是 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 程式學習套件組,一次滿足實作需求!

爆款推薦:程式學習套件組

購買網址:shop.mirotek.com.tw

電路接線說明(Pinout & Wiring)

請參考以下步驟進行麵包板接線:

  1. 可變電阻(Potentiometer):

    • 左側接腳:連接至 Arduino 的 5V 電源。

    • 中間接腳(訊號腳):連接至 Arduino 的 A0 類比輸入接腳。

    • 右側接腳:連接至 Arduino 的 GND 接地端。

  2. 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)」中。

實驗成果與測試步驟

  1. 完成接線並將 Arduino 接上電腦 USB 埠。

  2. 開啟 Arduino IDE,點擊右上角 「序列埠監視器(Serial Monitor)」。

  3. 確認右下角鮑率設定為 9600 baud。

  4. 順時針或逆時針旋轉可變電阻旋鈕,觀察序列監視器上的數值是否在 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)是成為優秀創客與工程師的必經之路。透過序列監視器觀察數值來驗證硬體狀態,能幫助您在未來打造更大型的互動專題時,更快找出問題所在!

延伸閱讀與相關課程

 

 

相關文章