呼吸燈

最後更新日期:2022-03-24 10:07:24

使用LED燈,還有一著名的應用「呼吸燈」。早期的Android手機,大多以呼吸燈來呈現充電時的狀態,目前較少看到此情況,詳細原因可透過Google查詢,呼吸燈的實際顯示狀態,可以參考底下的影片。

# 實作步驟

  • 學習使用
  • 設計電路圖
  • 連接電路
  • 搭建積木程式 & 執行

# 學習使用

實現一個呼吸燈(暗 → 漸亮 → 亮 → 漸暗 → 暗,持續此循環)的應用。

在前面的章節,您已學會控制LED燈的亮、暗了,但要控制「漸亮」、「漸暗」該如何做到呢?
在LED燈的設定狀態積木中,只能設定「高電位」、「低電位」,即樹莓派的GPIO腳位,只能輸出高電壓(3.3V)及低電壓(0V),那麼要實現「漸亮」、「漸暗」,就要讓輸出電壓能介於 0V ~ 3.3V 之間,這在數位電路中,只能仰賴PWM(脈波寬度調變)技術了。

PWM

樹莓派輸出的高電位(壓)、低電位(壓)如下圖所示,無論時間經過多久,始終固定的輸出電位(壓)。

高電位(壓)、低電位(壓)

PWM(脈波寬度調變)則是指在一定的週期時間內,有高電位(壓)、低電位(壓),並將高電位(壓)稱作「脈波」,其佔有整個週期的比例,稱為「脈波週期寬度」,當此寬度越接近100%,則輸出電位(壓)就越接近3.3V;反之,越接近0V。而這個改變脈波寬度的技術,就稱為脈波寬度調變

50%脈波寬度、25%脈波寬度

# 設計電路圖

若對LED燈的連接方式還不熟悉,可以參考LED燈章節的說明。

LED燈連接電路圖

# 連接電路

實際線路如下圖,建議連接步驟如下,若您要移除電路時,請使用相反的順序進行即可。

  1. 於麵包板上連接相關元件
  2. 資料、控制腳位連接上樹莓派
  3. GND腳位連接上樹莓派
  4. VCC(5V or 3.3V)腳位連接上樹莓派

呼吸燈實際電路連接圖

# 搭建積木程式 & 執行

開啟積木程式畫面如下,若您已經下載代理程式,並且完成「rp_agent」設定,可以將首次使用須知下方的框框,勾選「不再顯示此訊息」,並按下「確定」按鈕。

PS. cwBlockly頁面請於樹莓派中執行。

積木程式首次使用須知

初始畫面如下。

積木程式初始畫面

控制PWM的積木位於「脈寬調變(PWM)」積木區。

脈寬調變(PWM)積木區

拖曳「PWM定義積木」至RPi預設積木中。

PWM定義積木

將腳位編號由預設的15,改成實際線路的「16」。

  • 頻率(單位:Hz):為週期時間的倒數。例:百分之一秒的時間,稱為100Hz。
  • 工作週期:為上述的脈波寬度。例:預設為0,表示輸出電位為0V。

修改實際腳位

實現「重複循環」功能的積木,在「迴圈」積木區中,選擇第二個(由上往下數),當條件成立時重複執行的積木。

迴圈積木

拖曳「PWM強度設定」積木,並放置於迴圈內。

拖曳PWM強度設定積木

放置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,謝謝。