270| 0
|
[入门教程] Arduino入门教程26-指针式噪音计 |
在这个项目中,我们将学习如何使用Arduino、麦克风和舵机来创建一个有趣的互动装置。将声音强度信息通过Arduino转换为舵机的旋转角度,使得舵机的叶片能够随着声音的大小而转动,从而直观地展示声音的变化。 元件清单 硬件连接 图 1 指针式噪音计 示例代码
上传代码后,对着麦克风发出声音,舵机的叶片会发生转动。根据声音的音量大小,转动的角度会有所不同。 代码回顾 由于麦克风传输出的信号不是稳定平滑的,当我们把信号直接使用在舵机上时,会发现即使环境声音没有变化,舵机也处于抖动状态,实现效果不够稳定。 所以,在使用驻极体麦克风模块和舵机进行音量显示时,引入滤波机制是非常重要的,它可以提高系统的准确性和稳定性,提升用户体验。 首先,我们需要定义滤波器的滤波因子(Alpha)值。
Alpha值介于0和1之间,决定了滤波器对输入数据的敏感程度以及滤波效果的平滑程度。
上面的计算实现了指数移动平均滤波算法,以平滑声音数据。 其中,filterValues是滤波后的值,也就是当前时间点的输出值。它随时间更新,以反映最新的输入数据(即sensorValue)与过去的滤波值之间的加权平均值。这里的权重就是滤波因子Alpha。Alpha越大,滤波后的结果对最新的输入数据(sensorValue)的响应越快,滤波结果越能反映近期的数据变化;反之,Alpha越小,滤波后的结果越平滑,但对输入数据的响应也越慢。
最后,将处理好的数据映射成舵机工作区间的角度servoPos,并使用myservo.write()函数将声音响度以舵机角度的方式呈现出来。 硬件回顾 本项目使用的硬件和电路都与项目【声控灯】相似,如有不清楚的地方,请参考项目【声控灯】的教程。 课后练习 如在实际使用过程中,舵机转动效果不理想,请尝试修改滤波因子的数值,实现舵机的平滑转动吧! 附件下载: 示例代码.RAR |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed