巡线小车代码学习笔记
红外布局原理
中间两路巡线一直在黑线上,小车会直行,当任意一个出来,小车会自动纠正。如果最外面的检测到黑线。则小车以更大速度纠正到黑线上去。在算法上,优先处理锐角,直角等外围传感器检测到黑线的状况
目前进度:无PID算法之路况已得全套
具体见PPT且补充只有左边或者右边探得线之况
遗留问题:此套路况分析适用于含PID算法之程序否?
解决方式:进一步探究用和不用PID算法的得到的误差值对电机速度的控制的异同
所得结论:用PID算法者,误差的大小(偏差程度)正负(方向)皆有意义,经过PID系数的运算后直接加到PWM波的输出当中去
不用PID算法者,误差值没有物理意义,只起情况的标记作用,将不同的情况对应到不同的函数中去,且不同的函数中轮子的转速值也已经调成固定值。
目前PPT改动:1.只去对称部分
2.右直角和右斜向上锐角与极右偏情况分列出来,前者采取固定函数,后者使用偏差值更大的PID
小车初始参数值
初始电机速度:60 (阈值-250~250)
初始PID参数: kp=10 ki=0.5 kd=0
电路实测区域结果
实测结果记录
*红外:(原理:模块对白色可检测到的距离要大于黑色的距离。故将红外的检测距离调整到黑色无反射值但白色有的区间之内,有黑线处为1)
*舵机:舵机函数可通过一一对应的数值来调整舵机转动的角度
*马达:只要正输入不为零,负电平为零,无论是正是负,都会正转。但同样的数值,负输入会比正输入转动的快很多,惑矣。同样输入不为零,正电平为零,都会反转。
红外避障模块
物理实测部分
VCC–5V
GND–5V
OUT–(A0~A5 or 0-13任选一个)
只要接通电源,电源指示灯会亮起
若其前有障碍物,另外一边的输出指示也会亮。
中间骑线两模块在无障碍物的情况下不会相互干扰,即无障碍物的情况下二者的输出皆不亮。
串口监视电平输出部分
(1.在Arduino IDE 中通过串口监视器来获取程序在板子上运行过程中的实时数,调用与串口相关的任意函数之前都需要在setup函数中初始化波特率,一般想要获取模块中某一部分输出电压或者其余数据只需要 begin 和 printfln两个函数足矣。
2.红外避障模块输出端输出的是数字电平