林委锋
“老师,我们学习完了机器人的‘大脑,这次我们要学习什么呢?”
“这次我们学习的是机器人的‘眼睛,当然机器人的眼睛和我们的眼睛还是有区别的,机器人的眼睛更像是蝙蝠的嘴和耳的功能。蝙蝠在黑夜中能够自由地飞行,利用的是超声波,超声波有很强的方向性,当遇到障碍物时会反射回来。蝙蝠的耳朵利用嘴中发出的超声波再被反射回来的时间计算出自己和障碍物之间的距离,及时准确地避开障碍物。这次我们就用超声波传感器来给机器人装一个能够检测障碍物的眼睛。”
如图1所示,超声波传感器的引脚有4根,分别是:1.VCC电源端;2.TRIG控制端;3.ECHO接收端;4.GND地线。
超声波传感器和Arduino电路板的连接如图3所示:1脚VCC和Arduino板5V的VCC脚连接;2、3脚和Arduino板的任意两个数字端口连接,如TRIG接2号口,ECHO连3号口;4脚接对应的GND口。
此时,Arduino板在TRIG端输出一个高电平,维持10微秒以上,同时传感器在ECHO端会输出一个高电平,一旦传感器接收到反射回来的超声波,ECHO就会跳转为低电平。于是,我们可以根据此高电平的维持时间 t 来计算与障碍物之间的距离(如图2)。
在实际编程的过程中,ArduBlock软件提供了一个自动检测和计算距离的超声波传感器模块,只要在模块中标明TRIG和ECHO所连接的端口就可以了,超声波传感器模块会生成自动检测和计算距离的程序,如图4所示。
程序分成两个部分,第一部分的作用是检测计算与障碍物之间的距离,并将计算结果给变量“dis”,如图5所示。程序中,超声波传感器模块的“trigger”和“echo”要写入之前电路连接时所选择的数字引脚端口号。
“set decimal number variable”这个模块的作用是把超声波传感器模块传送来的数据储存到变量“dis”中。变量就像一个仓库,用来储存数据。如果有新的数据存入,则原来的数据就被替换。“decimal number”表示变量“dis”是一个带小数的数据,也称为浮点数。
第二个部分“串行打印”的作用是把储存在变量“dis”中的与障碍物之间距离的数值输出到串口监视器中。“distance”是提示符,可以自行写入。输出到串口监视器的数据必须是字符串类型,变量“dis”是一个浮点数,所以,在输出前要把它转换为字符串类型,程序中的“和模拟量结合”即是完成这个作用。程序最后要加一条延时2秒的指令,否则超声波传感器会把检测到的距离数据连续不断发送到串口监视器中(如图6)。
程序编写好后,下载并运行,在ArduBlock菜单栏的Arduino选项中打开串口监视器选项,用手慢慢靠近超声波传感器,从近到远,观察串口监视器接收到的数据变化(如图7)。
现在,你有一个神奇的机器人眼睛了。