实验采用OJ模拟声音传感器,驻极体检测声音大小,并经过放大电路输出模拟量。所以,检测声音的大小就与输出的模拟量成正比。实验中,我们采用模拟声音传感器循环检测外部音量,当超过一定值后,点亮LED,延时一段时间后,熄灭LED。这样模拟夜间楼道声控灯工作。
实验所需模块清单:
Zduino UNO × 1;
OJ传感器扩展板× 1;
OJ传感器扩展板× 1;
USB数据线 × 1 ;
3p杜邦线 × 2 ;
声音传感器模块 × 1 ;
食人鱼LED模块 × 1 ;
主要知识点:
analogRead(PIN) 读取模拟输入值。
这里的PIN只能是对应A0—A5 这种带ADC功能的引脚,数字引脚0—13则不能使用该函数。
读取到的值是则是一个0~5V的电压值,而这里的模拟输入精度为10位,也就是2的10次方为1024,将0—5V伏对应映射到0—1023,所以analogRead(PIN)的返回值为0—1023中的一个值。通过这个值也可以换算为读取到的电压值。
实验连接图
analogRead(PIN) 读取模拟输入值。
这里的PIN只能是对应A0—A5 这种带ADC功能的引脚,数字引脚0—13则不能使用该函数。
读取到的值是则是一个0~5V的电压值,而这里的模拟输入精度为10位,也就是2的10次方为1024,将0—5V伏对应映射到0—1023,所以analogRead(PIN)的返回值为0—1023中的一个值。通过这个值也可以换算为读取到的电压值。
实验连接图
食人鱼LED对应连接13号IO口。
声音传感器对应连接A0口。
声音传感器输出的是一个模拟值,可以调节中间蓝色电位器来调节其检测灵明度。
/*
[url=http://www.openjumper.cn/]www.openjumper.cn[/url]
日期:2013.5.18
IDE 版本:1.0.1
功能:模拟声控灯开关状态,当音量超过设定值后,点亮LED,延时一段时间后熄灭
*/
int LEDpin = 13; //定义LED灯控制引脚
void setup() {
pinMode(LEDpin,OUTPUT);
}
void loop() {
int Soundvalue = analogRead(A0); //读取输入模拟值
if(Soundvalue>20)
{
digitalWrite(LEDpin,HIGH); //当模拟值大于设定值后,点亮LED
for(int i=0;i<20;i++){
delay(1000); //延时20s
}
}
else{
digitalWrite(LEDpin,LOW); //关闭LED
}
}
连线实物图:
下载程序后,对声音传感器发出声响,LED灯便会自动打开,过20秒后,LED灯自动熄灭。