查看: 13457|回复: 5

Arduino教程中级 项目四 声控灯

[复制链接]
项目四 声控灯

本系列教程为DF创客社区版权所有,配套硬件套件新版Arduino中级套件

小时候有没有对走廊的声控灯很感兴趣呢?会不会拼命的跺脚只为让那盏灯点亮。这节我们就做个这样的声控灯。只有你轻轻拍下手, 灯就自动亮起来了,没了声音,灯就又自动关了。这里用到的是个声音传感器,我们可以利用这个传感器做出更多互动作品,通过声音触发来控制更多好玩儿的东西,比如说做个发光鼓等等。

所需元件

  1×  数字食人鱼红色LED发光模块

image001.jpg

  1×  模拟声音传感器

image003.jpg

硬件连接

模拟声音传感器 → 模拟0
数字食人鱼红色LED发光模块 数字13


image005.jpg

图4-1声控灯

输入代码

样例代码 4-1:
//项目四 —— 声控灯
int soundPin = 0;       //声音传感器接到模拟0
int ledPin =  13;       //LED接到数字13
void setup() {
  pinMode(ledPin, OUTPUT);
// Serial.begin(9600);    //用于调试
}
void loop(){
  int soundState =analogRead(soundPin);  //读取传感器的值
// Serial.println(soundState);      //串口打印声音传感器的值
//如果声音值大于10,亮灯,并持续10s,否则关灯
  if (soundState > 10) {           
      digitalWrite(ledPin,HIGH);  
      delay(10000);
  }else{
      digitalWrite(ledPin, LOW);
  }
}
对着话筒拍下手,或者说句话,试试灯能不能点亮?
硬件分析(模拟输入—数字输出)

前面几次我们接触的都是数字传感器,这次我们要尝试使用模拟传感器了,还记得在一开始说的数字与模拟的区别吗?(串口中认识“数字”与“模拟”一节)。数字,只有两个值(0/1)。模拟,是线性的,理论上的无限值(0~1023)。
所以这里是个,模拟输入,数字输出的模式。
image007.jpg

代码回顾

在setup()中只设置了LED为输出,为什么没有设置声音传感器输入模式?这是因为模拟口都是输入设置,所以不需要设置了。
     
声音传感器是输入设备,所以需要读取对应模拟口0的值。与读取数字口函数digitalRead(pin)类似,所以模拟口读取函数是:
analogRead(pin)
这个函数用于从模拟引脚读值,pin是指连接的模拟引脚。Arduino的模拟引脚连接到一个了10位A/D转换,输入0~5V的电压对应读到0~1023的数值,每个读到的数值对应的都是一个电压值。比如512 = 2.5V。
最后是一个if判断,判断是否到达你预设的值。
if (soundState > 10) {           
       ...
}else{
       ...
}
   
需要修改预设值的话,可以打开串口监视器,看看你需要的声音强度的值在什么范围,然后做相应调整就可以了。

※ 在之后的Arduino学习之旅中,不管你遇到奇奇怪怪的问题,都希望你与我们交流,欢迎登陆我们的DFRobot创客社区!


Lesson4_1.ino

576 Bytes, 阅读权限: 10, 下载次数: 59, 下载积分: 创造力 -1

dsweiliang  版主

发表于 2015-9-18 18:05:01

四个项目都很好,准备追下去
回复 支持 反对

使用道具 举报

Jane  管理员
 楼主|

发表于 2015-9-18 18:14:41

dsweiliang 发表于 2015-9-18 18:05
四个项目都很好,准备追下去

谢谢~
回复 支持 反对

使用道具 举报

jiashe2011  见习技师

发表于 2017-2-22 00:51:43

学习4!!!
回复 支持 反对

使用道具 举报

zhouyu77642017  学徒

发表于 2018-8-9 09:08:35

学习了!
回复 支持 反对

使用道具 举报

小飞侠_  见习技师

发表于 7 天前

学习了!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2019 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail