找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 16729|回复: 0
收起左侧

Arduino实现声控灯

[复制链接]
ID:290266 发表于 2018-4-7 00:59 | 显示全部楼层 |阅读模式

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



所需元件

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


1×  模拟声音传感器


1×  IO 传感器扩展板 V7.1


   1× 英特尔® Edison for Arduino 开发板





硬件连接

模拟声音传感器     模拟 0

数字食人鱼红色 LED 发光模块    数字 13


图 4-1 声控灯

输入代码


  1. //声控灯

  2. int soundPin = 0;                             //声音传感器接到模拟 0 int ledPin =               13;               //LED 接到数字 13


  3. void setup() {

  4. pinMode(ledPin, OUTPUT);

  5. // Serial.begin(9600);               //用于调试

  6. }



  7. void loop(){

  8. int soundState = analogRead(soundPin);               //读取传感器的值

  9. // Serial.println(soundState);               //串口打印声音传感器的值



  10. //如果声音值大于 10,亮灯,并持续 10s,否则关灯

  11. if (soundState > 10) { digitalWrite(ledPin, HIGH); delay(10000);
  12. }else{

  13. digitalWrite(ledPin, LOW);

  14. }

  15. }
复制代码

对着话筒拍下手,或者说句话,试试灯能不能点亮?
硬件分析 (模拟输入 — 数字输出)

前面几次我们接触的都是数字传感器,这次我们要尝试使用模拟传感器了,还记得在一 开始说的数字与模拟的区别吗?(串口中认识“数字”与“模拟”一节)。数字,只有两个值



(0/1)。模拟,是线性的,理论上的无限值(0~1023)。

所以这里是个,模拟输入,数字输出的模式。









代码回顾

在 setup()中只设置了 LED 为输出,为什么没有设置声音传感器输入模式?这是因为 模拟口都是输入设置,所以不需要设置了。




声音传感器是输入设备,所以需要读取对应模拟口  0  的值。 与读取数字口函数

digitalRead(pin)类似,所以模拟口读取函数是:

analogRead(pin)

这个函数用于从模拟引脚读值,pin 是指连接的模拟引脚。Arduino 的模拟引脚连接到 一个了 10 位 A/D 转换,输入 0~5V 的电压对应读到 0~1023 的数值,每个读到的数值对 应的都是一个电压值。比如 512 = 2.5V。




最后是一个 if 判断,判断是否到达你预设的值。

if (soundState > 10) {

...

}else{


...

}



需要修改预设值的话,可以打开串口监视器,看看你需要的声音强度的值在什么范围,

然后做相应调整就可以了。




完整的pdf格式文档51黑下载地址:
声控灯.pdf (2.97 MB, 下载次数: 41)
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表