查看: 34480|回复: 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),一样的,楼主凑字数吧
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    ArduinoJason6教程由ArduinoJson作者Benoit亲自出马一对一教学
    ArduinoJason6教程由Ardui
    这几天我觉得社区教学好像缺了点什么,呃呃~我想一想好像是缺少了ArduinoJson6的教学
    Arduino+L298N小车实例教程
    Arduino+L298N小车实例教
    (第一次写教程,如有错漏,敬请拍砖)Arduino+L298N小车实例教程Arduino小车是一个非
    零知开源分享-蓝牙模块与手机APP通信
    零知开源分享-蓝牙模块与
    本篇文章中将讲解蓝牙模块与安卓手机APP进行通信。1、说明MCU:零知开发板-标准板模
    DHT库无法被找到
    DHT库无法被找到
    今天在安装了DHT库之后在编译时却显示无法找到库,请问我是在哪里安装出错了,谢谢大
    (可远程)ESP8266读DHT11温湿度,APP inventor制作app实时显示
    (可远程)ESP8266读DHT11
    原理讲解 原理简述:利用发布订阅模式。第一步,先读取DHT11温湿度数值,第二步,新
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表