理论教育 移动、避障与警报控制技术优化方案

移动、避障与警报控制技术优化方案

时间:2023-06-30 理论教育 版权反馈
【摘要】:本节将主要围绕360°舵机、超声波传感器、蜂鸣器三者组合进行模块化训练。② while{ }是一个死循环体,表示重复执行。这里break 的作用就是可以跳出while 循环。

移动、避障与警报控制技术优化方案

本节将主要围绕360°舵机、超声波传感器蜂鸣器三者组合进行模块化训练。本节的训练目的:第一,机器人直走时遇到障碍物就停,并且蜂鸣器报警;第二,机器人直走时遇到障碍物就原地右转,同时警报,转到大于3 倍距离再直走。第二个目的其实是第一个目的的改进,对机器人而言,第二个目的比第一个目的的智能程度更高。

1. 编程目标一

实现目标:机器人直走时遇到障碍物就停,并且蜂鸣器报警

(1)程序思维如图6-1-1 所示。

图6-1-1 程序思维

仔细琢磨图6-1-1 所示的程序思维图,要掌握程序一般要以条件语句优先,这句话的含义就是如果利用传感器来检测环境,那么就会产生多个情况,每一种情况就对应一种动作,由情况来对应动作的这个逻辑思维善加利用,将会大大提高编程效率。最常用的条件语句就是if…else…。

(2)程序代码如下:

(www.daowen.com)

(3)在程序中,警报动作使用间断警报即可,高电平时间短一点(40),低电平时间长一点(400),尽量避免太嘈杂。

2. 编程目标二

实现目标:机器人直走时遇到障碍物就原地右转,同时警报,转到大于3 倍距离再直走。

(1)程序思维图与图6-1-1 类似,需要动作稍作改变。

(2)程序代码如下:

(3)程序详解:

① 类似于超声波传感器测距的动作,可以通过定义函数来给它包装,如此在程序中多次调用时就可以直接调用其函数名即可,方便快捷。在2.1 节中已经讲述函数的定义使用void,例如:void SR05_distance (void){}。

② while(1){ }是一个死循环体,表示重复执行。然而,它经常与if(条件){break;}使用,即while(1){ if(条件){break;} },其含义代表重复执行某某直到条件成立时为止。这里break 的作用就是可以跳出while 循环。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈