当前位置:首页 > 基于51单片机的智能循迹避障小车+C源程序
开始 前进 否 否 扫描I/O口,是否检测到黑线 扫描I/O口,是否检测到障碍 是 右/左行进 左/右行进 是 左/右检测到黑线 左/右检测到障碍
循迹避障程序 #include<>
#define uchar unsigned char #define uint unsigned int unsigned char zkb1=0 ;
//**左边电机的占空比**// unsigned char zkb2=0 ;
//**右边电机的占空比**// unsigned char t=0;
//**定时器中断计数器**// sbit LSEN2=P2^0; sbit LSEN1=P2^1; sbit RSEN1=P2^2; sbit RSEN2=P2^3; //**传感器***/ sbit IN1=P1^0; sbit IN2=P1^1; sbit IN3=P1^2; sbit IN4=P1^3; sbit ENA=P1^4; sbit ENB=P1^5;
//**********初始化定时器中断***********// void init() {
TMOD=0x01;
TH0=(65536-100)/256; TL0=(65536-100)%6; EA=1; ET0=1; TR0=1; }
//***********中断函数+脉宽调制***********// void timer0() interrupt 1 {
if(t ENA=0; if(t ENB=0; t++; if(t>=50) {t=0;} } //******************直行******************// void qianjin() { zkb1=50; zkb2=50; } //***************左转函数1***************// void turn_left1() { zkb1=0; zkb2=50; } //***************左转函数2***************// void turn_left2() { zkb1=0; zkb2=50; } //***************右转函数1***************// void turn_right1() { zkb1=50; zkb2=0; } //***************右转函数2***************// void turn_right2() { zkb1=50; zkb2=0; } //***************循迹函数*****************// void xunji() { uchar flag; if((RSEN2==1)&&(RSEN1==0)&&(LSEN1==0)&&(LSEN2==1)) { flag=0; } //*******直行*******// else if((RSEN2==1)&&(RSEN1==1)&&(LSEN1==0)&&(LSEN2==1)) { flag=1;} //***左偏1,右转***// else if((RSEN2==1)&&(RSEN1==0)&&(LSEN1==1)&&(LSEN2==1)) { flag=2; } //***右偏1,左转***// else if((RSEN2==0)&&(RSEN1==0)&&(LSEN1==0)&&(LSEN2==1)) { flag=3; } //***右偏2,左转***// else if((RSEN2==1)&&(RSEN1==0)&&(LSEN1==0)&&(LSEN2==0)) { flag=4;} //***左偏2,右转***// switch (flag) { case 0:qianjin(); break; case 1:turn_right1(); break; case 2:turn_left1(); break; case 3:turn_left2(); break; case 4:turn_right2(); break; default: break; } } //****************主程序****************// void main() { init(); zkb1=50; zkb2=50; while(1) { //******给电机加电启动******// IN1=1; IN2=0; IN3=1; IN4=0; ENA=1; ENB=1; while(1) { xunji(); //*********寻迹**********// } } } 五、系统测试过程 本小车能实现循迹避障功能,它能沿着地面上黑色轨迹行驶实现循迹功能,也能检测到跑道两侧的挡板,沿挡板行驶实现避障功能。 寻迹避障小车轨迹图介绍:轨道由循迹部分(黑线)和避障部分(道路两侧加挡板)两部分组成,小车先进入循迹轨道,沿黑线行驶,到达两部分连接处进入避障轨道沿挡板行驶,从而实现寻迹和避障功能的展示。轨道示意图如下: 为保证小车能正常行驶,循迹部分的黑线宽度应在至4cm。避障轨道的宽度应大于20cm小于25cm。 六、总结 测试结果表明:本组智能小车能很好的完成了循迹和避障功能,循迹跑道是由黑色胶布在白色地面上拉线完成,小车可以从O型跑道的任何段为起点,跑完全程。避障跑到是通过摆放障碍物,小车可以走出障碍区间。 七、附录:系统元器件 L298N模块/步进电机直流电机驱动模块/小车电机驱动模块/输出5V 四路红外探测 寻迹光电传感器 寻迹小车 循迹避障模块 黑白线识别 51单片机最小系统板/USB下载程序/51单片机开发板 智能小车底盘/寻迹小车/机器人/带码盘/强磁电机/ZK-2WD 四节五号电池板组 附带四节五号干电池 导线若干
共分享92篇相关文档