前言

Arduino 的數位輸出腳位除了一般數位輸出之外,部分腳位還支援 PWM 輸出,可以用來模擬類比輸出。在這篇文章中,我們將延續前一篇文章的範例,利用 Arduino 的 PWM 功能來控制外接 LED 燈泡的亮度,而非僅僅是開與關而已。

開發環境建置

如果你還沒有建置 WFduino + Scratch 3 的開發環境,請參考這篇文章

PWM

有關 PWM 的說明,可參考這篇文章的說明。

在 Scratch 3 中使用 PWM 模擬類比輸出的積木如下。

scratch 3 類比輸出積木

scratch 3 類比輸出積木

不需要指定工作週期,也沒有頻率可以設定,唯一一個參數為 0~255 的數字。0 表示輸出低電位 (0V),而 255 則表示輸出為高電位 (+5V)。至於如果是其他數字,輸出電位依比例計算即可。舉例來說,如果參數為 50 ,其輸出電位則為
\begin{align}
輸出電位 & = \frac{50}{255} \times 5\\
& \approx 0.98V。
\end{align}

線路圖

Arduino Uno 與 LED 燈泡

Arduino Uno 與 LED 燈泡

  1. 在 WFduino + Scratch 3 + Arduino 控制 LED 燈泡 一文中所使用的線路圖完全一樣,因為腳位 3 同時支援一般數位輸出與 PWM 輸出,其中 PWM 輸出可用來模擬類比訊號的輸出。
  2. Arduino Uno R3 除了腳位 3 之外,腳位 5、6、9、10、11 也都支援 PWM 輸出。如果記不起來也沒關係,Arduino 已經貼心地在這些腳位編號前加上符號 ~。
  3. 如多數常見的數位控制板,Arduino 系列也幾乎都是使用 PWM 訊號來模擬類比訊號的輸出。比較特別的是 Arduino DUE 提供兩個經過數位類比轉換的真實類比訊號輸出腳位,而此兩腳位名稱為 DAC0 與 DAC1。

程式範例

DiFi 與 LED 燈泡 (Scratch 3 類比輸出)

DiFi 與 LED 燈泡 (Scratch 3 類比輸出)

  1. 在這個範例中,我們先定義變數 “亮度”,用來當作類比輸出積木的參數。
  2. 程式開始時先將 “亮度” 歸 0,之後程式則不斷地將 “亮度” 數字逐漸增加到 100,並在到達 100 後再逐漸減少至 0。
  3. “亮度” 數字越大,LED 燈泡就越亮。前面提到,類比輸出的最大數值為 255,但是我們在這個範例中 “亮度” 最大僅用到 100 而已。原因在於當數字大到一個程度後,LED 燈泡實際亮度的差異已經很難用眼睛加以分別。
  4. 當我們執行程式後,就可以看到 LED 的亮度不斷地發生變化,如影片中所示:
Facebook 留言
Print Friendly, PDF & Email
Summary
WFduino + Scratch 3 + Arduino 利用 PWM 控制 LED 燈泡
Article Name
WFduino + Scratch 3 + Arduino 利用 PWM 控制 LED 燈泡
Description
Arduino 的數位輸出腳位除了一般數位輸出之外,部分腳位還支援 PWM 輸出,可以用來模擬類比輸出。在這篇文章中,我們將延續前一篇文章的範例,利用 Arduino 的 PWM 功能來控制外接 LED 燈泡的亮度,而非僅僅是開與關而已。
Author
Publisher Name
Everlearn Studio
Publisher Logo