转向回到线上
Arduino C++初始代码能读出线,但不管看到什么都以 150 驱动两个轮子。让它转向:error = position - 3500,然后 left = 150 + error / 20,right = 150 - error / 20。线在传感器 2 下方时,左轮必须减速、右轮加速;在传感器 7 下方时正好相反;在中间时,两个都是 150。
检查
- 尚未运行运行 4.5 s
- 尚未运行用 readLineBlack() 读取黑线
- 尚未运行STBY(D9)为 HIGH:驱动器已唤醒
- 尚未运行居中:左轮(D5)约为 150/255
- 尚未运行居中:右轮(D6)约为 150/255
- 尚未运行线在传感器 2 下方:左轮减速
- 尚未运行线在传感器 2 下方:右轮加速
- 尚未运行线在传感器 7 下方:左轮加速
- 尚未运行线在传感器 7 下方:右轮减速
- 尚未运行再次居中:回到 150
提示
- readLineBlack() 返回的是无符号数;相减之前先转换类型:int error = (int)pos - 3500;
- error / 20 等同于 error x 0.05,但不需要浮点运算:这就是 Kp。
- motors() 已经用 constrain() 把每个轮子限制在 0-255 了。