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

    本版积分规则

    热门推荐

    利用MICRO:BIT制作的飞机小游戏
    利用MICRO:BIT制作的飞机
    一.项目名称: 利用MICRO:BIT制作的飞机小游戏二.制作目的: 带孩子多了解micro:bit
    全过程展示:PWM自定义、测速、PID调速、PID自整定
    全过程展示:PWM自定义、
    有一天,电控小白在某宝上买来了一块Arduino Mega2560、一款直流电机。小白想:“这款
    OneNET之星再度闪耀 物联网创客马拉松大赛正式启动
    OneNET之星再度闪耀 物联
    4月9日,2019中国移动OneNET之星2.0物联网创客马拉松正式上线。大赛由中国移动集
    求助!!!!
    求助!!!!
    想借助数据上传工具将串口数据传到乐联网,结果一直上传失败,实在不知道怎么修
    BLE胸带+GPS墨水屏运动心率表(0421更新代码及原理图)
    BLE胸带+GPS墨水屏运动心
    0421了更新代码原理状语从句:打图产品板的PCB已经到达本市。 项目简介: 我喜欢
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表