2014年1月15日 星期三

【S4A小專案】小小燈光師 (RGB LED燈)

一個嘗試把arduino與S4A導入國小資訊課程的探索紀錄






【實做影片】
首先,看一下「RGB LED燈---S4A程式小小燈光師」實際運作的情形



(在拍攝時,有燈光的反光,再加上底下的白紙,燈的顏色從影片比較看不出來)
運用此程式可以調整三原色的值,混和出不同顏色的燈光,這要如何做呢?請看下方說明

【使用硬體】arduino UNO r3(內已有S4A韌體) 、RGB LED(共陽極)
                       、小麵包板、麵包線

【使用軟體】S4A  (基本安裝設定請參考科藝實作坊文章)

【RGB LED原理】
RGB LED是一個可以發出紅色(Red)、綠色(Green)、藍色(Blue)的LED,並且可以依照紅綠藍各別不同的亮度,混合出各式各樣的LED燈光。以下是RGB LED的照片。



RGB LED有四個針腳,最長的是共同接腳,如果是購買共陽極的RGB LED,那共同接腳要接正極;如果是共陰極的RGB LED,則共同接腳要接負極。另外三隻針腳分別控制紅藍三色。本文的例子是用共陽極的RGB LED。並讓共同接腳接上arduino的3.3V(降底電壓),以省去原本紅藍三個針腳要串接的220歐姆電阻(簡化電路),讓本例更容易於國小資訊課程中實行。

另外還有一個問題是,要如何讓紅綠藍三色能有不同的亮度呢?那就要用到arduino的PWM針腳,PWM是一種模擬類比輸出的一種技術(技術細節可參考alex9ufo的說明),讓輸出的值有0~255的變化,在S4A(1.5韌體)的預設PWM針腳有三個(分別是5、6、9),剛好可以讓我們用S4A來控制RGB LED燈。

因為採用共陽極的RGB LED燈,所以紅綠藍接腳要低電位的時候才會有效。以紅色接腳為例,當接上arduino的PWM時,輸出255會不發光;而輸出0時紅光會最強。

再來就要實際接線了。

【arduino接線】
下圖為共陽極RGB LED燈的接腳在本例中連接的概念圖。



再來是與小麵包板以及arduino的接線示意圖,連接完畢後,硬體便可告一段落。





【S4A程式解析】 (程式檔案可由此下載)

控制RGB LED的核心積木如下圖



以紅色為例,紅色針腳接到arduino的針腳5,在值為0時為紅光最強,255時紅光會關閉。為了簡化電阻,降低電壓,所以採用了共陽極,但會讓燈的開關與平常的習慣不同,但可以在程式中做一些調整,如下圖。 用最大值來相減讓值相反,這樣程式中的變數「紅」、「綠」、「藍」就會跟平常習慣相同。



為了讓國小學生能用三原色來調出色光,程式中加入了以下的參考圖,此圖在本例中只做為調光的參考,並無互動功能。在教學中,可用此圖告訴學生,如果要調出黃色光,就要使用紅色光及綠色光。如果再進階的話,可告訴學生光的顏色和顏料的顏色的不同(前為光的直射,後為光的反射),以及二者混合調色的不同(前為加色混合,三色會混合成白光;後為減色混合,三色會混合成黑色)。


下圖為提供的燈泡圖,讓學生用來調光,調好後,只要在造型中把顏色填入燈泡即可配合程式使用。




以下為角色arduino的主迴圈(與arduino連結的角色),在主迴圈中,不斷的把紅綠藍的值設定到核心積木來調整燈光。所以紅綠藍的值一改變,RGB LED的燈光也會馬上改變(以程式語言來說,是會讓電腦過於忙碌,但寫法簡單清楚,方便國小學生實做)。





為了調光方便,若能於使用者介面上直接調整變數值,會讓程式更為直覺 。剛好Scratch的變數有滑桿功能,可以直接讓我們直覺地改變紅綠藍變數。請參考下圖。



除了用變數調光外,也可將調好燈光的程式置於燈泡角色內,以達到直覺互動的效果,只要在螢幕上以滑鼠按下燈泡,就可在RGB LED上發出同樣(或相近)的光。


【教學規畫】

    1、介紹RGB LED燈及其特性。
    2、先接共同接腳以及一個顏色針腳,用核心積木先做測試。
    3、把三個顏色都接上後,開始建構調光程式。
    4、製做燈泡程式,包括調光,程式及填好燈泡顏色。
    5、若有時間,可教光及顏料的顏色的不同。
    6、本專案預計為1至2節。


【延伸閱讀】

光的三原色及顏料的三原色
光色彩的疊加 與 塗料顏色混和
Arduino練習:RGB LED(葉難)



1 則留言: