和12岁小同志搞创客开发:手撕代码,做一款声控灯(代码片段)

不脱发的程序猿 不脱发的程序猿     2023-02-03     191

关键词:

机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧。

项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html 


之前两篇博文主要是数字量输入、输出类型传感器的驱动。

和12岁小同志搞创客开发:手撕代码,点亮LED灯

和12岁小同志搞创客开发:手撕代码,做一款人体感应灯

本篇博文讲讲模拟量传感器的驱动。

小时候有没有对走廊的声控灯很感兴趣呢?会不会拼命的跺脚只为让那盏灯点亮。本篇博文我们使用声音传感器做个这样的声控灯。只要你轻轻拍下手,灯就自动亮起来了,没了声音,灯就又自动关了。

MIC声音传感器是一款基于麦克风为声音检测的传感器,可用来对周围环境中的声音强度进行检测,具有300倍的放大器,输出模拟信号能使用3.3V和5V为基准AD采集,可以用来实现根据声音大小进行互动的效果、制作声控机器人、声控开关、声控报警等。

传感器连线效果如下所示:

实现代码如下所示: 

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为输出,由于声音传感器模拟口都是输入设置,所以不需要设置了。

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

analogRead(pin)

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

为了方便调测,程序中添加了串口监视器功能,需要修改预设值的话,可以打开串口监视器,看看你需要的声音强度的值在什么范围,然后做相应调整就可以了。 

begin()函数实现打开串口,设置通信波特率,原型如下所示:

void HardwareSerial::begin  (long speed)

speed:波特率数值

常用串口波特率包括:4800、9600、19200、38400、115200等。

print()函数和println()函数实现往串口发数据,只是print()函数没有换行功能而println()函数有换行。它们以ASCII码形式向串口发送数据。整数的每一数位将以ASCII码形式发送;浮点数同样以ASCII码形式发送,默认保留小数点后两位;字节型数据将以单个字符形式发送;字符和字符串会以其相应的形式发送。例如以下示例:

Serial.print(78) 发送 "78"
Serial.print(1.23456) 发送 "1.23"
Serial.print('N') 发送 "N"
Serial.print("Hello world.") 发送 "Hello world."

 print()函数和println()函数还有可选的第二个参数用于指定数据的格式。允许的值为:BIN (binary二进制), OCT(octal八进制),DEC(decimal十进制),HEX(hexadecimal十六进制)。对于浮点数,该参数指定小数点的位数。例如以下示例:

Serial.print(78, BIN) gives "1001110"
Serial.print(78, OCT) gives "116"
Serial.print(78, DEC) gives "78"
Serial.print(78, HEX) gives "4E"
Serial.println(1.23456, 0) gives "1"
Serial.println(1.23456, 2) gives "1.23"
Serial.println(1.23456, 4) gives "1.2346"

和12岁小同志搞创客开发:手撕代码,做一款遥控灯(代码片段)

机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧。项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html 本篇博文是创客开发:手撕代码篇的最后一节,项目在之前使用Mind+编程... 查看详情

和12岁小同志搞创客开发:手撕代码,做一款遥控灯(代码片段)

机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧。项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html 本篇博文是创客开发:手撕代码篇的最后一节,项目在之前使用Mind+编程... 查看详情

和12岁小同志搞创客开发:手撕代码,做一款遥控灯(代码片段)

机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧。项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html 本篇博文是创客开发:手撕代码篇的最后一节,项目在之前使用Mind+编程... 查看详情

和12岁小同志搞创客开发:手撕代码,做一款亮度可调节灯(代码片段)

...1、PWM呼吸灯2、亮度可调节灯机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧。项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html 本篇博文中的项目之前使用Mind+编程软件已经实现过... 查看详情

和12岁小同志搞创客开发:手撕代码,做一款亮度可调节灯(代码片段)

...1、PWM呼吸灯2、亮度可调节灯机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧。项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html 本篇博文中的项目之前使用Mind+编程软件已经实现过... 查看详情

和12岁小同志搞创客开发:手撕代码,做一款亮度可调节灯(代码片段)

...1、PWM呼吸灯2、亮度可调节灯机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧。项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html 本篇博文中的项目之前使用Mind+编程软件已经实现过... 查看详情

和12岁小同志搞创客开发:手撕代码,点亮led灯(代码片段)

...1、Arduino编程架构2、点亮LED灯机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧。项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html 本篇博文将在ArduinoIDE软件中手写第一个小Demo,点... 查看详情

和12岁小同志搞创客开发:手撕代码,做一款密室自动门(代码片段)

机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧。项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html 所谓密室自动门,就是这门不是轻易能打开的,存在着某些玄关需要你去破... 查看详情

和12岁小同志搞创客开发:手撕代码,做一款密室自动门(代码片段)

机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧。项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html 所谓密室自动门,就是这门不是轻易能打开的,存在着某些玄关需要你去破... 查看详情

和12岁小同志搞创客开发:手撕代码,做一款温湿度检测器(代码片段)

机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧。项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html 本篇博文将使用DHT11做一款温湿度检测器,检测的温湿度数据将通过LCD1602显示。... 查看详情

和12岁小同志搞创客开发:手撕代码,做一款温湿度检测器(代码片段)

机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧。项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html 本篇博文将使用DHT11做一款温湿度检测器,检测的温湿度数据将通过LCD1602显示。... 查看详情

和12岁小同志搞创客开发:手撕代码,做一款数字骰子(代码片段)

机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧。项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html 小时候都玩过飞行棋吧,是不是特别喜欢掷骰子,今天就要通过Arduino来做个... 查看详情

和12岁小同志搞创客开发:手撕代码,做一款数字骰子(代码片段)

机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧。项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html 小时候都玩过飞行棋吧,是不是特别喜欢掷骰子,今天就要通过Arduino来做个... 查看详情

和12岁小同志搞创客开发:手撕代码,做一款火焰报警器(代码片段)

机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧。项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html 在厨房安装一个火焰报警器应该是非常管用的,如果不小心忘关煤气的话,... 查看详情

和12岁小同志搞创客开发:手撕代码,做一款火焰报警器(代码片段)

机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧。项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html 在厨房安装一个火焰报警器应该是非常管用的,如果不小心忘关煤气的话,... 查看详情

和12岁小同志搞创客开发:手撕代码,做一款节拍电子鼓(代码片段)

机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧。项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html 本篇博文做一个有趣的小项目,节拍电子鼓:在架子鼓上装上炫彩的LED灯... 查看详情

和12岁小同志搞创客开发:手撕代码,做一款节拍电子鼓(代码片段)

机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧。项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html 本篇博文做一个有趣的小项目,节拍电子鼓:在架子鼓上装上炫彩的LED灯... 查看详情

和12岁小同志搞创客开发:手撕代码,做一款人体感应灯(代码片段)

...录1、传感器原理2、代码实践机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧。项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html 本篇博文我们要手写代码做一款人体感应灯。要求࿱... 查看详情