1614| 0
|
智能火情监测仪 |
智能火情监测仪是利用古德微树莓派图形化平台制作一个小作品。该作品用火焰传感器监测火焰的大小,通过数模转换器将其转化为模拟值,根据模拟值的大小动态改变火警音乐音量的大小,实现不同火情,警示不同范围居民的实际效果。 一、主程序 二、OLED初始化 1、初始化OLED显示屏 2、新建OLED图片 3、从树莓派中加载图片 这幅图片,是提前做好放到树莓派中供程序调用的。提前做一张图片是为了解决OLED显示比较单调的问题。 4、将火情图片调整尺寸 适应OLED显示屏的分辨率要求。 5、将火情图片粘贴到OLED图片上。 6、显示OLED图片 三、设置音频输出设备 本例中,为获取火焰传感器的模拟值,我们使用数模转换器,同时程序中我们还需要输出火灾报警音频,因此,我们使用了USB声卡,对音频设置进行了相应的设置。 四、火情监测 1、获取模拟信号并赋值给变量火焰值 2、输出火焰值 3、将火焰值进行折算 采用映射的方法将0-32767的值折算为99-0。为什么是99-0,而不是0-99?因为当没有火焰的时候,火焰传感器的输出值为32767,而不是我们想象中的0。 4、将折算值赋值给音量 现在,我们想通过火情监测这个子线程,动态的监测火情的大小,动态改变音乐播报的音量。 5、输出折算值 6、等待0.1秒 子线程火情监测每隔0.1秒检测一次火情值,每隔0.1秒改变一次音量值。 五、OLED显示 1、在OLED图片上添加火情值 根据火情监测子线程获取的火焰值,动态添加到OLED图片上 2、动态更新OLED图片 3、等待0.1秒 六、主程序 1、主程序重复循环 2、如果折算值大于10 执行播放树莓派存储的火灾报警音乐。 3、等待30秒 音乐时长共30秒,等待30秒,可完成一个循环。 4、如果折算值小于10,播放空音乐 如果折算值太小,说明火警非常微小,甚至是没有火情,可直接忽略,不予报警。如果程序开始折算值小于10,程序正常执行,但是如果火情是从大于10的时候变为小于10的,那么,刚才还在播放的音乐如何让它停下来,采用播放空音乐的方法是一个切实可行的方法。 5、等待0.1秒 每隔0.1秒监测一次。 最后,再上一遍主程序 对照主程序,进一步思考:为什么我们要将火情监测和OLED显示做成两个子线程?为什么要在条件不满足的情况下播放空音乐?除了本例中的方法,你还想到了什么解决办法? |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed