呼吸燈
使用LED燈,還有一著名的應用「呼吸燈」。早期的Android手機,大多以呼吸燈來呈現充電時的狀態,目前較少看到此情況,詳細原因可透過Google查詢,呼吸燈的實際顯示狀態,可以參考底下的影片。
# 實作步驟
- 學習使用
- 設計電路圖
- 連接電路
- 搭建積木程式 & 執行
# 學習使用
實現一個呼吸燈(暗 → 漸亮 → 亮 → 漸暗 → 暗,持續此循環)的應用。
在前面的章節,您已學會控制LED燈的亮、暗了,但要控制「漸亮」、「漸暗」該如何做到呢?
在LED燈的設定狀態積木中,只能設定「高電位」、「低電位」,即樹莓派的GPIO腳位,只能輸出高電壓(3.3V)及低電壓(0V),那麼要實現「漸亮」、「漸暗」,就要讓輸出電壓能介於 0V ~ 3.3V 之間,這在數位電路中,只能仰賴PWM(脈波寬度調變)技術了。
PWM
樹莓派輸出的高電位(壓)、低電位(壓)如下圖所示,無論時間經過多久,始終固定的輸出電位(壓)。
PWM(脈波寬度調變)則是指在一定的週期時間內,有高電位(壓)、低電位(壓),並將高電位(壓)稱作「脈波」,其佔有整個週期的比例,稱為「脈波週期寬度」,當此寬度越接近100%,則輸出電位(壓)就越接近3.3V;反之,越接近0V。而這個改變脈波寬度的技術,就稱為脈波寬度調變
# 設計電路圖
若對LED燈的連接方式還不熟悉,可以參考LED燈章節的說明。
# 連接電路
實際線路如下圖,建議連接步驟如下,若您要移除電路時,請使用相反的順序進行即可。
- 於麵包板上連接相關元件
- 資料、控制腳位連接上樹莓派
- GND腳位連接上樹莓派
- VCC(5V or 3.3V)腳位連接上樹莓派
# 搭建積木程式 & 執行
開啟積木程式畫面如下,若您已經下載代理程式,並且完成「rp_agent」設定,可以將首次使用須知下方的框框,勾選「不再顯示此訊息」,並按下「確定」按鈕。
PS. cwBlockly頁面請於樹莓派中執行。
初始畫面如下。
控制PWM的積木位於「脈寬調變(PWM)」積木區。
拖曳「PWM定義積木」至RPi預設積木中。
將腳位編號由預設的15,改成實際線路的「16」。
- 頻率(單位:Hz):為週期時間的倒數。例:百分之一秒的時間,稱為100Hz。
- 工作週期:為上述的脈波寬度。例:預設為0,表示輸出電位為0V。
實現「重複循環」功能的積木,在「迴圈」積木區中,選擇第二個(由上往下數),當條件成立時重複執行的積木。
拖曳「PWM強度設定」積木,並放置於迴圈內。
由「延遲」積木區,拖曳延遲積木,並放置於PWM強度設定積木之後,並將秒數改為0.25。
重複放置「PWM強度設定」與「延遲」積木的動作,完成如下圖的設計。
間隔0.25秒,將強度增強或減弱 25,實現LED燈狀態由 暗 → 漸亮 → 亮 → 漸暗 → 暗 的呼吸燈效果。
下載本範例積木程式 LED_breathing_light_01.rpb。
上方的設計有兩個缺點:
- 調整延遲時間,必須逐一修改,很不方便。
- 當呼吸燈的層次,要分得更細緻時,需要拖曳、新增的積木更多,不易設計。
為解決上述問題,其中一種方法是使用兩個迴圈(重複計數),一個由下往上數(0 ~ 99),另一個由上往下數(100 ~ 1)。
參考完整設計圖如下:
下載本範例積木程式 LED_breathing_light_02.rpb。
若您對基礎電子套件有興趣,可至蝦皮賣場購買,若是學校團體亦可來信訂購,謝謝。
若對本篇教學文章有任何建議或問題,歡迎您來信:chipwaygo@gmail.com,謝謝。