传感器 是学习 Arduino 必备的工具,它是Arduino的五官,甚至比人类意义上的五官更为优秀,那经常有人说的数字传感器、模拟传感器是什么呢?它们二者的区别是什么呢? 简单的来说输出数字量的传感器就是数字传感器,输出模拟量的传感器就是模拟传感器。那什么是数字量,什么又是模拟量呢?
例如:当我们描述一个灯泡是否通电,我们一般会说,灯亮或者灯灭,像这样,只能返回两种状态的量,我们称为数字量。而如果有人说,这个灯好暗,你可以调亮一点吗?那这个时候,我们所描述的就是一个区间的变化量,这就是模拟量。像这样的案例在生活中还有很多,例如你去乡村游玩,看到一口池塘,你远远的看着的时候,可能会想,那个池塘有没有水呢?这个时候,你需要的就是一个数字传感器,帮助你判断有或者无水即可,而等你到了池塘旁边,你可能会想,这个池塘水有多深?水有多少呢?这个时候你就需要一个模拟传感器来帮助你 测量 水深以及水量。
也就是说,如果一个传感器只能告诉你有或者无,在程序当中,“有”用1、true表示,“无”用0、false表示,那么我们就说这个传感器就是数字传感器;而如果一个传感器能告诉你一个连续变化的量,在程序当中原始返回值是0-1023,那么我们就说这个传感器是模拟传感器。我们也可以说数字传感器是特殊的模拟传感器,它只能返回两个值:0或1,如果用逻辑表达式表示就是false或true。
上方标明了digital,管脚上的标识是0-13,这就是数字传感器要连接的区域;下方标明了analog,管脚上的标识是A0-A5,有的只有数字0-5,那就是模拟传感器连接的区域,如果你接错了区域,就不会获取到正确的返回值。
那如何来辨识是数字传感器还是模拟传感器呢?一个最简单的办法就是看传感器的管脚标识,如果是除了VCC和GND管脚之外,剩下的是“AO”,那就是模拟传感器,如果是“DO”,那就是数字传感器,当然由于生产标准不统一,有的厂家生产出来的就是标明是”IO”、“IN”、“OUT”、“S”等标识,这就需要我们去 测试 了,当然你也可以观看初始化工作室制作的认识各种传感器的视频了解。
常见的数字传感器有:震动传感器、按钮传感器、碰撞传感器、触摸传感器、超声波传感器,常见的模拟传感器有:声音传感器、颜色传感器、雨滴传感器、 水位传感器 等,你可能奇怪,为什么把超声波传感器放到数字传感器里,它不是返回的是一个变化的距离值吗?这个就要请你阅读我的另一篇文章有关于超声波的原理讲述,你要知道的就是这个距离值不是超声波传感器直接返回的,而是通过数字量返回值计算出来的。当然,还有一些传感器即可以输出数字量,也可以输出模拟量,这个请你要注意,例如初始化工作室曾经分享过的声音、雨滴等传感器都是这样的。为避免广告之嫌,我就不上图了,请到某宝搜索相关传感器的名称即可找到,后面请加上“Arduino”关键词,例如“超声波传感器 Arduino”,要不然搜索到的很多就是工业用传感器了。
数字传感器与模拟传感器在程序编写上有什么不一样呢?我们来看Arduino IDE中的代码:数字传感器输入:digitalRead(0),模拟传感器输入:analogRead(A0),数字传感器输出:digitalWri te (0,HIGH),模拟传感器输出:analogWrite(3,0)。
识记这些命令很简单,digital是数字,analog是模拟,Read是读取,Write是写入。如下图所示就是 Mi xly当中的模块与命令的对应图,你可以使用这个软件由模块编程过渡到代码编程,当程序复杂到一定程度的时候,代码的可读性远远超过了模块的可读性,所以真正的大神还是要去敲代码的。