内容正文:
任务 13:小车接力
任务目标
在学会利用红外收发器单向通信的基础上学习双向通信的实现方法
编程实现两个 piBot 沿循迹地图接力运行的效果
引导
接力是田径比赛中一个很常见的项目,一名队员在赛道上等待后方队友跑到身
后再向前奔跑。在这个任务中,我们将利用两台 piBot机器人小车模拟接力比赛:
一台 piBot 静止在循迹地图的赛道上,另一台 piBot 沿赛道运行,当它运行到静
止的 piBot 身后时,超声波探测到前方障碍后停止运行,然后通过红外收发器向
前方的 piBot 发送“开始运行”的指令,前方的 piBot 接收到“开始运行”指令
后开始沿赛道运行。
编程
1. 红外双向通信的实现
在上个任务中,我们实现了单向通信,一个红外收发器发送指令,另一个红外
收发器接收指令。单向通信的逻辑比较简单,接收端只要一直接收红外指令即可,
反映速度很快。而由于使用红外收发器发送指令需要占用一部分处理时间,如果
红外收发器在等待指令过程中,同时还要发送指令,很可能因为占用过多时间而
错过对方发送的指令。要解决这个问题,必须降低发送指令的频率,将更多处理
时间留给接收指令的操作,在编程时,可以通过一个变量进行计数,比如,每接
收 10 次红外指令之后发送 1 次,这样就可以及时处理对方发来的指令了。
2. 程序流程图
开始
piBot循迹
超声波的
距离<20
停车
发送编码111
接收到编码
111?
是
否
3. 程序示例
拓展
将小车接力加入到交通系统中,实现真正的无人驾驶交通系统!