arduino 串口读取字符串_【Arduino中级系列教程】项目三 声控灯

【点击上方「蓝字」关注DF,一起成为技术颜控!】

0b24a2467d5e9520dafb72d3e0fe1127.png

上一课:【Arduino中级系列教程】项目二 Mini台灯

友情提示:搭配Gravity:新版Arduino中级套件食用更佳!

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

所需元件

  • 1×  数字食人鱼红色LED发光模块
  • 1×  模拟声音传感器
d80097c4295a96c5593245a341a9ff66.png

硬件连接

  • 模拟声音传感器
  • 连接模拟引脚0
  • 数字食人鱼红色LED发光模块
  • 连接数字引脚13
c02d8d1ac619d4160f04a31661fc4362.png
声控灯

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

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

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

66cddb0ab3debe5c26f06a12003309d9.png

输入代码

输入代码也是一种学习编程的过程,虽然提供代码的压缩包,但还是建议初学者自己输入代码,亲身体验一下。打开Arduino IDE,在编辑框中输入样例代码。样例代码 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);
  }
}

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

代码回顾

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

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

analogRead(pin)

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

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

if (soundState > 10) {           
       ...
}else{
       ...
}

需要修改预设值的话,可以打开串口监视器,看看你需要的声音强度的值在什么范围,然后做相应调整就可以了。

- END -

小伙伴们在之后的Arduino学习之旅中,不管你遇到奇奇怪怪的问题,都希望你与我们交流,你可以选择登陆我们的DFRobot创客社区!mc.dfrobot.com.cn 发帖提问!

也可以加我们的Arduino官方群:369301430,大家一起交流学习。

硬件军火库

DFRduino UNO R3

点击了解详情?

大家有什么想法,或是对文章的指正,都欢迎在下方留言

学有余力的小伙伴,可以点击,到社区继续学习!


 往期回顾 

▼ Arduino基础系列教程

7ffc39ad3492cb7d7175684e5d1f5597.png

点击阅读?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值