Edison教程系列05 声控灯

2014-10-319598
AI 快速预览详细 收起
本教程介绍了如何使用声音传感器和Intel Edison开发板制作一个简单的声控灯。所需元件包括数字食人鱼红色LED发光模块、模拟声音传感器、IO传感器扩展板V7.1和Intel Edison for Arduino开发板。硬件连接方面,声音传感器连接到模拟0口,LED灯连接到数字13口。代码中通过读取声音传感器的值并进行判断,实现声控灯的功能。这是一个适合家长与孩子一起动手实践的STEM教育项目,能够激发孩子的好奇心。
声控灯
小时候有没有对走廊的声控灯很感兴趣呢?会不会拼命的跺脚只为让那盏灯点亮。这节我们就做个这样的声控灯。只有你轻轻拍下手, 灯就自动亮起来了,没了声音,灯就又自动关了。这里用到的是个声音传感器,我们可以利用这个传感器做出更多互动作品,通过声音触发来控制更多好玩儿的东西,比如说做个发光鼓等等。

【所需元件】

  1×  数字食人鱼红色LED发光模块 Edison教程系列05 声控灯图1

  1×  模拟声音传感器 Edison教程系列05 声控灯图2

  1×   IO 传感器扩展板 V7.1 Edison教程系列05 声控灯图3

  1×   英特尔® Edison for Arduino开发板 Edison教程系列05 声控灯图4

【硬件连接】

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

Edison教程系列05 声控灯图5

【输入代码】
  1. //声控灯
  2. int soundPin = 0;       //声音传感器接到模拟0
  3. int ledPin =  13;       //LED接到数字13
  4. void setup() {
  5.   pinMode(ledPin, OUTPUT);
  6. // Serial.begin(9600);    //用于调试
  7. }
  8. void loop(){
  9.   int soundState = analogRead(soundPin);  //读取传感器的值
  10. // Serial.println(soundState);      //串口打印声音传感器的值
  11. //如果声音值大于10,亮灯,并持续10s,否则关灯
  12.   if (soundState > 10) {           
  13.       digitalWrite(ledPin, HIGH);
  14.       delay(10000);
  15.   }else{
  16.       digitalWrite(ledPin, LOW);
  17.   }
  18. }
复制代码

对着话筒拍下手,或者说句话,试试灯能不能点亮?

【硬件分析】(模拟输入—数字输出)

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

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

Edison教程系列05 声控灯图6


【代码回顾】

在setup()中只设置了LED为输出,为什么没有设置声音传感器输入模式?这是因为模拟口都是输入设置,所以不需要设置了。
     
声音传感器是输入设备,所以需要读取对应模拟口0的值。与读取数字口函数digitalRead(pin)类似,所以模拟口读取函数是:

analogRead(pin)

这个函数用于从模拟引脚读值,pin是指连接的模拟引脚。Arduino的模拟引脚连接到一个了10位A/D转换,输入0~5V的电压对应读到0~1023的数值,每个读到的数值对应的都是一个电压值。比如512 = 2.5V。
最后是一个if判断,判断是否到达你预设的值。
if (soundState > 10) {           
       ...
}else{
       ...
}
   
需要修改预设值的话,可以打开串口监视器,看看你需要的声音强度的值在什么范围,然后做相应调整就可以了。

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(0)
- 没有更多了 -