小小云提示:教程作者caterpillar是来自台湾的programmer,所以在一些专有名词的使用上会和我们这边使用的不太一样啦,不过作者也有标注出英文名称,大家自行转换哟(⁎⁍̴̛ᴗ⁍̴̛⁎)
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 本身无法同时执行多个指定的程式流程,你必须适当地根据条件来自行切换流程。
就我们这个简单的程式来说,可以如下修改:
processLED只是个自定义积木程式,也就是说,它是主程式流程的一部份:
因为processLED就是在回圈中呼叫,所以,processLED自定义方块中就不用回圈了,只要判断何时要执行 LED 特效就可以了,这么一来,你就可以顺利地将程式进行转换了:
由于上传至 Arduino 执行速度较快,实际上效果会比通过 mBlock 执行来得好!
感谢CodeData用户:caterpillar的贡献 著作权归作者所有
整理:宁波家电物联网云平台,中科极动云
CONTACT US: http://www.iot-jd.com/