3

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

 2 years ago
source link: https://blog.csdn.net/m0_38106923/article/details/121308303
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

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

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


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

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

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

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

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

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

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

实现代码如下所示: 

在setup()中只设置了LED为输出,由于声音传感器模拟口都是输入设置,所以不需要设置了。

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

analogRead(pin)

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

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

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

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

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK