金牌会员
 
- 积分
- 1028
- 金钱
- 1028
- 注册时间
- 2019-5-27
- 在线时间
- 142 小时
|
本帖最后由 清夏 于 2019-9-17 19:16 编辑
红外寻迹小车走方格时如何准确计数? 前两天在做小车,硬件软件都搭好了,可就是在用红外模块走方格的时候红外计数老是出问题,导致小车停不到正确的位置。我估计可能是黑线太宽导致小车多计数,也是感觉自己学习的比较多了,就小试牛刀,改了一下小车记黑格的程序,还真的很管用(开心2333),具体程序如下:
u8 t=0;
while(1)
{
if(HY==0)
{
delay_ms(1);
if(HY==1)
t++;
}
}
我在这里解释一下这个函数的意思,我首先定义了一个t用来记走过黑线的个数(当然一开始当然t=0啦),然后 if(HY==0)就是说如果红外没有检测到黑线,就开始延时函数delay_ms(1)延时1ms,这时如果检测到了黑线也就是if(HY==1),那么就是走了一个黑线,t就+1,如果没有当然就重新开始了(因为我写的是死循环,会不断重复检测的),这样也就是说只要小车进入黑线t就会+1(小车在黑线里,或者从黑线出来都不满足一开始的HY==0,就会避开t,也就不会造成检测黑线次数过多啦),妙吧(滑稽,到最后他们却没用我的程序,改了一个原理相同的。。。行吧,毕竟现在没什么成绩,人微言轻的,慢慢来吧)。
什么是定时器?
顾名思义。。。定时器就是用来计时的(我也不信。。。可事实确实是这样)
定时器的分类?
对于STM32F103RCT6芯片来说,有两个高级定时器、四个通用定时器、两个基本定时器
高级定时器(TIM1、TIM8)带死区控制盒紧急刹车
通用定时器(TIM2~TIM5)定时计数、PWM输出、输入捕获、输出比较
基本定时器(TIM6、TIM7)主要用于驱动DAC
通用定时器的功能?
1、有16位可编程预分频器,
2、4个独立通道:单脉冲模式输出、PWM输出、输入捕获、输出比较
3、可以产生中断
|
|