小小云提示:教程作者caterpillar是來自臺灣的programmer,所以在一些專有名詞的使用上會和我們這邊使用的不太一樣啦垮抗,不過作者也有標注出英文名稱臀规,大家自行轉(zhuǎn)換喲(?????????)
Makeblock 有提供 Me 音量感應器剧董,可以感測聲音強度舶掖,很簡單的一個電路模組:
音量感應器豆巨,一般常見的應用是聲控開關(guān)松却,像是拍兩下手來打開電視開關(guān)之類滤钱,如果有個 LED 陣列偶器,也可以依強度來制作音量顯示器斩萌,這邊的話,就來作個特效燈屏轰,當音量高于設(shè)定值時颊郎,會 讓 Me RGB LED 模組隨機顯示顏色,然后亮度逐漸衰退霎苗,你可以在 LED 模組上放上個半透明壓克力姆吭,或者是將它放到鼓里頭,就可以隨著音聲播放或打擊唁盏,展現(xiàn)些視覺效果内狸。
實作特效燈
特效燈的實作會用到七段顯示器、RGB LED 模組與音量感應器厘擂,RGB LED 模組接至連接埠 3昆淡,七段顯示器模組接至連接埠 4,音量感應器接至連接埠 6刽严,七段顯示器是用來顯示目前音量大小昂灵。
我首先處理的是亮度逐漸衰退的 LED 特效,問題在于亮度逐漸衰退的過程中,如果又收到的音量又高于設(shè)定值眨补,LED 必須再度根據(jù)新的 RGB 隨機值亮起管削,在 mBlock 中,可以使用廣播事件撑螺,這會讓程式比較容易處理一些:
每次收到指定的廣播訊息時含思,就會進入回圈,衰退的速度我選擇每次亮度減 5甘晤,回圈會持續(xù)至 RGB 值都為 0為止含潘。
RGB 值的產(chǎn)生則是在另一個回圈中進行:
這樣程式就完成了,你可以試著執(zhí)行程式安皱,然后試著制造些聲音调鬓,來看看 LED 的效果如何!
修改酌伊、上傳至 Arduino
如果想要能將程式上傳至 Arduino,由于廣播事件是 mBlock 中提供的功能缀踪,因此執(zhí)行“Arduino mode”時居砖,它會告訴你不支援廣播元件:
之前的文章使用到廣播元件時,其實也都無法直接轉(zhuǎn)換為可上傳至 Arduino 的程式驴娃,當廣播訊息到來時奏候,其底下指定的流程就會被執(zhí)行,這就好比你可以指定多個同時執(zhí)行的流程唇敞,然而Arduino 本身無法同時執(zhí)行多個指定的程式流程蔗草,你必須適當?shù)馗鶕?jù)條件來自行切換流程。
就我們這個簡單的程式來說疆柔,可以如下修改:
processLED只是個自定義積木程式咒精,也就是說,它是主程式流程的一部份:
因為processLED就是在回圈中呼叫旷档,所以模叙,processLED自定義方塊中就不用回圈了,只要判斷何時要執(zhí)行 LED 特效就可以了鞋屈,這么一來范咨,你就可以順利地將程式進行轉(zhuǎn)換了:
由于上傳至 Arduino 執(zhí)行速度較快,實際上效果會比通過?mBlock 執(zhí)行來得好厂庇!
感謝CodeData用戶:caterpillar的貢獻 著作權(quán)歸作者所有
整理:寧波家電物聯(lián)網(wǎng)云平臺渠啊,中科極動云
CONTACT US: http://www.iot-jd.com/