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 之間滑順變化!

 

🚀 進階延伸思考:如何用可變電阻直接改變 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 亮度

📚 延伸閱讀與相關課程

 

 

相關文章