别在空房间里刹车
Arduino C++这个机器人的防撞程序在有东西近于 20 cm 时点亮刹车灯(D13)。对着墙时它工作正常,但在开阔的房间里它也会刹车:没有回波时 pulseIn() 返回 0,而 0 cm 就是“近于 20”。只有在真的有一个小于 20 cm 的回波时才刹车。墙先在 80 cm 外,1.5 s 时在 15 cm,3 s 时消失,4.5 s 时在 8 cm 外。
检查
- 尚未运行能运行
- 尚未运行墙在 80 cm:不刹车
- 尚未运行墙在 15 cm:刹车
- 尚未运行空房间:不刹车
- 尚未运行墙在 8 cm:刹车
提示
- 什么都没有回来时 ping() 返回 0。0 不是一个距离。
- 两个条件必须同时成立:有回波,而且距离很近。
- bool brake = cm > 0 && cm < 20;