循迹小车编程

循迹小车编程

ID:40837650

大小:16.11 KB

页数:8页

时间:2019-08-08

循迹小车编程_第1页
循迹小车编程_第2页
循迹小车编程_第3页
循迹小车编程_第4页
循迹小车编程_第5页
资源描述:

《循迹小车编程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、/*-----------------------------------------------------------------------------小车运行主程序---------------------------------------------------------------------------1.假定:IN1=1,IN3=1时电机正向转动,必须保证本条件2.假定:遇到白线输出0,遇到黑线输出1;如果实际电路是:遇到白线输出1,遇到黑线输出0,这种情况下只需要将第四,第五句改成:#definem01#

2、definem10即可。3.说明1:直行,转弯,调头时,速度full_speed_left和full_speed_right微小校正时,高速轮full_speed,低速轮correct_speed可以通过调节第六,七,八条程序,改变各个状态下的占空比(Dutycycle),以求达到合适的转弯,直行速度4.lenth5.width6.mid3作为判断中心位置是否进入黑线的标志,由于运行的粗糙性,取left2

3、

4、mid3

5、

6、right4中的任意一个去检测黑线即可-----------------------------------

7、-----------------------------------------------------------------------------*/#include#defineucharunsignedchar#defineuintunsignedint#definem01//如果实际电路是:遇到白线输出1,遇到黑线输出0,#definem10//这种情况下只需要改成:m0=1;m1=0;即可//#definejudge_leftleft1//本来应该用mid3判断是否遇到黑线停止转动//#def

8、inejudge_rightright5//但考虑到惯性,用最边缘的作判断#definefull_speed_left50//方便调节各个状态的占空比,//左轮//可用参数组:(30,35,6,25,30,68000,27000,500);(30,35)#definefull_speed_right50//右轮//#definecorrect_speed35//校正时的低速端的占空比//#defineturn_speed_left20#defineturn_speed_right20//(25,30)--(10,15)--(1

9、8,23)//定义反应时间#definelenth40000//length检测到黑线到启动转动的时间间隔10000--》100--》500--》2000--80000--76000--68000#definewidth300//mid3在黑线上到脱离黑线的时间差500--》10-->2000--》60000--30000---》27000#definecheck_right500//check_right若先检测到左边黑线,并且左边已出黑线,判断右端是否压黑线时间拖延2000--》20--》200--》500//#defin

10、eflagleft2

11、

12、mid3

13、

14、right4ucharDuty_left,Duty_right,i=0,j=0;//左右占空比标志,取1--100ucharENA=0,ENB=0;//A为左,B为右sbitIN1=P2^0;//左电机0正转右拐sbitIN2=P2^1;sbitIN3=P2^2;//右电机0正转左拐sbitIN4=P2^3;//sbitENA=P1^0;//sbitENB=P1^1;//循迹口五个红外传感器sbitleft1=P1^0;//白sbitleft2=P1^1;//白sbitmid3=P1^2;/

15、/黑线位置,遇到白线输出0,遇到黑线输出1;sbitright4=P1^3;//白sbitright5=P1^4;//白voiddelay(longintDelay_time)//延时函数{uintt=Delay_time;while(t--);}voidinit()//定时器初始化{TMOD

16、=0x01;TH0=(65536-66)/256;TL0=(65536-66)%256;EA=1;ET0=1;TR0=1;}voidtime0(void)interrupt1//中断程序{i++;//调速在中断中执行j++;if(i<=

17、Duty_left)//调节占空比ENA=1;//使能elseENA=0;if(i>100)//完成了一个周期{ENA=1;i=0;}if(j<=Duty_right)ENB=1;elseENB=0;if(j>100){ENB=1;j=0;}TH0=(65536-66)/25

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。