首页 智能循迹小车C程序完美详尽

智能循迹小车C程序完美详尽

举报
开通vip

智能循迹小车C程序完美详尽文件编码(GHTU-UITID-GGBKT-POIU-WUUI-8968)智能循迹小车C程序完美详尽/*-----------------------------------------------------------------------------小车运行主程序---------------------------------------------------------------------------简介:@模块组成:红外对管检测模块----五组对管,五个信号采集端口直流电机驱动模块----驱动两...

智能循迹小车C程序完美详尽
文件编码(GHTU-UITID-GGBKT-POIU-WUUI-8968)智能循迹小车C程序完美详尽/*-----------------------------------------------------------------------------小车运行主程序---------------------------------------------------------------------------简介:@模块组成:红外对管检测模块----五组对管,五个信号采集端口直流电机驱动模块----驱动两个直流电机,另一个轮子用万向轮单片机最小系统------用于烧写程序,控制智能小车运动@功能简介:在白色地面或皮质上用黑色胶带粘贴出路线路径宽度微大于相邻检测管间距。这样小车便可在其上循迹运行。@补充说明:该程序采取“右优先”的原则:即右边有黑线向右转,若无,前方有黑线,向前走,若无,左边有黑线,向左转,若全无,从右方向后转。程序开头定义的变量的取值是根据我的小车所调试选择好的,如果采用本程序,请自行调试适合自己小车的合适参数值。编者:陈尧,黄永刚(江苏大学电气学院二年级,三年级)1.假定:IN1=1,IN3=1时电机正向转动,必须保证本条件2.假定:遇到白线输出0,遇到黑线输出1;如果实际电路是:遇到白线输出1,遇到黑线输出0,这种情况下只需要将第四,第五句改成:#definem01#definem10即可。3.说明1:直行---------------速度full_speed_left,full_speed_right.转弯,调头速度------correct_speed_left,correct_speed_right.微小校正时---------高速轮full_speed_left,full_speed_right;低速轮correct_speed.可以通过调节第六,七,八,九,十条程序,改变各个状态下的占空比(Dutycycle),以求达到合适的转弯,直行速度检测到黑线到启动转动的时间间隔在黑线上到脱离黑线的时间差作为判断中心位置是否进入黑线的标志,由于运行的粗糙性和惯性,常取其他对管的输出信号作为判断条件若先检测到左边黑线,并且左边已出黑线,判断右端是否压黑线时间拖延----------------------------------------------------------------------------------------------------------------*/#include<>#defineucharunsignedchar#defineuintunsignedint#definem01//黑线m1,白线m0#definem10#definefull_speed_left40//方便调节各个状态的占空比,可用参数组:(30,35,6,25,30,68000,27000,500);#definefull_speed_right45//(40,45,6,25,30,68000,27000,500);#definecorrect_speed6//校正时的低速轮的占空比#defineturn_speed_left25#defineturn_speed_right30#definelenth68000//测试数据:10000--》100--》500--》2000--80000--76000--68000#definewidth27000//500--》10-->2000--》60000--30000---》27000#definecheck_right500//2000--》20--》200--》500#definemidlleft1#definemidrright5ucharDuty_left,Duty_right,i=0,j=0;//左右占空比标志,取1--100sbitIN1=P2^0;sbitIN2=P2^1;sbitIN3=P2^2;sbitIN4=P2^3;sbitENA=P1^0;sbitENB=P1^1;//循迹口五组红外对管,依次对应从左往右第1,2,3,4,5五组sbitleft1=P1^6;sbitleft2=P1^5;sbitmid3=P1^4;sbitright4=P1^3;sbitright5=P1^2;voidline_left();voidline_right();voidline_straight()reentrant;//----------------------------------------voiddelay(longintDelay_time)//延时函数{uintt=Delay_time;while(t--);}//-----------------------------------------voidinit()//定时器初始化{left1=m0;//初始化left2=m0;//白线位置mid3=m1;//黑线位置right4=m0;right5=m0;TMOD|=0x01;TH0=(65536-66)/256;TL0=(65536-66)%256;EA=1;ET0=1;TR0=1;ENA=1;//使能端口,初始化ENB=1;}//--------------------------------------------voidtime0(void)interrupt1//中断程序{i++;//调速在中断中执行j++;if(i<=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)/256;//取约150HZ,12M晶振,每次定时66us,分100次,这样开头定义的变量正好直接 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示占空比的数值TL0=(65536-66)%256;}//-----------------------------------------------voidcorrect_left()//向左校正,赋值{Duty_left=correct_speed;Duty_right=full_speed_right;IN1=1;IN2=0;IN3=1;IN4=0;}//------------------------------------------------voidcorrect_right()//向右校正,赋值{Duty_left=full_speed_left;Duty_right=correct_speed;IN1=1;IN2=0;IN3=1;IN4=0;}//--------------------------------------------------voidturn_left()//左转,赋值{Duty_left=turn_speed_left;Duty_right=turn_speed_right;IN1=0;//转弯时一个正转,一个反转,IN2=1;IN3=1;IN4=0;}//---------------------------------------------------voidturn_right()//右转,赋值{Duty_left=turn_speed_left;Duty_right=turn_speed_right;IN1=1;//转弯时一个正转,一个反转,IN2=0;IN3=0;IN4=1;}//-----------------------------------------------------voidstraight()//直走,赋值{Duty_left=full_speed_left;//左右电机占空比初始化,调节直线运动速度Duty_right=full_speed_right;//鉴于左右轮电机内部阻力不同,故占空比取不同值,这组值需要单独写程序取值IN1=1;IN2=0;IN3=1;IN4=0;}//-----------------------------------------------------voidline_straight()reentrant//函数名后加reentrant可以递归调用,//一直走黑直线时{straight();if(right5==m1){line_right();}elseif(left1==m1){line_left();}elseif(left2==m1)//防止校正时,小车冲出过大,导致2,4号检测管屏蔽了两端检测管的检测,避免其走直线时出轨while(left2==m1){correct_left();if(right5==m1){line_right();gotolabel3;}elseif(left1==m1){line_left();gotolabel3;}}elseif(right4==m1)//防止校正时,小车冲出过大,导致2,4号检测管屏蔽了两端检测管的检测,避免其走直线时出轨while(right4==m1){correct_right();if(right5==m1){line_right();gotolabel3;}elseif(left1==m1){line_left();gotolabel3;}}elseif((left1==m0)&&(left2==m0)&&(mid3==m0)&&(right4==m0)&&(right5==m0)){straight();//delay(lenth);while(right4==m0)//本来应该是用mid3,但是为了提高灵敏度,选择right4;向左时,可取left2对管{turn_right();}if(mid3==m1){line_straight();}}label3:;//什么都不做}//-------------------------------------------------------------------------voidline_right()//右边有黑线时{straight();//这里的直走是在不管红外检测结果的直行delay(lenth);if(mid3==m1){turn_right();//执行向右转的赋值label:delay(width);//由width值决定转弯时mid3经过黑线宽度时所需要的时间if(mid3==m0)while(right4==m0){}elsegotolabel;}elseif(mid3==m0){turn_right();while(right4==m0){}if(midr==m1){line_straight();}}}//-----------------------------------------------------------------voidline_left()//左边出现黑线时{while(left1==m1){if(right5==m1){line_right();gotolabel2;}}delay(check_right);//左边遇到黑线时,左边出了黑线之后,继续延时一段时间,判断右边是否遇到黑线,//若遇到黑线,执行line_right()函数if(right5==m1){line_right();gotolabel2;}if((mid3==m1)||(left2==m1)||(right4==m1)){line_straight();}else{while(left2==m0){turn_left();}if(midl==m1)line_straight();}label2:;}//--------------------------------------------------------------------voiddetect_infrared()//循迹,红外检测{if(right5==m1){line_right();}elseif(left1==m1){line_left();}elseif(left2==m1){correct_left();}elseif(right4==m1){correct_right();}elseline_straight();}//--------------------------------------voidmain(void)//主程序部分{init();while(1)//循环检测红外对管采集的电平信号{detect_infrared();}}
本文档为【智能循迹小车C程序完美详尽】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
is_613278
熟悉会计成本计算,能在财务事物处理独挡一面。
格式:doc
大小:110KB
软件:Word
页数:0
分类:
上传时间:2021-09-15
浏览量:1