和 12 岁小同志搞创客开发:手撕代码,做一款声控灯
机缘巧合在网上认识一位 12 岁小同志,从零开始系统辅导其创客开发思维和技巧。
项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html
之前两篇博文主要是数字量输入、输出类型传感器的驱动。
本篇博文讲讲模拟量传感器的驱动。
小时候有没有对走廊的声控灯很感兴趣呢?会不会拼命的跺脚只为让那盏灯点亮。本篇博文我们使用声音传感器做个这样的声控灯。只要你轻轻拍下手,灯就自动亮起来了,没了声音,灯就又自动关了。
MIC 声音传感器是一款基于麦克风为声音检测的传感器,可用来对周围环境中的声音强度进行检测,具有 300 倍的放大器,输出模拟信号能使用 3.3V 和 5V 为基准 AD 采集,可以用来实现根据声音大小进行互动的效果、制作声控机器人、声控开关、声控报警等。
传感器连线效果如下所示:
实现代码如下所示:
在 setup()中只设置了 LED 为输出,由于声音传感器模拟口都是输入设置,所以不需要设置了。
声音传感器是输入设备,所以需要读取对应模拟口 IO 的值。与读取数字口函数 digitalRead(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 十六进制)。对于浮点数,该参数指定小数点的位数。例如以下示例:
版权声明: 本文为 InfoQ 作者【不脱发的程序猿】的原创文章。
原文链接:【http://xie.infoq.cn/article/d377555e1b90e35d9299018a2】。文章转载请联系作者。
评论