先算出轮子转一周编码器的数值(假设为1000),再算出轮子一周的周长(假设为10cm)。
那么要前进1米只需要转1米/10cm等于10圈,10圈编码器数值为10000。
我们只需要在代码里面写出编码器数值如果<10000则让小车前进,如果>10000让小车停止,即可实现控制小车走固定的距离
编码器.c函数(编码器初始化和中断已省略)
int mi=0;
/**********************
编码器
速度读取函数
入口参数:定时器
**********************/
int Read_Speed(int TIMx)
{
int value_1;
switch(TIMx)
{
case 2:
value_1=(short)TIM_GetCounter(TIM2); //读取编码器的值
if(value_1>6230|value_1<-6230) //如果轮子正转一米或反转一米将计数器清零
{
TIM_SetCounter(TIM2,0);
mi++;
}
break;
case 4:
value_1=(short)TIM_GetCounter(TIM4);
if(value_1>6230|value_1<-6230)
{
TIM_SetCounter(TIM4,0);
//mi++;
}
break;
default:value_1=0;
}
return value_1;
}
主函数(只列出主要部分)
if(mi<1)
{
Load(2250,2200);
}
else
{
Load(0,0);
}