23| 1
|
[入门] [入门教程]Arduino入门教程25—声控灯 |
项目 - 声控灯 声控灯是一种非常常见的家居设备,它能够通过检测周围环境的声音来自动开关灯光。本项目通过编写Arduino代码,我们可以实现当声音达到一定级别时,LED灯自动亮起;声音减弱后,LED灯自动熄灭的功能。 元件清单 硬件连接 图 1 声控灯连线图 样例代码:
代码上传成功后,当你发出较大声音时,LED会亮起并维持一秒钟。如果发现比较难以激活LED(或过于敏感),可以适当调整声音阈值以达到最佳效果。 代码回顾 在loop()函数开始之前,主要执行的是一些基础的准备工作,包括初始化用于控制LED的引脚,以及设置串口通信参数以便进行数据传输或调试。 在该项目的loop()函数中,展现了典型的输入、处理、输出的控制流程。 输入,读取声音传感器的值并存放在sensorValue中:
计算处理,我们使用一个if语句来检查声音值是否超过了预设的阈值soundThreshold:
输出,如果超过了,就使用digitalWrite(ledPin, HIGH) 点亮LED,并通过delay(1000) 保持LED点亮1秒钟。如果没有超过阈值,就使用digitalWrite(ledPin, LOW) 熄灭LED。 delay(50)作用是在每次检测声音之间加一个短暂的延时,这有助于减少Arduino的负担并提高程序的稳定性。 硬件回顾 驻极体麦克风 驻极体麦克风的基本原理就是一个可变电容,它的电容值随着声音震动而变化。这样就将声音信号转变为了电信号。在电路中,把它看作是一个随声音变化的电阻即可。 驻极体麦克风是极化的,因此它有一个正极引脚和一个接地引脚: 图 2 驻极体麦克风引脚 连接到金属外壳的引脚是接地(ground)引脚,另一个引脚是正极(positive)引脚。 麦克风产生的音频信号是一种交流电,类似于家中电源插座中的电流。但是,交流电流是具有静态频率和固定波长的正弦波,但音频波是频率和波长是可变的。 较高频率的音频信号会产生更高音调的声音。较低频率的音频信号会产生较低音调的声音: 图 3 频率 声音的“音量”或“响度”与峰值的幅度直接相关。振幅较大的音频信号会产生更大音量的声音。振荡幅度较小的音频信号会产生音量较小的声音。 图 4 振幅 偏置电阻 为了保证麦克风的输出信号处于所要求的工作区间,因此我们需要给其添加一个直流偏置,让其输出的电压信号处于所需工作区间。 图 5 工作区间 图 6 麦克风部分电路 就像图6这样,直流偏置的本质是通过加入电阻R1与麦克风分压,然后用一个电容C1隔离偏置电阻产生的直流电压部分。 PNP放大电路 接下来,我们来看一下放大电路部分,如图7所示: 图 7 放大电路部分 从项目【指尖开关】中对NPN三极管的介绍来看,NPN和PNP型三极管是可以当做开关来使用的,也可以当做放大器来使用,当它的基极,产生一个小变化,输出信号就会有很大的变化。这就是所谓的放大功能。由于麦克风通过使用R1分压形成的电压信号较微弱,因此使用三极管放大电路来获得比较好的效果。 基极电阻R2在PNP型三极管放大电路中起到了偏置的作用,而集电极电阻R3则作为负载元件,实现了电压的放大和电流到电压的转换。这两个电阻共同协作,确保了放大电路的正常工作和信号的有效放大。 那么PNP型三极管和NPN型三极管在作为放大电路时有什么不同吗? 由于这两种三极管的材料层序和电流流动的方向不同,导致它们在放大电路中的工作原理和特性有所不同。 如图8和图9所示:在NPN电路中,C接正极,E接负极;PNP电路则相反,E接正极,C接负极(这里说的正极和负极都是直接或间接连接)。一般的电路中,用了NPN的,你就可以按“上下对称交换”的方法得到 PNP 的版本。 当然,要保证正常工作,还必须保证这些电压、电流满足一些定量条件,需要调整电阻的接入位置来保证电路的正常工作和信号的有效放大。 附件下载: 示例代码 电路图.rar |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed