查看: 31737|回复: 14

Arduino示例教程模块版——3、模拟声控路灯实验

[复制链接]

该用户从未签到

发表于 2013-5-31 14:56 | 显示全部楼层 |阅读模式
本帖最后由 海神 于 2013-6-15 18:02 编辑

实验采用OJ模拟声音传感器,驻极体检测声音大小,并经过放大电路输出模拟量。所以,检测声音的大小就与输出的模拟量成正比。实验中,我们采用模拟声音传感器循环检测外部音量,当超过一定值后,点亮LED,延时一段时间后,熄灭LED。这样模拟夜间楼道声控灯工作。
图片31.png
实验所需模块清单:
Zduino UNO × 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中的一个值。通过这个值也可以换算为读取到的电压值。

实验连接图
食人鱼LED对应连接13IO口。

图片32.png

声音传感器对应连接A0口。

图片33.png
声音传感器输出的是一个模拟值,可以调节中间蓝色电位器来调节其检测灵明度。

Arduino示例程序:

kittenblock中小学创客名师推荐的图形化编程软件

/*
www.openjumper.com
日期: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 
    }
}


连线实物图:
IMG_20130615_150035_副本.jpg
下载程序后,对声音传感器发出声响,LED灯便会自动打开,过20秒后,LED灯自动熄灭。


打赏作者鼓励一下!
  • TA的每日心情
    开心
    2015-3-30 22:49
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    发表于 2014-7-23 20:22 | 显示全部楼层
    不错~                                                     

    该用户从未签到

    发表于 2015-7-1 21:07 | 显示全部楼层
    为啥延时20s要用for循环

    该用户从未签到

    发表于 2016-4-8 22:47 | 显示全部楼层
    模拟量A0的接口是不是没有定义啊?

    该用户从未签到

    发表于 2016-7-27 23:11 | 显示全部楼层
    你好! 你那个声音传感器的贴对我很有帮助,但是我的器材有点不太一样,你方便帮帮我吗,加个微信也可以!!
  • TA的每日心情
    开心
    2019-1-22 20:22
  • 签到天数: 692 天

    [LV.9]以坛为家II

    发表于 2016-8-15 08:30 | 显示全部楼层
    delay(1000)中数值最大允许1000吗
    打赏作者鼓励一下!
  • TA的每日心情
    开心
    2016-11-14 07:21
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2016-11-23 08:01 | 显示全部楼层
    #在这里快速回复#为何我按照上述方法连接后,无论如何调节灵敏度开关,输出的数字量一直是0,或者一直是1,采集的模拟信号变化非常小,声音模块上的指示灯能看到感应信号变化,但是控制板上采集不到变化情况
  • TA的每日心情
    开心
    2016-11-14 07:21
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2016-11-23 08:04 | 显示全部楼层
    可是我按照这个连接,控制板上采集的模拟值和数字量基本没有变化,很大声音也没变化,只能在声音模块电路上的指示灯能看到有声音时灯亮

    该用户从未签到

    发表于 2016-11-26 00:28 | 显示全部楼层
    geekboy 发表于 2015-7-1 21:07
    **** 作者被禁止或删除 内容自动屏蔽 ****

    我试了delay(20000),一样的,楼主凑字数吧
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    KittenBot杯第六届开源硬件开发大赛启动啦
    KittenBot杯第六届开源硬
    大赛简介: 第六届开源硬件开发大赛由Arduino中文社区发起 由KittenBot冠名赞助
    求助,Due使用问题。
    求助,Due使用问题。
    如图,Due没有SPI库和Wire库。
    arduino+onenet+edp协议
    arduino+onenet+edp协议
    每次在edp.c这里报错,请问这是什么问题?(这一句本身应该没有问题的)
    一文教你选择Arduino开发板,小白进
    一文教你选择Arduino开发
    笔者在2016年接触了Arduino,跳了万条坑,行了千里弯,到今天也算是Arduino的一
    能够与arduino结合的嵌入式视觉识别模块
    能够与arduino结合的嵌入
    该视觉识别模块是我司于2018年新推出的产品,处理器采用双核MCU,面向创客以及steam
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表