循迹传感器容易受反光、光斑、震动跳变,防抖本质:多次采样判断,单次突变不生效
找豆包写防抖循迹,改善效果
多次采样防抖(推荐,占用资源小)
思路:连续N次采样相同,才认定有效;这里用3次采样
// 传感器读取函数,返回 0黑线 / 1白线,自己根据硬件改
uint8_t Read_Track(void)
{
return HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0);
}
// 防抖函数
uint8_t Track_Filter(void)
{
uint8_t val;
uint8_t cnt = 0;
for(uint8_t i = 0; i < 3; i++)
{
val = Read_Track();
if(val == 1) cnt++;
HAL_Delay(2); // 间隔2ms采样
}
// 多数表决:3次里2次以上为1就输出1,否则0
return (cnt >= 2) ? 1 : 0;
}