智能寻迹小车以及程序修订稿
智能循迹小车___设计报告
智能循迹小车___设计报告设计报告:智能循迹小车一、设计背景智能循迹小车是一种能够通过感知地面上的线条进行导航的小型机器人。
循迹小车可以应用于许多领域,如仓库管理、物流配送、家庭服务等。
本设计旨在开发一款功能强大、性能稳定的智能循迹小车,以满足不同领域的需求。
二、设计目标1.实现循迹功能:小车能够准确地识别地面上的线条,并按照线条进行导航。
2.提供远程控制功能:用户可以通过无线遥控器对小车进行控制,包括前进、后退、转向等操作。
3.具备避障功能:小车能够识别和避开遇到的障碍物,确保行驶安全。
4.具备环境感知功能:小车能够感知周围环境,包括温度、湿度、光照等参数,并将数据传输给用户端。
5.高稳定性和可靠性:设计小车的硬件和软件应具备较高的稳定性和可靠性,以保证长时间的工作和使用。
三、设计方案1.硬件设计:(1) 采用Arduino控制器作为主控制单元,与传感器、驱动器等硬件模块进行连接和交互。
(2)使用红外传感器作为循迹传感器,通过检测地面上的线条来实现循迹功能。
(3)使用超声波传感器来检测小车前方的障碍物,以实现避障功能。
(4)添加温湿度传感器和光照传感器,以提供环境感知功能。
(5)将无线模块与控制器连接,以实现远程控制功能。
2.软件设计:(1) 使用Arduino编程语言进行程序设计,编写循迹、避障和远程控制的算法。
(2)设计用户界面,通过无线模块将控制信号发送给小车,实现远程控制。
(3)编写数据传输和处理的程序,将环境感知数据发送到用户端进行显示和分析。
四、实施计划1.硬件搭建:按照设计方案中的硬件模块需求,选购所需元件并进行搭建。
2.软件开发:根据设计方案中的软件设计需求,编写相应的程序并进行测试。
3.功能调试:对小车的循迹、避障、远程控制和环境感知功能进行调试和优化。
4.性能测试:使用不同场景和材料的线条进行测试,验证小车的循迹性能。
5.用户界面开发:设计用户端的界面,并完成与小车的远程控制功能的对接。
智能循迹避障小车完整程序(亲测好使)
智能循迹避障小车完整程序(亲测好使)/*******************************************//利用51定时器产生PWM波来调节电机速度//速度变化范围从0-100可调//使用三路做寻迹使用,哪一路检测在黑线哪一路为//高电平//没检测到黑线表示有反射对应输出低电平信号*********************************************/#include<>#define uint unsigned int#define uchar unsigned char/*电机四个接口定义*/sbit in1=P0^0;sbit in2=P0^1;sbit in3=P0^2;sbit in4=P0^3;/*计时器*/uchar j,k,i,a,A1,A2,second,minge,minshi;sbit dula=P2^6;sbit wela=P2^7;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar code table2[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1};void delay(uchar i){for(j=i;j>0;j--)for(k=110;k>0;k--);}void display(uchar sh_c,uchar g_c,uchar min_ge,uchar min_shi) {dula=1;P0=table[sh_c];dula=0;P0=0xff;wela=1;P0=0xfb;wela=0;delay(5);dula=1;P0=table[g_c];dula=0;P0=0xff;wela=1;P0=0xf7;wela=0;delay(5);dula=1;P0=table[min_shi];dula=0;P0=0xff;wela=1;P0=0xfe;wela=0;delay(5);dula=1;P0=table2[min_ge];dula=0;P0=0xff;wela=1;P0=0xfd;wela=0;delay(5);}/*左、中、右三路循迹传感器接口定义*/ sbit zuo=P1^0; sbit zhong=P1^1;sbit you=P1^2;/*避障接口定义*/sbit bz_zuo=P1^3;sbit bz_zhong=P1^4;sbit bz_you=P1^5;uchar count = 0;/*利用定时器0定时中断,产生PWM波*/ void Init_timer() {TH0 = (65535-10)/256;TL0 = (65535-10)%256;TMOD = 0x01;TR0 = 1;ET0 = 1;EA = 1;}/*左轮速度调节程序*/void zuolun(uchar speed){if(count <= speed) //count计数变量{in1 = 1;in2 = 0;}else{in1 = 0;in2 = 1;}}void youlun(uchar speed) //同上{if(count<= speed){in3 = 1;in4 = 0;}else{in3 = 0;in4 = 1;}}void Inline() //检测黑线信号{uchar temp;temp =P1;switch(temp){case 0x01:zuolun(0); youlun(90);break; //左侧循迹传感器压线,小车向左前修正case 0x02:zuolun(100);youlun(100);break; //中间循迹传感器压线,保持直走此处两值使电机速度保持相同case 0x04:zuolun(90); youlun(0);break; //右侧循迹传感器压线,小车向右前修正case 0x08:zuolun(90); youlun(0);break; //左侧避障传感器有信号小车右转case 0x10:zuolun(90); youlun(0);break; //中间避障传感器有信号小车左转case 0x20:zuolun(90); youlun(0);break; //右侧避障传感器有信号小车左转}/*if(zuo==1){zuolun(10);youlun(50);}else if(zhong==1){zuolun(99);youlun(99);}else if(you==1){zuolun(50);youlun(10);} */}void main() //主函数{Init_timer(); //调用函数while(1){Inline();minge=0;minshi=0;second++;if(second==60)second=0,minge++;A1=second/10;A2=second%10;if(minge==10)minge=0,minshi++;for(a=200;a>0;a--){display(A1,A2,minge,minshi);};}}void Timer0_int()interrupt 1 //定时器中断计数{TH0 = (65535-10)/256;TL0 = (65535-10)%256;count ++;if(count >= 100){count = 0;}}。
《2024年自循迹智能小车控制系统的设计与实现》范文
《自循迹智能小车控制系统的设计与实现》篇一一、引言随着人工智能与自动控制技术的快速发展,智能小车已经广泛应用于各种领域,如物流配送、环境监测、智能家居等。
本文将详细介绍一种自循迹智能小车控制系统的设计与实现过程,该系统能够根据预设路径实现自主循迹、避障及精确控制。
二、系统设计(一)系统概述自循迹智能小车控制系统主要由控制系统硬件、传感器模块、电机驱动模块等组成。
其中,控制系统硬件采用高性能单片机或微处理器作为主控芯片,实现对小车的控制。
传感器模块包括超声波测距传感器、红外线测距传感器等,用于感知周围环境并实时传输数据给主控芯片。
电机驱动模块负责驱动小车行驶。
(二)硬件设计1. 主控芯片:采用高性能单片机或微处理器,具备高精度计算能力、实时响应和良好的可扩展性。
2. 传感器模块:包括超声波测距传感器和红外线测距传感器。
超声波测距传感器用于测量小车与障碍物之间的距离,红外线测距传感器用于检测小车行驶路径上的标志线。
3. 电机驱动模块:采用直流电机和电机驱动器,实现对小车的精确控制。
4. 电源模块:为整个系统提供稳定的电源供应。
(三)软件设计1. 控制系统软件采用模块化设计,包括主控程序、传感器数据处理程序、电机控制程序等。
2. 主控程序负责整个系统的协调与控制,根据传感器数据实时调整小车的行驶状态。
3. 传感器数据处理程序负责对传感器数据进行处理和分析,包括距离测量、方向判断等。
4. 电机控制程序根据主控程序的指令,控制电机的运转,实现小车的精确控制。
(四)系统实现根据设计需求,通过电路设计与焊接、传感器模块的安装与调试、电机驱动模块的安装与调试等步骤,完成自循迹智能小车控制系统的硬件实现。
在软件方面,编写各模块的程序代码,并进行调试与优化,确保系统能够正常运行并实现预期功能。
三、系统功能实现及测试(一)自循迹功能实现自循迹功能通过红外线测距传感器实现。
当小车行驶时,红外线测距传感器不断检测地面上的标志线,并根据检测结果调整小车的行驶方向,使小车始终沿着预设路径行驶。
智能循迹小车-电子设计大赛优选全文
智能寻迹小车总结报告08电本3袁坤朱昊汪武杰1.设计任务:设计并制作了一个智能电动车,通过车前方的感光模块引导小车沿黑色路径运行,并记录小车整个运动过程的时间。
(1)感光模块引导小车运动:小车黑色轨迹白色背景图1如图1,小车运行在以白色背景的黑色轨迹上。
小车在整个运行过程中沿黑色轨迹运动,当黑色轨迹向左转时,小车能够自动左转弯,左转弯灯亮;当黑色轨迹向右转时,小车能够自动右转弯,右转弯灯亮。
(2)小车能记录整个运行过程的时间:在小车开始运行时,单片机控制计时,当小车收到停止指令后,计时器停止计时,并通过小车上的数码管显示小车整个运行过程的时间。
2.程序框图寻迹小车的主程序如下3.系统的具体设计与实现根据设计任务要求,并且根据我们自己的需要而附加的功能,该电路的总体框图可分为几个基本的模块,框图如(图2)所示:红外传感模块3.1设计中选用红外传感器来准确检测黑色寻迹线。
共设置2个传感器,传感器检测到黑色的寻迹线时,输出逻辑电平1,检测不到黑色寻迹线时,输出逻辑电平0。
在小车正前方中间安装两个标号是1号和2号的传感器用于定位寻迹线中心线,如图。
实物图:由电路图可以看出,在整个运行过程中,红外线发射管一直工作,发出红外线,由于黑色对红外线的反射量很小,而白色背景对红外的反射量很大,这样经过红外接收管的电压值的不同,可以判断出小车的运行情况。
当小车在黑色轨迹上正常运行时,1号和2号传感器输出1,当小车右偏时,2号由输出1转变为0,此时单片机驱动电机模块,调控小车左右两轮的转速,调整车身向左转;当小车左偏时,1号由输出1转变为0,单片机调控小车车身向右转。
传感器部分是小车的“眼睛”,只有通过它的引导小车才能正常在轨道上运行。
在小车的调试过程中,遇到了一些问题。
第一,两个传感器中的红外管有时一直感光,有时感光很差;第二,在黑线上运行时,在一些弯路传感器可以判断出来,一些反应迟钝,并且恢复直行的时候,传感器却依然保持上一状态运行。
循迹避障智能小车设计(2023最新版)
循迹避障智能小车设计
循迹避障智能小车设计文档范本:
⒈摘要
本文档旨在详细介绍循迹避障智能小车的设计方案。
介绍了小车的硬件组成、软件设计和算法实现,以及测试结果和优化方案。
⒉引言
介绍循迹避障智能小车的背景和应用场景,解释设计的目的和意义。
⒊系统架构
详细介绍循迹避障智能小车的系统组成,包括传感器模块、控制器、执行器等硬件部分,以及软件部分的整体架构。
⒋传感器设计
说明循迹避障智能小车所使用的传感器,包括红外线传感器、超声波传感器等的选择原因和工作原理,以及如何与控制器进行连接。
⒌控制器设计
介绍循迹避障智能小车的控制器设计,包括主控芯片的选择、引脚分配以及与传感器和执行器的连接方式。
⒍执行器设计
详细说明循迹避障智能小车的执行器设计,包括电机控制模块、转向模块等的选择和工作原理。
⒎算法设计
阐述循迹避障智能小车所采用的算法设计,包括循迹算法和避障算法的原理和实现方法。
⒏系统测试与优化
描述循迹避障智能小车的测试方法和实验结果分析,以及针对存在的问题进行的优化措施。
⒐结论
总结循迹避障智能小车设计的成果,评估其性能和应用前景,并展望未来的发展方向。
⒑附件
提供循迹避障智能小车的原理图、源代码、测试数据等附件,以供读者参考使用。
1⒈法律名词及注释
在文档末尾提供相关法律名词的注释,并进行对应解释,以确保读者对相关法律概念的理解和使用的合法性。
智能小车循迹报告
电工电子实习报告学院:专业班级:学生姓名:指导教师:完成时间:成绩:智能循迹小车设计报告一. 设计要求(1).通过理论学习掌握基本的焊接知识以及电子产品的生产流程。
(2).熟悉掌握手工焊接的方法与技巧。
(3).完成循迹智能小车的安装与调试二. 设计的作用、目的1.利用所学过的基础知识,通过本次电子实习培养独立解决实际问题的能力;2.巩固本课程所学的理论知识和实验技能;3.掌握常用电子电路的一般设计方法,提高设计能力和实验、动手能力,为今后从事电子电路的设计、研制电子产品打下基础。
三.设计的具体实现1. 系统概述智能机器人小车的设计中我们使用的是一体反射式红外对管,所谓一体就是发射管和接受管固定在一起,反射式的工作原理就是接收管接收到的信号是发射管发出的红外光经过反射物的反射后得到的,所以使用红外对管进行循迹时必须是白色地板红外寻迹是利用红外光电对管对路面信号进行检测,经过比较器处理之后,送给软件控制模块进行实时控制,输出相应的信号给驱动芯片驱动电机转动,从而控制整个小车的运动。
(为简化操作,本次实习只安装了两侧的探头)1)行驶直线的控制:利用红外传感器的左右最外端的探头检测黑线,如果全白则说明在道中间,没有偏离轨道,走直线;一旦右侧探头检测到黑线,说明小车外侧探头已跑出轨道,让车左拐;同理一旦左侧检测到黑线,说明左侧探头已经出线,执行右拐命令。
2)拐直角弯的控制:当车前探头检测到黑线,执行直走,让车中心探头去检测,一旦探头检测到黑线开始左拐,直到车位探头检测到跳出左拐命令,继续开始执行循迹,通过设置车中间探头与车尾探头的间距,便可以实现拐弯的角度,进而顺利入弯。
小车的硬件主要包括4大模块:即电源模块、电机驱动模块、红外循迹模块、简易控制模块。
系统工作框图如下:2.单元电路设计与分析1)电源模块电源模块电路板LM2596 开关电压调节器是降压型电源管理单片集成电路,能够输出3A 的驱动电流,同时具有很好的线性和负载调节特性。
智能寻迹避障小车报告
智能小车摘要本小车以MSP超低功耗单片机系列MSP430F5438为核心,完成寻迹、避障、测速、测距等功能。
在机械结构上,对普通的小车作了改进,即用一个万用轮来代替两个前轮,使小车的转向更加灵敏。
采用PWM 驱动芯片控制电机,红外传感器来寻迹,超声波传感器来避障、测距,霍尔传感器测速。
基于可靠的硬件设计和稳定的软件算法,实现题目要求。
而且附加实现显示起跑距离、行驶时间、行驶速度等扩展功能。
关键词:MSP430 寻迹避障测速测距AbstractThis design is controlled with the MCU(MSP430F5438) to complete the function of finding trace, detecting medal, avoiding barrier, tending to light and measure speed. By using infrared sensor to locate the trace, photo, electrical sense to measure the light、metal sensor to detect the metal and ultrasonic wave sensor to avoid the barrier. Based on the reliable hardware and software designing, this design is well fulfilled. In addition, such extended functions as measuring the distance and recording the running-time are completed well. On the level of machine structure, we use a perfect wheel to make the car turning more convenience.Key Words: MSP430 find trace detect medal avoid barrier and tend to light.一、系统设计1.1设计要求1、基本要求(1) 小车跑道如下图所示,要求小车在跑道上实现寻迹、避障、测距、测速等基本功能。
机器人创新实验智能巡线小车报告
机器人创新实验智能巡线小车报告一、引言智能巡线小车是一种基于机器视觉和控制系统的机器人,能够在预定的路径上进行准确的行驶。
本报告旨在总结机器人创新实验中智能巡线小车的设计过程、关键技术和性能评估,以及未来的改进方向。
二、设计过程1.硬件设计智能巡线小车的硬件设计包括底盘、传感器和控制模块。
底盘采用高强度材料制作,轮子安装在底盘上,并由直流电机驱动。
传感器主要包括摄像头和红外线传感器,摄像头用于采集路径图像,红外线传感器用于检测小车是否偏离轨道。
控制模块由单片机和驱动电路组成,用于接收传感器数据并控制电机运动。
2.软件设计智能巡线小车的软件设计主要包括路径识别和控制算法。
路径识别算法通过对摄像头采集到的图像进行处理,提取出图像中的路径信息。
控制算法根据传感器数据判断小车是否偏离轨道,并相应调整电机速度和转向角度,使小车保持在预定的路径上。
三、关键技术1.图像处理图像处理是智能巡线小车的核心技术之一、通过对摄像头采集的图像进行二值化、滤波和边缘检测等操作,可以提取出路径信息,并进行路径的识别和跟踪。
2.控制算法控制算法是智能巡线小车的另一项关键技术。
通过对传感器数据进行实时分析和判断,可以实现小车对路径的跟踪和调整。
常用的控制算法包括PID控制和模糊控制等。
四、性能评估为评估智能巡线小车的性能,可以从准确性、稳定性和速度等方面进行考察。
在实际测试中,可以将小车放置在不同形状和颜色的路径上,观察小车能否准确识别路径并保持在上面。
同时,可以通过测量小车的行驶速度和转向精度来评估小车的稳定性和速度。
五、改进方向尽管智能巡线小车在设计上已经取得了一定的成绩,但还存在一些改进的方向。
首先,可以加强图像处理算法,提高路径识别的准确性和鲁棒性。
其次,可以进一步优化控制算法,提高小车对路径的精准度和响应速度。
此外,可以将智能巡线小车与其他机器人技术相结合,如避障、自主导航等,实现更复杂的任务。
六、结论智能巡线小车是一种基于机器视觉和控制系统的机器人,能够在预定的路径上进行准确的行驶。
智能循迹小车程序
IN5=0;
IN6=1;
IN7=0;
IN8=1;
dj1=15;
dj2=15;
}
void turnleft2()//小车前进向左微调
{
IN5=0;
IN6=1;
IN7=0;
IN8=1;
dj1=7;
dj2=20;
}
void turnright2()//小车前进向右微调
{
IN5=0;
IN6=1;
IN7=0;
{
turnright2();
}
if(HW1==0&&HW2==1&&HW3==1&&HW4==1)
{
turnleft2();
}
if(HW1==1&&HW2==1&&HW3==1&&HW4==0)
{
turnright2();
}
if(num2==3&&HW1==0&&HW2==0&&HW3==0&&HW4==0)
sbit ENB=P3^3;
sbit IN5=P2^4;//电机
sbit IN6=P2^5;
sbit IN7=P2^6;
sbit IN8=P2^7;
void delay(uint x)//延时1ms
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
void qianjin()//小车前进
{
turnright2();
}
循迹小车报告精选全文完整版
可编辑修改精选全文完整版创新制作循迹小车制作报告班级:学号:姓名:一、设计方案路面检测模块电路检测路面信息,区分黑色与白面,并形成相对应的高电平与低电平提供给单片机;单片机对路面循迹模块提供的高低电平进行分析,并形成相应的对策(直行、左转、右转和停止等),并将其转化成对应的电压输出给电机驱动模块;电机驱动模块根据单片机提供的电压信号驱动对应的电机,得到与对策相同的执行动作;电源模块电路为三个模块提供所需要的电。
电路框图如下图所示:电路框图二、路面检测模块工作原理一对光电开光的发射管不停的发射红外光,经过路面发射回来的被接受管接收到。
因为白色路面和黑线对光的反射不同,所以正对白色路面的光电对管的接收管接收到更多的红外光,而正对黑线的光电对管的接收管收到较少的红外光。
经过光电开关的接收电路将接收到红外光的多少转化为正相关的电流大小,并进一步转化成接收电路的输出电压(A点电压)的较小值和较大值。
输出电压的较小值和较大值进一步与一个居中的基准电压分别进行比较,对应比较器的输出端(C点)分别为高电平还是低电平,并进一步输出给单片机,同时对应指示发光管的不亮与亮。
路面循迹模块电路如下图所示:D1路面循迹模块电路三、单片机最小系统单片机最小系统包括了时钟电路和复位电路。
时钟电路为单片机工作提供基本时钟,复位电路用于将单片机内部各电路的状态恢复到初始值。
单片机是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号下严格地按时序进行工作。
时钟电路用于产生单片机工作所需要的时钟信号。
时钟信号的产生是在MCS-51系列单片机内部有一个高增益反相放大器,其输入端引脚为XTAL1,其输出端引脚为XTAL2。
只要在XTAL1和XTAL2之间跨接晶体振荡器和微调电容,就可以构成一个稳定的自己振荡器。
复位电路由一个按键、电解电容和电阻组成,它是使CPU 和系统中的其他功能部件都恢复到一个确定的初始状态,并从这个状态开始工作。
《2024年自循迹智能小车控制系统的设计与实现》范文
《自循迹智能小车控制系统的设计与实现》篇一一、引言随着科技的飞速发展,智能小车在物流、军事、科研等领域的应用越来越广泛。
自循迹智能小车作为其中的一种重要应用,其控制系统的设计与实现显得尤为重要。
本文将详细介绍自循迹智能小车控制系统的设计思路、实现方法及实验结果。
二、系统设计1. 硬件设计自循迹智能小车控制系统硬件主要包括:电机、车轮、控制器、传感器等部分。
其中,电机和车轮是驱动小车运动的核心部件,控制器负责处理传感器数据并发出控制指令,传感器则用于感知小车周围环境信息。
在硬件设计过程中,我们需要根据实际需求选择合适的电机、控制器及传感器。
例如,电机应具备较高的转矩和转速,以保障小车的运动性能;控制器应具备强大的数据处理能力和快速响应能力,以保证小车的循迹效果;传感器应具备较高的灵敏度和稳定性,以准确感知周围环境信息。
2. 软件设计软件设计是自循迹智能小车控制系统的核心部分。
我们采用模块化设计思想,将软件系统分为传感器数据处理模块、路径规划模块、控制算法模块等。
传感器数据处理模块负责收集并处理传感器数据,为路径规划模块提供准确的环境信息。
路径规划模块根据传感器数据和预设的循迹算法,规划出最优路径。
控制算法模块则根据路径规划结果,发出控制指令给电机,驱动小车按照规划的路径行驶。
三、实现方法1. 传感器选择与数据处理我们选择了红外线传感器作为循迹的主要传感器。
红外线传感器可以感知地面的黑白线,将循迹线转化为电信号,为路径规划提供依据。
同时,我们还选用了超声波传感器和摄像头等设备,用于感知小车周围的环境信息,提高循迹的准确性和安全性。
在数据处理方面,我们采用了数字滤波技术,对传感器数据进行处理,以消除噪声干扰,提高数据的准确性。
此外,我们还采用了卡尔曼滤波算法对位置信息进行融合,以提高循迹的稳定性。
2. 路径规划与控制算法路径规划模块采用了一种基于A算法的循迹算法。
A算法是一种常用的路径规划算法,具有较高的搜索效率和准确性。
《2024年自循迹智能小车控制系统的设计与实现》范文
《自循迹智能小车控制系统的设计与实现》篇一一、引言随着人工智能技术的发展和广泛应用,智能小车系统已经逐渐成为了现代自动化和智能化领域的重要分支。
本文旨在介绍一款自循迹智能小车控制系统的设计与实现过程,从系统需求分析、硬件设计、软件设计、实现与测试等方面详细阐述其设计思路和实现方法。
二、系统需求分析自循迹智能小车控制系统主要应用于自动导航、避障等场景,因此其需求主要包括以下几个方面:1. 能够在各种复杂环境中实现自动导航和避障功能;2. 具备较高的稳定性和可靠性,能够适应不同路面条件;3. 控制系统应具有较高的智能化程度,便于用户操作和维护;4. 系统的硬件和软件设计应具有良好的可扩展性,方便后续升级和维护。
三、硬件设计自循迹智能小车控制系统的硬件设计主要包括电机驱动模块、传感器模块、主控模块等部分。
1. 电机驱动模块:采用直流电机和电机驱动器,通过PWM 信号控制电机的转速和方向,实现小车的运动控制。
2. 传感器模块:包括红外传感器、超声波传感器等,用于检测小车周围的环境信息,实现自动导航和避障功能。
3. 主控模块:采用单片机或微控制器作为主控芯片,负责控制小车的运动和传感器数据的处理。
在硬件设计过程中,需要充分考虑电路的稳定性和抗干扰能力,以及各个模块之间的接口兼容性和通信协议。
四、软件设计自循迹智能小车控制系统的软件设计主要包括操作系统、算法设计、程序设计等部分。
1. 操作系统:采用嵌入式操作系统或实时操作系统,以保证系统的稳定性和实时性。
2. 算法设计:包括导航算法、避障算法等,用于处理传感器数据和控制小车的运动。
其中,导航算法可采用基于路径规划的算法或基于视觉识别的算法;避障算法可采用基于距离阈值的算法或基于机器学习的算法。
3. 程序设计:包括主程序、中断程序、通信程序等,负责控制系统的整体运行和各个模块之间的协调。
在程序设计过程中,需要充分考虑代码的可读性、可维护性和可扩展性。
五、实现与测试在完成硬件和软件设计后,需要进行系统的实现与测试。
《2024年自循迹智能小车控制系统的设计与实现》范文
《自循迹智能小车控制系统的设计与实现》篇一一、引言随着科技的飞速发展,智能小车作为智能交通系统的重要组成部分,已经广泛应用于军事、工业、民用等多个领域。
自循迹智能小车控制系统的设计与实现,成为了智能化进程中一个关键环节。
本文旨在阐述自循迹智能小车控制系统的设计原理和实现过程,分析系统结构与功能,为相关研究与应用提供参考。
二、系统设计1. 硬件设计自循迹智能小车控制系统硬件主要包括:电机驱动模块、传感器模块、主控制器模块等。
其中,电机驱动模块负责驱动小车前进、后退、转向等动作;传感器模块包括红外传感器、超声波传感器等,用于检测小车周围环境及路径信息;主控制器模块采用高性能微控制器,负责协调各模块工作,实现小车的自主循迹。
2. 软件设计软件设计包括控制系统算法设计和程序编写。
控制系统算法主要包括路径识别算法、速度控制算法、避障算法等。
程序编写采用模块化设计思想,将系统功能划分为多个模块,如电机控制模块、传感器数据采集模块、路径识别与决策模块等。
各模块之间通过通信接口进行数据交换,实现小车的自主循迹。
三、实现过程1. 传感器数据采集与处理传感器模块负责采集小车周围环境及路径信息,包括红外传感器、超声波传感器等。
这些传感器将采集到的数据传输至主控制器模块,经过数据处理与分析,提取出有用的信息,如障碍物位置、路径边界等。
2. 路径识别与决策路径识别与决策模块根据传感器数据,判断小车当前位置及目标路径,并制定相应的行驶策略。
当小车偏离目标路径时,系统会自动调整行驶方向,使小车重新回到目标路径上。
此外,避障算法也在此模块中实现,当检测到障碍物时,系统会及时调整小车的行驶方向,避免与障碍物发生碰撞。
3. 电机控制与驱动电机控制与驱动模块根据主控制器的指令,控制电机的运转,实现小车的前进、后退、转向等动作。
通过调整电机的转速和转向,可以实现对小车速度和行驶方向的精确控制。
四、实验结果与分析通过实验测试,自循迹智能小车控制系统能够在不同环境下实现自主循迹和避障功能。
智能循迹小车报告.doc
智能循迹小车报告.doc一、前言智能循迹小车是一款基于机器人技术的智能装备,主要实现对机器人的智能控制和追踪操作,适用于各种场景中的巡航及运输。
智能循迹小车在各类工业现场、家庭生活中得到广泛应用。
本报告将对智能循迹小车的相关技术、应用及未来发展进行分析与总结。
二、技术原理智能循迹小车的核心技术是基于计算机视觉和机器人导航领域中的视觉跟踪技术,实现对目标的追踪和路径规划。
该技术主要包括如下步骤:1. 传感器采集数据:智能循迹小车配备了多种传感器,如激光雷达、摄像头、红外线传感器等,用于采集目标物体的信息;2. 数据处理:接收传感器采集的数据后,智能循迹小车通过算法处理,将数据转化成可供计算机识别的数字信号;3. 目标检测:将数字信号传入计算机,通过人工智能、机器学习等技术实现对目标的识别、分类和跟踪;4. 路径规划:根据目标的位置和运动轨迹,智能循迹小车通过算法实现路径规划和自主导航,避开障碍物,寻找最短路径;5. 控制执行:根据路径规划生成的控制信号,智能循迹小车对轮子和电机执行精确的控制,实现移动和自动导航。
三、应用现状智能循迹小车在生产、物流、安防、家庭生活等众多领域得到广泛应用,以下列举几种应用场景。
1. 工业自动化:在工业生产自动化方面,智能循迹小车可以用于运输原材料和成品、仓库货物的自动化管理、装配线物料转移等。
机器人可以根据目标位置和运动方向,自动运行到指定位置,精准地完成操作任务。
2. 物流配送:智能循迹小车可以用于大型物流中心的快递配送、医院内的物资搬运等场景。
机器人通过自主路径规划和导航,可以自动避开障碍物,并将货物准确地送到目的地,提高了生产效率和准确性。
3. 家庭服务:智能循迹小车还可应用于家庭服务领域,如智能扫地机器人、智能花盆机器人等。
机器人自动巡航,清洁地面,喷水浇花,实现人机交互。
4. 安防监控:在安防监控领域,智能循迹小车可以应用于产品物流追踪、边境巡逻等领域。
机器人对区域进行自动巡航,通过多种传感器检测目标,将异常情况反馈给监控中心,实现精确的实时监控。
《2024年自循迹智能小车控制系统的设计与实现》范文
《自循迹智能小车控制系统的设计与实现》篇一一、引言随着科技的不断进步,自动化、智能化成为了各个领域发展的趋势。
在机器人领域中,自循迹智能小车以其简单实用、灵活性高等特点受到了广泛的关注。
本文旨在介绍一款自循迹智能小车的控制系统设计与实现过程,通过对该系统的深入研究与探索,展示其在不同环境下的高效控制能力和实际使用价值。
二、系统概述自循迹智能小车控制系统主要由硬件和软件两部分组成。
硬件部分包括电机驱动模块、传感器模块、电源模块等;软件部分则负责控制算法的实现,包括路径规划、避障、速度控制等。
该系统通过传感器获取环境信息,利用控制算法对小车进行精确控制,实现自循迹功能。
三、硬件设计1. 电机驱动模块:采用舵机驱动模块,通过PWM信号控制电机的转速和方向。
2. 传感器模块:包括红外线传感器、超声波传感器等,用于检测障碍物、识别路径等信息。
3. 电源模块:采用可充电锂电池供电,通过DC-DC转换器将电源稳定输出给各个模块。
四、软件设计1. 路径规划:根据环境信息,采用基于路径识别的算法进行路径规划。
当小车检测到路径时,通过控制算法调整小车的行进方向和速度,保证小车能够准确沿着路径行驶。
2. 避障功能:通过超声波传感器检测障碍物距离,当检测到障碍物时,控制算法会调整小车的行进方向和速度,避免与障碍物发生碰撞。
3. 速度控制:根据环境信息和任务需求,通过PWM信号控制电机的转速和方向,实现精确的速度控制。
五、系统实现1. 传感器数据采集:通过传感器模块实时获取环境信息,包括路径信息、障碍物距离等。
2. 数据处理与算法实现:将传感器数据传输至主控制器,主控制器通过算法对数据进行处理和分析,得出小车的行进方向和速度。
3. 控制输出:主控制器将计算结果通过PWM信号输出给电机驱动模块,控制电机的转速和方向,实现小车的精确控制。
六、实验与结果分析1. 实验环境:在室内外不同环境下进行实验,包括平坦路面、崎岖路面、有障碍物等场景。
智能循迹小车C程序(完美_详尽)
/*小车运行主程序简介: @模块组成:红外对管检测模块---- 五组对管,五个信号采集端口直流电机驱动模块 -- 驱动两个直流电机,另一个轮子用万向轮单片机最小系统 ---- 用于烧写程序,控制智能小车运动@ 功能简介:在白色地面或皮质上用黑色胶带粘贴出路线路径宽度微大于相邻检测管间距。
这样小车便可在其上循迹运行。
@ 补充说明:该程序采取“右优先”的原则:即右边有黑线向右转,若无,前方有黑线,向前走,若无,左边有黑线,向左转,若全无,从右方向后转。
程序开头定义的变量的取值是根据我的小车所调试选择好的,如果采用本程序,请自行调试适合自己小车的合适参数值。
编者:陈尧,黄永刚(江苏大学电气学院二年级,三年级)1. 假定:IN仁1,IN3=1 时电机正向转动,必须保证本条件2. 假定: 遇到白线输出 0,遇到黑线输出 1;如果实际电路是:遇到白线输出1,遇到黑线输出 0,这种情况下只需要将第四,第五句改成:#define m0 1#define m1 0即可。
3. 说明 1:直行--------- 速度 full_speed_left,full_speed_right.转弯 , 调头速度 - c orrect_speed_left,correct_speed_right.微小校正时 ------ 高速轮 full_speed_left,full_speed_right;低速轮 correct_speed.可以通过调节第六,七,八,九,十条程序,改变各个状态下的占空比( Duty cycle ) ,以求达到合适的转弯,直行速度4.lenth ---- length 检测到黑线到启动转动的时间间隔5. width ---- mid3 在黑线上到脱离黑线的时间差6. mid3 ----- 作为判断中心位置是否进入黑线的标志,由于运行的粗糙性和惯性,常取其他对管的输出信号作为判断条件7. check_right 若先检测到左边黑线,并且左边已出黑线,判断右端是否压黑线时间拖延*/#include<reg52.h>#define uchar unsigned char#define uint unsigned int#define m0 1〃黑线 ml,白线 m0#define m1 0#define full_speed_left 40 // 方便调节各个状态的占空比 , 可用参数组:(30,35,6,25,30,68000,27000,500 );#define full_speed_right 45 //(40,45,6,25,30,68000,27000,500 );#define correct_speed 6 // 校正时的低速轮的占空比#define turn_speed_left 25#define turn_speed_right 30#define lenth 68000 // 测试数据:10000-- 》100-- 》500-- 》2000--80000--76000--68000#define width 27000 //500-- 》10-->2000-- 》60000--30000--- 》27000#define check_right 500 //2000--#define midl left1 》20-- 》200-- 》500#define midrright5ucharDuty_left,Duty_right,i=0,j=0; //左右占空比标志,取 1--100 sbit IN仁 P2A0;sbit IN2=P2A1;sbit IN3=P2A2;sbit IN4=P2A3;sbit ENA=P1A0;sbitENB=P1A1;// 循迹口五组红外对管,依次对应从左往右第 1,2,3,4,5 五组 sbitleft1 =P1A6;sbit left2 =P1A5;sbit mid3 =P1A4;sbit right4=P1A3;sbit right5=P1A2;void line_left();void line_right();voidline_straight()reentrant;// ------------------------{uint t=Delay_time;while(t--);}// -------------------------void init() // 定时器初始化{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;}// ----------------------------void time0(void)interrupt 1 // 中断程序{i++; // 调速在中断中执行j++;if(i<=Duty_left)ENA=1;else ENA=0;if(i>100){ENA=1;i=0;}if(j<=Duty_right)ENB=1;else ENB=0;if(j>100){ENB=1;j=0;}TH0=(65536-66)/256; // 取约 150HZ, 12M 晶振,每次定时 66us, 分 100 次,这样开头定义的变量正好直接表示占空比的数值TL0=(65536-66)%256;}// ------------------------------void correct_left()// 向左校正,赋值{Duty_left =correct_speed;Duty_right=full_speed_right;IN1=1;IN2=0;IN3=1;IN4=0;}// ------------------------------void correct_right()// 向右校正,赋值{Duty_left =full_speed_left;Duty_right=correct_speed;IN1=1;IN2=0;IN3=1;IN4=0;}// --------------------------------void turn_left()// 左转,赋值{Duty_left =turn_speed_left;Duty_right=turn_speed_right;IN1=0; // 转弯时一个正转,一个反转,IN2=1;IN3=1;IN4=0;}// --------------------------------void turn_right()// 右转,赋值{Duty_left =turn_speed_left;Duty_right=turn_speed_right;IN1=1; // 转弯时一个正转,一个反转,IN2=0;IN3=0;IN4=1;}// ----------------------------------void straight() // 直走,赋值{Duty_left =full_speed_left; // 左右电机占空比初始化,调节直线运动速度Duty_right=full_speed_right; // 鉴于左右轮电机内部阻力不同,故占空比取不同值,这组值需要单独写程序取值IN1=1;IN2=0;IN3=1;IN4=0;}// ----------------------------------void line_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();goto label3;}else if(left1==m1){line_left();goto label3;}}elseif(right4==m1) // 防止校正时,小车冲出过大,导致 2,4 号检测管屏蔽了两端检测管的检测,避免其走直线时出轨while(right4==m1){correct_right();if(right5==m1){ line_right(); goto label3;}else if(left1==m1){line_left();goto label3;}}else if((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: ; // 什么都不做}// -----------------------------------------------void line_right() // 右边有黑线时{straight();// 这里的直走是在不管红外检测结果的直行 delay(lenth);if(mid3==m1){turn_right();// 执行向右转的赋值label:delay(width); // 由 width 值决定转弯时 mid3 经过黑线宽度时所需要的时间 if(mid3==m0) while(right4==m0){}elsegoto label;}else if(mid3==m0){turn_right();while(right4==m0){}if(midr==m1){line_straight();}}}// ------------------------------------------void line_left() // 左边出现黑线时{while(left1==m1){if(right5==m1){line_right();goto label2;}delay(check_right);// 左边遇到黑线时,左边出了黑线之后,继续延时一段时间,判断右边是否遇到黑线,// 若遇到黑线,执行 line_right() 函数if(right5==m1){line_right();goto label2;}if((mid3==m1)||(left2==m1)||(right4==m1)){line_straight();} else{while(left2==m0){turn_left();}if(midl==m1) line_straight();}label2: ;}// -------------------------------------------void detect_infrared() // 循迹,红外检测{if(right5==m1){line_right();}elseif(left1==m1){line_left();}elseif(left2==m1){correct_left();}elseif(right4==m1){correct_right();}elseline_straight();}// ------------------------void main(void)// 主程序部分{init();while(1) // 循环检测红外对管采集的电平信号{detect_infrared();}。
智能寻迹避障小车寻迹系统设计修订稿
智能寻迹避障小车寻迹系统设计集团档案编码:[YTTR-YTPT28-YTNTL98-UYTYNN08]第二章智能寻迹避障小车寻迹系统设计1.任务任务一:产生智能寻迹避障小车沿黑线转圈的控制程序;任务二:产生智能寻迹避障小车带状态显示沿黑线转圈的控制程序;2.要求(1)能控制智能寻迹避障小车沿黑线实现转圈功能;(2)行走过程中小车一直压着黑线走,不得冲出黑线圆圈之外或之内;(3)智能寻迹避障小车可以从小于90度的任意方向寻找到黑线圆圈;项目描述该项目的主要内容是:在智能寻迹避障小车电机控制系统之上扩展寻迹电路,然后运用C语言对系统进行编程,使智能寻迹避障小车实现沿黑线转圆圈的功能,并且在行走过程中小车一直压着黑线走,不得冲出黑线圆圈之外或之内;当人为将小车拿开,再从小于90度的任意方向放置小车,小车应能重新找回轨道,并沿黑线继续转圈。
通过该项目的学习与实践,可以让读者获得如下知识和技能:继续掌握单片机I/O端口的应用;掌握红外线收、发对管的工作原理与控制方法;掌握数码管的工作原理与控制方法;掌握单片机C语言的编程方法与技巧;能够编写出智能寻迹避障小车沿黑线实现转圈功能的控制函数;必备知识2.1.1 关于红外线传感器红外线定义:在光谱中波长自至400微米的一段称为红外线,红外线是不可见光线。
所有高于绝对零度(℃)的物质都可以产生红外线。
现代物理学称之为热射线。
医用红外线可分为两类:近红外线与远红外线。
红外线发射器:红外线发射管在LED封装行业中主要有三个常用的波段,如下850NM、875NM、940NM。
根据波长的特性运用的产品也有很大的差异,850NM波长的主要用于红外线监控设备,875NM主要用于医疗设备,940NM波段的主要用于红外线控制设备。
如:红外线遥控器、光电开关、光电计数设备等。
红外线对管应用:本项目中,小车的寻迹功能采用红外线收、发对管实现。
具体工作过程如下:两对红外线收、发对管安装在智能寻迹避障小车底盘正前方,红外发射管一直发射信号,接收管时刻准备接收信号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
智能寻迹小车以及程序 Document number【AA80KGB-AA98YT-AAT8CB-2A6UT-A18GG】寻迹小车在历届全国大学生电子设计竞赛中多次出现了集光、机、电于一体的简易智能小车题目。
笔者通过论证、比较、实验之后,制作出了简易小车的电路系统。
整个系统基于普通玩具小车的机械结构,并利用了小车的底盘、前后轮电机及其自动复原装置,能够平稳跟踪路面黑色轨迹运行。
总体方案整个电路系统分为检测、控制、驱动三个模块。
首先利用对路面信号进行检测,经过比较器处理之后,送给软件控制模块进行实时控制,输出相应的信号给驱动芯片驱动电机转动,从而控制整个小车的运动。
系统方案方框图如图1所示。
图1 智能小车寻迹系统框图传感检测单元小车循迹原理该智能小车在画有黑线的白纸“路面”上行驶,由于黑线和白纸对光线的反射系数不同,可根据接收到的反射光的强弱来判断“道路”—黑线。
笔者在该模块中利用了简单、应用也比较普遍的检测方法——红外探测法。
红外探测法,即利用红外线在不同颜色的物理表面具有不同的反射性质的特点。
在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色地面时发生漫发射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,则小车上的接收管接收不到信号。
传感器的选择市场上用于红外探测法的器件较多,可以利用反射式传感器外接简单电路自制探头,也可以使用结构简单、工作性能可靠的集成式红外探头。
ST系列集成红外探头价格便宜、体积小、使用方便、性能可靠、用途广泛,所以该系统中最终选择了ST168反射传感器作为红外光的发射和接收器件,其内部结构和外接电路均较为简单,如图2所示:图2 ST168检测电路ST168采用高发射功率红外光、电二极管和高灵敏光电晶体管组成,采用非接触式检测方式。
ST168的检测距离很小,一般为8~15毫米,因为8毫米以下是它的检测盲区,而大于15毫米则很容易受干扰。
笔者经过多次测试、比较,发现把传感器安装在距离检测物表面10毫米时,检测效果最好。
R1限制发射二极管的电流,发射管的电流和发射功率成正比,但受其极限输入正向电流50mA的影响,用R1=150的电阻作为限流电阻,Vcc=5V作为电源电压,测试发现发射功率完全能满足检测需要;可变电阻R2可限制接收电路的电流,一方面保护接收红外管;另一方面可调节检测电路的灵敏度。
因为传感器输出端得到的是模拟电压信号,所以在输出端增加了比较器,先将ST168输出电压与进行比较,再送给单片机处理和控制。
传感器的安装正确选择检测方法和传感器件是决定循迹效果的重要因素,而且正确的器件安装方法也是循迹电路好坏的一个重要因素。
从简单、方便、可靠等角度出发,同时在底盘装设4个红外探测头,进行两级方向纠正控制,将大大提高其循迹的可靠性,具体位置分布如图3所示。
图3 红外探头的分布图图中循迹传感器全部在一条直线上。
其中X1与Y1为第一级方向控制传感器,X2与Y2为第二级方向控制传感器,并且黑线同一边的两个传感器之间的宽度不得大于黑线的宽度。
小车前进时,始终保持(如图3中所示的行走轨迹黑线)在X1和Y1这两个第一级传感器之间,当小车偏离黑线时,第一级传感器就能检测到黑线,把检测的信号送给小车的处理、控制系统,控制系统发出信号对小车轨迹予以纠正。
第二级方向探测器实际是第一级的后备保护,它的存在是考虑到小车由于惯性过大会依旧偏离轨道,再次对小车的运动进行纠正,从而提高了小车循迹的可靠性。
软件控制单元单片机选型及程序流程此部分是整个小车运行的核心部件,起着控制小车所有运行状态的作用。
控制方法有很多,大部分都采用单片机控制。
由于51单片机具有价格低廉是使用简单的特点,这里选择了ATMEL公司的AT89S51作为控制核心部件,其程序控制方框图如图4所示。
图4 系统的程序流程图小车进入循迹模式后,即开始不停地扫描与探测器连接的单片机I/O口,一旦检测到某个I/O口有信号变化,程序就进入判断程序,把相应的信号发送给电动机从而纠正小车的状态。
车速的控制车速调节的方法有两种:一是用步进电机代替小车上原有的直流电机;二是在原有直流电机的基础上,采用调速法进行调速。
考虑到机械装置不便于修改等因素,这里选择后者,利用单片机输出端输出高电平的脉宽及其占空比的大小来控制电机的转速,从而控制小车的速度。
经过多次试验,最终确定合适的脉宽和占空比,基本能保证小车在所需要的速度范围内平稳前行。
电机驱动单元从单片机输出的信号功率很弱,即使在没有其它外在负载时也无法带动电机,所以在实际电路中我们加入了电机驱动芯片提高输入电机信号的功率,从而能够根据需要控制电机转动。
根据驱动功率大小以及连接电路的简化要求选择L298N,其外形、管脚分布如图5所示。
图5 L298N管脚分布图从图中可以知道,一块L298N芯片能够驱动两个电机转动,它的使能端可以外接高低电平,也可以利用单片机进行软件控制,极大地满足各种复杂电路需要。
另外,L298N的驱动功率较大,能够根据输入电压的大小输出不同的电压和功率,解决了负载能力不够这个问题。
结语此方案选择的器件比较简单,实际中也很容易实现。
经过多次测试,结果表明在一定的弧度范围内,小车能够沿着黑线轨迹行进,达到了预期目标。
不足之处,由于小车采用直流电机,其速度控制不够精确和稳定,不能实现急转和大弧度的拐弯。
程序#include<>#define uchar unsigned char#define uint unsigned intuchar pro_left,pro_right,i,j; //左右占空比标志sbit left1=P2^0;sbit left2=P2^1;sbit right1=P2^2;sbit right2=P2^3;sbit en1=P1^0;sbit en2=P1^1;//循迹口三个红外传感器sbit left_red=P1^2; //白线位置sbit mid_red=P1^3; //黑线位置sbit right_red=P1^4; //白线位置void delay(uint z){uchar i;while(z--){for(i=0;i<121;i++);}}void init(){left_red=0; //白线位置mid_red=1; //黑线位置right_red=0;TMOD=0X01;TH0=(65536-100)/256;TL0=(65536-100)%256;EA=1;ET0=1;TR0=1;en1=1;en2=1;}void time0(void)interrupt 1 {i++;j++;if(i<=pro_right) {en1=1;} else en1=0;if(i==40) {en1=~en1;i=0;} if(j<=pro_left) {en2=1;}else en2=0;if(j==40) {en2=~en2;j=0;} TH0=(65536-100)/256;TL0=(65536-100)%256;}void straight() //走直线函数{pro_right=39;pro_left=39;left1=0;left2=1;right1=1;right2=0;}void turn_left() //左转弯函数{pro_right=5;pro_left=39;left1=0;left2=1;right1=1;right2=0;}void turn_right() //右转弯函数{pro_right=39;pro_left=5;left1=0;left2=1;right1=1;right2=0;}void turn_back() //后退(反转)函数{left1=1;left2=0;right1=0;right2=1;pro_right=39;pro_left=39;}void infrared() //循迹{uchar flag;if(left_red==1){flag=1;}elseif(right_red==1){flag=2;}elseif((left_red==0)&(mid_red==0)&(right_red==0)) {flag=3;}else flag=0;switch (flag){case 0: straight();break;case 1: turn_left();break;case 2: turn_right();break;case 3: turn_back();break;default:break;}}void main(void){init();delay(1);while(1){infrared();// straight();}}void int0(void)interrupt 0{ }。