mBlock & Arduino(27)Me 音量感應器實作特效燈
mBlock & Arduino(26)Me 動作、光線感應器實作小夜燈 << 前情 Makeblock 有提供 Me 音量感應器,可以感測聲音強度,很簡單的一個電路模組: 音量感應器,一般常見的應用是聲控開關,像是拍兩下手來打開電視開關之類,如果有個 LED 陣列,也可以依強度來製作音量顯示器,這邊的話,就來作個特效燈,當音量高於設定值時,會 讓 Me RGB LED 模組隨機顯示顏色,然後亮度逐漸衰退,你可以在 LED 模組上放上個半透明壓克力,或者是將它放到鼓裏頭,就可以隨著音聲播放或打擊,展現些視覺效果。 實作特效燈特效燈的實作會用到七段顯示器、RGB LED 模組與音量感應器,RGB LED 模組接至連接埠 3,七段顯示器模組接至連接埠 4,音量感應器接至連接埠 6,七段顯示器是用來顯示目前音量大小。 我首先處理的是亮度逐漸衰退的 LED 特效,問題在於亮度逐漸衰退的過程中,如果又收到的音量又高於設定值,LED 必須再度根據新的 RGB 隨機值亮起,在 mBlock 中,可以使用廣播事件,這會讓程式比較容易處理一些: 每次收到指定的廣播訊息時,就會進入迴圈,衰退的速度我選擇每次亮度減 5,迴圈會持續至 RGB 值都為 0為止。 RGB 值的產生則是在另一個迴圈中進行: 這樣程式就完成了,你可以試著執行程式,然後試著製造些聲音,來看看 LED 的效果如何! 修改、上傳至 Arduino如果想要能將程式上傳至 Arduino,由於廣播事件是 mBlock 中提供的功能,因此執行「Arduino mode」時,它會告訴你不支援廣播元件: 之前的文章使用到廣播元件時,其實也都無法直接轉換為可上傳至 Arduino 的程式,當廣播訊息到來時,其底下指定的流程就會被執行,這就好比你可以指定多個同時執行的流程,然而Arduino 本身無法同時執行多個指定的程式流程,你必須適當地根據條件來自行切換流程。 就我們這個簡單的程式來說,可以如下修改:
因為 由於上傳至 Arduino 執行速度較快,實際上效果會比透過 mBlock 執行來得好! |