前言

雖然我們一開始的兩篇文章都是介紹 DiFi 控制外接的 LED 燈泡,但是使用 DiFi 實驗板的好處之一就是已經內建不少元件可以直接使用。在接下來的幾篇文章中,我們就使用 Scratch 3 來與這些內建元件一一互動,而首先登場的就是全彩 RGB LED 燈泡。

內建元件與 GPIO

在實際介紹全彩 RGB LED 燈泡之前,我們先來看一下如何使用 DiFi 實驗板的內建元件。之前我們在使用其它擴展板或實驗板,往往每個內建元件的腳位都是固定的,而且只要來電就可以直接使用。不過 DiFi 的設計有點不同,內建元件的接腳並沒有直接接到 GPIO 腳位。這樣做有一個好處,就是不需要使用的元件就不會占用 GPIO,而可以把空下來的 GPIO 作為其他用途。

DiFi 把內建元件的接腳與 GPIO 做在同一個位置,上下並排,實際位置請參考下圖。下排為內建元件的接腳,而上排則為 GPIO 腳位以及其編號。不過板子上列印的是 WF8266R.js 所使用的編號,與 WFduino 的編號方式有所不同,所以需要做一個對應,而對應方式則寫在右上方的白色貼紙。

DiFi GPIO

DiFi GPIO

我們把這些資訊重新繪製,可以得到下圖:

DiFi v5.1 內建元件腳位與 GPIO 編號

DiFi v5.1 內建元件腳位與 GPIO 編號

那麼我們該如何使用內建的元件呢?以使用內建的蜂鳴器來作為例子,蜂鳴器的接腳為 BEEP,我們可以選擇使用跳線帽或杜邦線來連結 GPIO。如果使用跳線帽,連接的 GPIO 就是配對並排的 IO15。但是因為我們的範例是在 WFduino 的環境,所以必須使用編號 8 的腳位來控制蜂鳴器。如果使用杜邦線來連結 GPIO,那就可以自由選擇要使用哪個 GPIO (除了 A0 之外)。不過杜邦線較占空間,而且改使用其它 GPIO 通常也沒有額外的好處,所以後續的範例都是使用跳線帽直接連結配對的 GPIO 腳位。

此外,最下方標示為 IR_E 與 IR_R 那對接腳算是比較特別的設計,分別用來連結內建的紅外線發送 (IR_E) 與接收 (IR_R) 元件,並不是用來當作 GPIO。所以使用紅外線發送或接收元件時無法使用跳線帽,而必須透過杜邦線連結到合適的 GPIO。

全彩 RGB LED 燈泡

有關 RGB LED 燈泡的介紹,可先參考這篇文章

DiFi 內建的 RGB LED 燈泡屬於共陰極的形式,也就是三個控制接腳 (LED1~LED3) 為高電位時,該腳位對應的顏色就會發亮。如果使用 PWM 模擬類比輸出,則參數數字越大表示該腳位對應的顏色就會越亮。

當我們使用跳線帽直接連接 GPIO 時,對應腳位的 WFduino 編號依序是 7、6、5。不過需要注意的是 LED1~LED3 並不是 R、G、B 的順序,而是 G、R、B。整理如下:

元件名稱GPIO 編號WFduino 編號RGB LED 顏色
LED1IO137G
LED2IO126R
LED3IO145B

開發環境建置

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

線路圖

因為是內建元件,所以我們只要用跳線帽將元件接腳直接連接 GPIO 即可,實際接線圖如下:

DiFi V5.1 RGB LED 跳線

DiFi V5.1 RGB LED 跳線

如果沒有跳線帽,使用杜邦線也是可以的,但是程式也要記得修改為實際連接的接腳編號才行。

程式範例

DiFi 與全彩 LED 燈泡 (Scratch 3 範例舞台)

DiFi 與全彩 LED 燈泡 (Scratch 3 範例舞台)

首先我們定義三個變數 Red、Green 與 Blue,並在舞台上設定為拉桿的形式,方便我們在程式執行時直接改變其數值。

DiFi 與全彩 LED 燈泡 (Scratch 3 範例)

DiFi 與全彩 LED 燈泡 (Scratch 3 範例)

  1. 程式開始執行時,我們先把 Red、Green、Blue 三個變數歸 0。
  2. 程式不停地利用類比輸出的積木改變三個控制接腳的電位。
  3. 因為使用拉桿方式的數字範圍為 0~100,所以程式需將讀到數字重新計算,以符合參數所需的 0~255。也就是將讀到的數字除以 100 再乘以 255。
  4. 如之前的說明,腳位 7 對應到綠色、腳位 6 對應到紅色、而腳位 5 則對應到藍色。
  5. 每次設定三個控制接腳的電位後等待 0.01 秒。如果沒有進行等待就馬上接著執行下一次迴圈,程式將很容易卡住而無法正確改變全彩 LED 燈泡的顏色。
  6. 當我們執行程式後,就可以利用調整拉桿的方式來改變 Red、Green、Blue 的數字,進而改變全彩 RGB 燈泡所呈現的顏色,如影片中所示:
  7. 可以嘗試各種顏色的組合,看看組合出來會變成哪種顏色。
Facebook 留言
Print Friendly, PDF & Email
Summary
WFduino + Scratch 3 + DiFi 利用 PWM 控制 RGB LED 燈泡
Article Name
WFduino + Scratch 3 + DiFi 利用 PWM 控制 RGB LED 燈泡
Description
在這篇文章中,我們將介紹如何利用 Scratch 3 來控制 DiFi 實驗板上的全彩 RGB LED 燈泡。
Author
Publisher Name
Everlearn Studio
Publisher Logo