小車參加完比賽全套程序,小車采用l298p電機驅動,使用4個麥克拉姆輪,4個舵機,8個循跡,4個避障模塊搭建而成。程序可完成比賽2019年機器人技能大賽智慧快遞項目。
比賽圖紙
14444444444444.jpg (63.86 KB, 下載次數: 25)
下載附件
2020-2-2 17:12 上傳
單片機源程序如下:
- #include <reg52.h>
- char flag=0;
- char flag1=0;
- char flag2=0;
- char flag3=0;
- void rightqianjin();
- void leftqianjin();
- void qianjin();
- void houtui();
- void stop();
- void rightqianjin1();
- void bizhangbegain();
- void bizhang();
- void qianxunji();
- void baixian2();
- void baixian();
- void houxunji();
- void qianjinshuxian();
- void xunjiqianjinshuxian();
- void heikaihoutuishuxian() ;
- void heikaiqianjinyige2();
- void xunjiqianjinyige(void);
- void houtuishuxian();
- void houtuiyige(void);
- void baisehoutuibange(void);
- void baisehoutuibange2();
- void danbianhoutuishuxian();
- void danbianhoutuiyige(void);
- void zuoxuanzhuan();
- void xuanzhuanyige(void);
- void youxunji();
- void houtuibange(void);
- void qianjinshuxian2();
- void heikaiqianjinyige(void);
- void baixianbizhang();
- void zuohoushuxian(void);
- void zuohoushuyige(void) ;
- void zuoqianshuxian(void);
- void zuoqianshuyige(void) ;
- sbit IN1 = P0^0;
- sbit IN2 = P0^1;
- sbit ENA = P0^2;
- sbit ENB = P0^3;
- sbit IN3 = P0^4;
- sbit IN4 = P0^5;
- sbit IN5 = P2^0;
- sbit IN6 = P2^1;//??
- sbit ENAA = P2^2;
- sbit ENBB = P2^3;//??
- sbit IN7 = P2^4;
- sbit IN8 = P2^5;
-
-
- sbit right = P1^0;
- sbit left = P1^1;
- sbit right1 = P0^6;
- sbit bizhang1 = P1^3;
- sbit left1= P1^2;
- sbit bizhangleft= P1^5;
- sbit bizhangright = P1^6;
- sbit bizhangtou= P1^7;
- sbit houleft = P3^2; //
- sbit houright = P3^3;//?????
- sbit right2 = P0^7;
- sbit left2 = P2^7;
- sbit SERVO0=P3^5; //?????PWM???
- sbit SERVO1=P3^6;
- sbit SERVO2=P3^7;
- unsigned int ServoPwmDuty[16] = {1500,1500,1500,1500,1500,1500,1500,1500,
- 1500,1500,1500,1500,1500,1500,}; //PWM????
-
-
- unsigned char zkb1 = 0;
- unsigned char zkb2 = 0;
- unsigned char zkb11 = 0;
- unsigned char zkb22 = 0;
- unsigned char t = 0;
-
- void delay(unsigned int x) //?? x ms
- {
- unsigned int i,j;
- for(i=x;i>0;i--)
- for(j=128;j>0;j--);
- }
- void DelayMs(unsigned int ms)
- {
- unsigned int i,j;
- for(i=0;i<800;i++) //89????85,12??????800
- for(j=0;j<ms;j++);
- }
- void init0()
- {
-
- EA = 1;
- TMOD = 0x01;
- TH0 =(65536 - 100) / 256;
- TL0 = (65536 - 100)% 256;
- ET0 = 1;
- TR0 = 1;
- ENA = 1;
- ENAA = 1;
- ENB = 1;
- ENBB = 1;
- }
- void init1()
- {
-
- EA = 1;
- TMOD = 0x10;
- TH1 =(65536-40000)/256;
- TL1 =(65536-40000)%256;
- ET1 = 1;
- TR1 = 1;
- }
- void rightqianjin()
- {
- zkb1=0;
- zkb2=0;
- zkb11=30;
- zkb22=30;
- IN1 = 0;
- IN2 = 1;
- IN3 = 0;
- IN4 = 1;
- IN5 = 0;
- IN6 = 1;
- IN7 = 0;
- IN8 = 1;
- }
- void leftqianjin()
- {
- zkb1=30;
- zkb2=30;
- zkb11=0;
- zkb22=0;
- IN1 = 0;
- IN2 = 1;
- IN3 = 0;
- IN4 = 1;
- IN5 = 0;
- IN6 = 1;
- IN7 = 0;
- IN8 = 1;
- }
- void qianjin()
- {
- zkb1=50;
- zkb2=50;
- zkb11=50;
- zkb22=50;
- IN1 = 0;
- IN2 = 1;
- IN3 = 0;
- IN4 = 1;
- IN5 = 0;
- IN6 = 1;
- IN7 = 0;
- IN8 = 1;
- }
- void houtui()
- {
- zkb1=35;
- zkb2=35;
- zkb11=28;
- zkb22=28;
- IN1 = 1;
- IN2 = 0;
- IN3 = 1;
- IN4 = 0;
- IN5 = 1;
- IN6 = 0;
- IN7 = 1;
- IN8 = 0;
- }
- void righthoutui()
- {
- zkb1=10;
- zkb2=10;
- zkb11=30;
- zkb22=30;
- IN1 = 1;
- IN2 = 0;
- IN3 = 1;
- IN4 = 0;
- IN5 = 1;
- IN6 = 0;
- IN7 = 1;
- IN8 = 0;
- }
- void lefthoutui()
- {
- zkb1=30;
- zkb2=30;
- zkb11=10;
- zkb22=10;
- IN1 = 1;
- IN2 = 0;
- IN3 = 1;
- IN4 = 0;
- IN5 = 1;
- IN6 = 0;
- IN7 = 1;
- IN8 = 0;
- }
- void stop()
- {
- zkb1=10;
- zkb2=10;
- zkb11=13;
- zkb22=13;
- IN1 = 0;
- IN2 = 0;
- IN3 = 0;
- IN4 = 0;
- IN5 = 0;
- IN6 = 0;
- IN7 = 0;
- IN8 = 0;
- }
- void leftqianjin1()
- {
- zkb1=28;
- zkb2=25;
- zkb11=28;
- zkb22=35;
- IN1 = 0;
- IN2 = 1;
- IN3 = 1;
- IN4 = 0;
- IN5 = 1;
- IN6 = 0;
- IN7 = 0;
- IN8 = 1;
- }
- void leftqianjin1shang()
- {
- zkb1=28;
- zkb2=25;
- zkb11=25;
- zkb22=50;
- IN1 = 0;
- IN2 = 1;
- IN3 = 1;
- IN4 = 0;
- IN5 = 1;
- IN6 = 0;
- IN7 = 0;
- IN8 = 1;
- }
- void leftqianjin1xia()
- {
- zkb1=28;
- zkb2=25;
- zkb11=50;
- zkb22=50;
- IN1 = 0;
- IN2 = 1;
- IN3 = 1;
- IN4 = 0;
- IN5 = 1;
- IN6 = 0;
- IN7 = 0;
- IN8 = 1;
- }
- void zuoxunji()
- {
-
- if((right1 == 1)||(right2 == 1)||(left1==1)||(left2==1))
- {
- leftqianjin1();
-
- }
- else if((right1 ==0)&&(right2 == 1)&&(left1==0)&&(left2==1))
- {
- leftqianjin1shang() ;
-
- }
- else if((right1 == 1)&&(right2 == 0)&&(left1==1)&&(left2==0))
- {
- leftqianjin1xia();
- }
-
- }
- void youxuanzhuan()
- {
- zkb1=50;
- zkb2=50;
- zkb11=50;
- zkb22=50;
- IN1 = 1;
- IN2 = 0;
- IN3 = 1;
- IN4 = 0;
- IN5 = 0;
- IN6 = 1;
- IN7 = 0;
- IN8 = 1;
- }
- void rightbizhangbegain()
- {
- stop();
- delay(2000);
- if((left1 == 1)&&(right1 == 0))
- {
- {
- stop();
- delay(2000);
- }
- if((bizhangleft==0) )
- {
-
- xunjiqianjinyige();
- delay(2000);
-
- if((bizhangleft==1) )
- {
- zuoqianshuyige() ;
- delay(1000);
- }
- }
- else if((bizhangleft==1) )
- {
- zuoqianshuyige() ;
- delay(1000);
- }
- }
-
-
- }
-
- void baixianbizhang()
- {
- if((bizhang1==0)&&((houleft==0)&&(houright==0)))
- {
- danbianhoutuiyige() ;
- delay(5000);
- zuoqianshuyige() ;
- delay(1000);
- }
- }
-
- void bizhang()
- {
-
- if((bizhang1==0)&&(houleft==1)&&(houright==1)&&(right==1)&&(left==1))
- {
- //
- houtuiyige();
- delay(1000);
-
-
- if (bizhangleft==0)
- {
- {
- houtuiyige();
- delay(1000);
- }
- if (bizhangleft==0)
- {
-
- {
- houtuiyige();
- delay(1000);
- zuoqianshuyige() ;
- delay(1000);
-
- }
-
-
- }
- else
- {
- zuoqianshuyige();
- delay(1000);
- }
- }
- else
- {
- zuoqianshuyige();
- delay(1000);
- }
- }
-
-
- }
- //
- void qianxunji()
- {
-
- if((left == 1)&&(right == 1))
- {
- qianjin();
- }
- else if((left ==0)&&(right == 1))
- {
- rightqianjin();
-
- }
- else if((left == 1)&&(right == 0))
- {
- leftqianjin();
- }
- }
-
- void baixian()
- {
- if(((left==0)&&(right==0))&&(flag3==0)&&((houright==1)||(houleft==1)))
- {
- {
- stop();
- delay(500);
- heikaiqianjinyige();
- delay(500);
- baisehoutuibange();
- delay(500);
- }
- if(bizhangleft==0)
- {
- {
- houtuiyige() ;
- delay(1000) ;
- }
- if(bizhangleft==0)
- {
- houtuiyige();
- delay(1000);
- zuohoushuyige();
- delay(1000);
- }
- else
- {
- zuohoushuyige();
- delay(1000);
-
- }
- }
- else
- {
-
- stop();
- delay(500);
- zuohoushuyige();
- delay(1000);
-
-
- }
- }
- }
-
- void baixian2()
- {
- if(((left==0)&&(right==0))&&(flag3>0)&&((houleft==1)||(houright==1)))
- {
-
- stop();
- delay(500);
- heikaiqianjinyige2();
- delay(1000);
- baisehoutuibange2();
- delay(1000);
- if((right==0)&&(left==0)&&(left1==1)&&(right1==1)||(left2==1))
- {
- if(bizhangleft==0)
- {
- {
- houtuiyige() ;
- delay(1000) ;
- }
- if(bizhangleft==0)
- {
- houtuiyige();
- delay(1000);
- zuohoushuyige();
- delay(1000);
- }
- else
- {
- zuohoushuyige();
- delay(1000);
-
- }
- }
- else
- {
-
- stop();
- delay(1000);
- zuohoushuyige();
- delay(1000);
-
-
- }
- }
- else if((right==0)&&(left==0)&&(left1==0)&&(left2==0)&&(right1==1))
- {
- xuanzhuanyige();
- flag3=0;
- qianjin();
- delay(1000);
- danbianhoutuiyige();
- delay(1000);
- rightbizhangbegain();
- }
- }
- }
- void houxunji()
- {
-
- if((houleft==1)&&(houright==1))
- {
- houtui();
- }
- else if((houleft==0)&&(houright==1))
- {
-
- righthoutui();
- }
- else if((houleft==1)&&(houright==0))
- {
-
- lefthoutui();
-
- }
- }
- void xunjiqianjinshuxian()
- {
- qianxunji();
- if( left1 ==0&&flag==0)
- {
- qianxunji();
- flag=1;
- }
- else if( left1 ==1&&flag==1)
- {
- qianxunji();
- flag=2;
- }
- qianxunji();
- if( left1 ==0&&flag==2)
- {
- qianxunji();
- flag=3; //??????
- }
- else if( left1 ==1&&flag==3)
- {
- qianxunji();
- flag=4;
- }
- else if( left1 ==0&&flag==4)
- {
- qianxunji();
- flag=5;//??????
- }
- else if( left1 ==1&&flag==5)
- {
- qianxunji();
- flag=6;
- }
- else if( left1 ==1&&flag==6)
- {
- qianxunji() ;//??3???
- flag=7;
- }
- qianxunji();
- if( left1 ==0&&flag==7)
- {
- qianxunji();
- flag=8;
- }
- else if( left1 ==1&&flag==8)
- {
- qianxunji();
- flag=9;//??4???
- }
- else if( left1 ==0&&flag==9)
- {
- qianxunji();
- flag=10;
- }
- else if( left1 ==1&&flag==10)
- {
- qianxunji();
- flag=11;//??5???
- }
- else if( left1 ==1&&flag==11)
- {
- qianxunji();
- flag=12;
- }
- qianxunji();
-
- }
- void xunjiqianjinyige(void) //??????
- {
- while(1)
- {
- xunjiqianjinshuxian() ;
- if(flag==2)
-
- {
- stop();
- delay(1000);
- flag=0;
- break;
- }
- }
- }
- void qianjinshuxian2()
- {
- qianjin();
- if(left1==1&&right1==1&&flag==0)
- {
- qianjin();
- flag=1;
- }
- else if(left1==0&&right1==0&&flag==1)
- {
- qianjin();
- flag=2;
- }
- qianjin();
- if(left1==1&&right==1&&flag==2)
- {
- qianjin();
- flag=3;
- }
- else if(left1==0&&right1==0&&flag==3)
- {
- qianjin();
- flag=4;
- }
- }
- void heikaiqianjinyige(void)
- {
- while(1)
- {
- qianjinshuxian2() ;
- if(flag==2)
-
- {
- stop();
- delay(1000);
- flag=0;
- break;
- }
- }
- }
- void qianjinshuxian3()
- {
- qianjin();
- if(right1==1&&flag==0)
- {
- qianjin();
- flag=1;
- }
- else if(right1==0&&flag==1)
- {
- qianjin();
- flag=2;
- }
- qianjin();
- if(right1==1&&flag==2)
- {
- qianjin();
- flag=3; //??????
- }
- else if(right1==0&&flag==3)
- {
- qianjin();
- flag=4;
- }
- }
- void heikaiqianjinyige2(void)
- {
- while(1)
- {
- qianjinshuxian3() ;
- if(flag==2)
-
- {
- stop();
- delay(1000);
- flag=0;
- break;
- }
- }
- }
- void baisehoutuishuxian()
- {
- houtui();
- if(right1==0&&left1==0&&flag1==0)
- {
- houtui();
- flag1=1;
- }
- else if(right1==1&&left1==1&&flag1==1)
- {
- houtui();
- flag1=2;
- }
- houtui();
- if(right1==0&&left1==0&&flag1==2)
- {
- houtui();
- flag1=3;
- }
- else if(right1==1&&left1==1&&flag1==3)
- {
- houtui();
- flag1=4;
- }
- }
- void baisehoutuibange(void)
- {
- while(1)
- {
- baisehoutuishuxian() ;
- if(flag1==2)
-
- {
- stop();
- delay(1000);
- flag1=0;
- break;
- }
-
- }
- }
- void baisehoutuishuxian2()
- {
- houtui();
- if(right1==0&&flag1==0)
- {
- houtui();
- flag1=1;
- }
- else if(right1==1&&flag1==1)
- {
- houtui();
- flag1=2;
- }
- houtui();
- if(right1==0&&flag1==2)
- {
- houtui();
- flag1=3;
- }
- else if(right1==1&&flag1==3)
- {
- houtui();
- flag1=4;
- }
- }
- void baisehoutuibange2(void)
- {
- while(1)
- {
- baisehoutuishuxian2() ;
- if(flag1==2)
-
- {
- stop();
- delay(1000);
- flag1=0;
- break;
- }
-
- }
- }
- void houtuishuxian() //???? ??
- {
- houxunji();
- if(right1==0&&left1==0&&flag1==0)
- {
- houxunji();
- flag1=1;
- }
- else if(right1==1&&left1==1&&flag1==1)
- {
- houxunji();
- flag1=2;//??????
- }
- houxunji();
- if(right1==0&&left1==0&&flag1==2)
- {
- houxunji();
- flag1=3;
- }
- else if(right1==1&&left1==1&&flag1==3)
- {
- houxunji();
- flag1=4;//??????
- }
- else if(right1==0&&left1==0&&flag1==4)
- {
- houxunji();
- flag1=5;//??????
- }
- else if(right1==1&&left1==1&&flag1==5)
- {
- houxunji();
- flag1=6;//??????
- }
- }
- void houtuiyige(void) //????
- {
- while(1)
- {
- houtuishuxian();
- if(flag1==2)
-
- {
- stop();
- delay(1000);
- flag1=0;
- break;
- }
-
- }
- }
- void danbianhoutuishuxian() //?????? ??
- {
- houtui();
- if(left1==0&&flag1==0)
- {
- houtui();
- flag1=1;
- }
- else if(left1==1&&flag1==1)
- {
- houtui();
- flag1=2;//??????
- }
- houtui();
- if(left1==0&&flag1==2)
- {
- houtui();
- flag1=3;
- }
- else if(left1==1&&flag1==3)
- {
- houtui();
- flag1=4;//??????
- }
- else if(left1==0&&flag1==4)
- {
- houtui();
- flag1=5;//??????
- }
- else if(left1==1&&flag1==5)
- {
- houtui();
- flag1=6;//??????
- }
- }
- void danbianhoutuiyige(void)
- {
- while(1)
- {
- danbianhoutuishuxian() ;
- if(flag1==2)
-
- {
- stop();
- delay(1000);
- flag1=0;
- break;
- }
-
- }
- }
- void xuanzhuanshuxian()
- {
- youxuanzhuan();
- if(right==0&&left==0&&flag1==0)
- {
- youxuanzhuan();
- flag1=1;
- }
- else if(right==1&&left==1&&flag1==1)
- {
- youxuanzhuan();
- flag1=2;
- }
- youxuanzhuan();
- if(right==0&&left==0&&flag1==2)
- {
- youxuanzhuan();
- flag1=3;
- }
- else if(right==1&&left==1&&flag1==3)
- {
- youxuanzhuan();
- flag1=4;
- }
-
- }
-
- void xuanzhuanyige(void)
- {
- while(1)
- {
- xuanzhuanshuxian();
- if(flag1==4)
-
- {
- stop();
- delay(1000);
- flag1=0;
- break;
- }
-
- }
- }
- void zuohoushuxian(void)
- {
- {
- zuoxunji();
- if(houright==0&&houleft==0&&flag1==0)
- {
- zuoxunji();
- flag1=1;
- }
- else if(houright==1&&houleft==1&&flag1==1)
- {
- zuoxunji();
- flag1=2;
- }
- zuoxunji();
- if(houright==0&&houleft==0&&flag1==2)
- {
- zuoxunji();
- flag1=3;
- }
- else if(houright==1&&houleft==1&&flag1==3)
- {
- zuoxunji();
- flag1=4;
- }
-
- }
-
- }
-
- void zuohoushuyige(void)
- {
- while(1)
- {
- zuohoushuxian();
- if(flag1==2)
-
- {
- stop();
- delay(1000);
- flag1=0;
- break;
- }
-
- }
- }
- void zuoqianshuxian(void)
- {
- {
- zuoxunji();
- if(right==0&&left==0&&flag1==0)
- {
- zuoxunji();
- flag1=1;
- }
- else if(right==1&&left==1&&flag1==1)
- {
- zuoxunji();
- flag1=2;
- }
- zuoxunji();
- if(right==0&&left==0&&flag1==2)
- {
- zuoxunji();
- flag1=3;
- }
- else if(right==1&&left==1&&flag1==3)
- {
- zuoxunji();
- flag1=4;
- }
-
- }
-
- }
-
- void zuoqianshuyige(void)
- {
- while(1)
- {
- zuoqianshuxian();
- if(flag1==2)
-
- {
- stop();
- delay(1000);
- flag1=0;
- break;
- }
-
- }
- }
- void toushuxian()
- {
- if(TR0==0&&bizhangtou==1&&flag3==0)
- {
- flag3=1;
- }
- else if(bizhangtou==0&&flag3==1)
- {
- flag3=2;
- }
- else if(bizhangtou==1&&flag3==2)
- {
- flag3=3;
- }
- else if(bizhangtou==0&&flag3==3)
- {
- flag3=4;
- }
- }
- void Timer0Value(unsigned int pwm)
- {
- unsigned int value;
- value=0xffff-pwm;
- TR1 = 0;
- TL1=value;
- TH1=value>>8;
- TR1 = 1;
- }
-
- void timer0() interrupt 1
- {
- TH0 = (65536 - 100) / 256;
- TL0 = (65536 - 100) % 256;
- if(t < zkb1 )
- {
- ENA = 1;
- }
- else
- {
- ENA = 0;
- }
- if(t < zkb11 )
- {
- ENAA = 1;
- }
- else
- {
- ENAA = 0;
- }
- if(t < zkb2 )
- {
- ENB = 1;
- }
- else
- {
- ENB = 0;
- }
- if(t < zkb22 )
- {
- ENBB = 1;
- }
- else
- {
- ENBB = 0;
- }
- ++t;
- if(t == 50)
- {
- ENA=~ENA;
- ENAA=~ENAA;//??????????????
- ENB=~ENB;
- ENBB=~ENBB;
- t = 0;
- }
- }
- void Timer0_isr(void) interrupt 3 using 1
- {
- static unsigned int i = 1;
-
- switch(i)
- {
- case 1:
- SERVO0 = 1;
- Timer0Value(ServoPwmDuty[0]);
- break;
- case 2:
- SERVO0 = 0;
- Timer0Value(2500-ServoPwmDuty[0]);
- break;
- case 3:
- SERVO1 = 1;
- Timer0Value(ServoPwmDuty[1]);
- break;
- case 4:
- SERVO1 = 0;
- Timer0Value(2500-ServoPwmDuty[1]);
- break;
- case 5:
- SERVO2 = 1;
- Timer0Value(ServoPwmDuty[2]);
- break;
- case 6:
- SERVO2 = 0;
- Timer0Value(2500-ServoPwmDuty[2]);
- i=0;
- break;
- }
-
- i++;
- }
- void youkai()
- {
- init0();
- rightbizhangbegain();
-
-
- while(1)
- {
-
- toushuxian();
- qianxunji();
-
- baixianbizhang();
- if( (bizhangtou==0)&&(left==0)&&(right==0))
- {
-
-
- stop();
- delay(500);
- qianjin();
- delay(1000);
- stop();
- delay(500);
- //
- TR0 = 0;
- init1();
-
-
- {
- ServoPwmDuty[0]=1200, ServoPwmDuty[1]=1800, ServoPwmDuty[2]=1500,
- // 1 2 3 4
- // 13 14
- DelayMs(500);
- ServoPwmDuty[0]=1700, ServoPwmDuty[1]=1600, ServoPwmDuty[2]=1500,
- // 1 2 3 4
- // 13 14
- DelayMs(500);
- ServoPwmDuty[0]=1700, ServoPwmDuty[1]=1300, ServoPwmDuty[2]=1200,
- // 1 2 3 4
- // 13 14
- DelayMs(500);
- ServoPwmDuty[0]=1500, ServoPwmDuty[1]=1000, ServoPwmDuty[2]=1000,
- // 1 2 3 4
- // 13 14
- DelayMs(500);
- ServoPwmDuty[0]=1700, ServoPwmDuty[1]=1000, ServoPwmDuty[2]=1000,
- // 1 2 3 4
- // 13 14
- DelayMs(500);
-
- }
- TR1=0;
- init0();
- xuanzhuanyige();
- delay(3000);
- TR0 = 0;
- init1();
- {
- ServoPwmDuty[0]=1500, ServoPwmDuty[1]=1000, ServoPwmDuty[2]=1000,
- // 1 2 3 4
- // 13 14
- DelayMs(500);
- ServoPwmDuty[0]=1700, ServoPwmDuty[1]=1300, ServoPwmDuty[2]=1200,
- // 1 2 3 4
- // 13 14
- DelayMs(500);
- ServoPwmDuty[0]=1500, ServoPwmDuty[1]=1600, ServoPwmDuty[2]=1300,
- // 1 2 3 4
- // 13 14
- DelayMs(500);
- ServoPwmDuty[0]=1200, ServoPwmDuty[1]=1800, ServoPwmDuty[2]=1400,
- // 1 2 3 4
- // 13 14
- DelayMs(500);
- ServoPwmDuty[0]=950, ServoPwmDuty[1]=1800, ServoPwmDuty[2]=1500,
- // 1 2 3 4
- // 13 14
- DelayMs(500);
- }
- TR1=0;
- flag3=2;
- init0();
- qianjin();
- delay(8000);
- danbianhoutuiyige();
- delay(1000);
- rightbizhangbegain();
- }
- baixian2();
- baixian();
- bizhang();
- qianxunji();
- baixianbizhang();
- }
- }
- /****************************** ??????*****************************************************/
-
- //void rightqianjin();
- //void leftqianjin();
- //void qianjin();
- //void houtui();
- //void stop();
- //void rightqianjin1();
- //void bizhangbegain();
- //void bizhang();
- //void qianxunji();
- //void baixian();
- //void houxunji();
- //void qianjinshuxian();
- //void xunjiqianjinshuxian();
- //void heikaihoutuishuxian() ;
- //void heikaiqianjinyige2();
- //void xunjiqianjinyige(void);
- //void houtuishuxian();
- //void houtuiyige(void);
- //void houtuiyige2(void) ;
- //void baisehoutuibange(void);
- //void baisehoutuibange3();
- //void baisehoutuiyige(void);
- //void danbianhoutuishuxian();
- //void danbianhoutuiyige(void);
- //void zuoxuanzhuan();
- //void xuanzhuanyige(void);
- //void youxunji();
- //void houtuibange(void);
- //void qianjinshuxian2();
- //void heikaiqianjinyige(void);
- //void baixianbizhang();
- void rightqianjin1();
- void rightqianjin1shang();
- void rightqianjin1xia();
- void youxunji();
- void zuoxuanzhuan();
- void bizhangbegain();
- void baixianbizhang2();
- void bizhang2();
- void baixian3();
- void baixian4();
- void xunjiqianjinshuxian2();
- void xunjiqianjinyige2(void) ;
- void qianjinshuxian4() ;
- void heikaiqianjinyige3(void) ;
- void baisehoutuishuxian3() ;
- void baisehoutuibange3(void) ;
- void danbianhoutuishuxian2() ;
- void danbianhoutuiyige2(void) ;
- void xuanzhuanshuxian2() ;
- void xuanzhuanyige2(void);
- void youhoushuxian(void) ;
- void youhoushuyige(void);
- void youqianshuxian(void) ;
- void youqianshuyige(void);
- void rightqianjin1()
- {
- zkb1=32;
- zkb2=25;
- zkb11=30;
- zkb22=30;
- IN1 = 1;
- IN2 = 0;
- IN3 = 0;
- IN4 = 1;
- IN5 = 0;
- IN6 = 1;
- IN7 = 1;
- IN8 = 0;
- }
- void rightqianjin1shang()
- {
- zkb1=30;
- zkb2=25;
- zkb11=30;
- zkb22=30;
- IN1 = 1;
- IN2 = 0;
- IN3 = 0;
- IN4 = 1;
- IN5 = 0;
- IN6 = 1;
- IN7 = 1;
- IN8 = 0;
- }
- void rightqianjin1xia()
- {
- zkb1=30;
- zkb2=17;
- zkb11=30;
- zkb22=30;
- IN1 = 1;
- IN2 = 0;
- IN3 = 0;
- IN4 = 1;
- IN5 = 0;
- IN6 = 1;
- IN7 = 1;
- IN8 = 0;
- }
- void youxunji()
- {
-
- if((right1 == 1)||(right2 == 1)||(left1==1)||(left2==1))
- {
- rightqianjin1();
-
- }
- else if((right1 ==0)&&(right2 == 1)&&(left1==0)&&(left2==1))
- {
- rightqianjin1shang();
-
- }
- else if((right1 == 1)&&(right2 == 0)&&(left1==1)&&(left2==0))
- {
- rightqianjin1xia();
-
- }
- }
- void zuoxuanzhuan()
- {
- zkb1=50;
- zkb2=50;
- zkb11=50;
- zkb22=50;
- IN1 = 0;
- IN2 = 1;
- IN3 = 0;
- IN4 = 1;
- IN5 = 1;
- IN6 = 0;
- IN7 = 1;
- IN8 = 0;
- }
- void bizhangbegain()
- {
- if((left1 == 0)&&(right1 == 1)&&(right==1)||(left==1))
- {
- {
- stop();
- delay(2000);
- }
- if((bizhangright==0) )
- {
- xunjiqianjinyige2();
- delay(3000);
- if((bizhangright==1) )
- {
- youqianshuyige();
- delay(2000);
- }
- else if((bizhangright==0) )
- {
- xunjiqianjinyige2();
- delay(3000);
- youqianshuyige();
- delay(2000);
- }
- }
- else if((bizhangright==1) )
- {
- youqianshuyige();
- delay(2000);
- }
- }
-
-
- }
-
- void baixianbizhang2()
- {
- if((bizhang1==0)&&((houleft==0)&&(houright==0)))
- {
- danbianhoutuiyige2() ;
- delay(5000);
- youqianshuyige();
- delay(2000);
- }
- }
-
- void bizhang2()
- {
-
- if((bizhang1==0)&&(houleft==1)&&(houright==1)&&(right==1)&&(left==1))
- {
- //
- houtuiyige();
- delay(1000);
-
-
- if (bizhangright==0)
- {
- {
- houtuiyige();
- delay(1000);
- }
- if (bizhangright==0)
- {
-
- {
- houtuiyige();
- delay(1000);
- youqianshuyige();
- delay(2000);
-
- }
-
-
- }
- else
- {
- youqianshuyige();
- delay(2000);
- }
- }
- else
- {
- youqianshuyige();
- delay(2000);
- }
- }
-
-
- }
- //
-
-
- void baixian3()
- {
- if(((left==0)&&(right==0))&&(flag3==0)&&((houright==1)||(houleft==1)))
- {
- {
- stop();
- delay(1000);
- heikaiqianjinyige();
- delay(1000);
- baisehoutuibange();
- delay(1000);
- }
- if(bizhangright==0)
- {
- {
- houtuiyige() ;
- delay(1000) ;
- }
- if(bizhangright==0)
- {
- houtuiyige();
- delay(1000);
- youhoushuyige();
- delay(1000);
- }
- else
- {
- youhoushuyige();
- delay(1000);
-
- }
- }
- else
- {
-
- stop();
- delay(1000);
- youhoushuyige();
- delay(1000);
-
-
- }
- }
-
- }
-
- void baixian4()
- {
- if(((left==0)&&(right==0))&&(flag3>0)&&((houright==1)||(houleft==1)))
- {
- {
- stop();
- delay(1000);
- heikaiqianjinyige3();
- delay(1000);
- baisehoutuibange3();
- delay(1000);
- }
- if((right==0)&&(left==0)&&(right1==1)&&(left1==1)||(right2==1))
- {
- if(bizhangright==0)
- {
- {
- houtuiyige() ;
- delay(1000) ;
- }
- if(bizhangright==0)
- {
- houtuiyige();
- delay(1000);
- youhoushuyige();
- delay(1000);
- }
- else
- {
- youhoushuyige();
- delay(1000);
-
- }
- }
- else
- {
-
- stop();
- delay(1000);
- youhoushuyige();
- delay(1000);
-
-
- }
- }
- else if((right==0)&&(left==0)&&(right1==0)&&(right2==0)&&(left1==1))
- {
- xuanzhuanyige2();
- flag3=0;
- qianjin();
- delay(1000);
- danbianhoutuiyige2();
- delay(1000);
- bizhangbegain();
- }
- }
- }
-
-
- void xunjiqianjinshuxian2()
- {
- qianxunji();
- if( right1 ==0&&flag==0)
- {
- qianxunji();
- flag=1;
- }
- else if( right1 ==1&&flag==1)
- {
- qianxunji();
- flag=2;
- }
- qianxunji();
- if( right1 ==0&&flag==2)
- {
- qianxunji();
- flag=3; //??????
- }
- else if( right1 ==1&&flag==3)
- {
- qianxunji();
- flag=4;
- }
- else if( right1 ==0&&flag==4)
- {
- qianxunji();
- flag=5;//??????
- }
- else if( right1 ==1&&flag==5)
- {
- qianxunji();
- flag=6;
- }
- else if( right1 ==1&&flag==6)
- {
- qianxunji() ;//??3???
- flag=7;
- }
- qianxunji();
- if( right1 ==0&&flag==7)
- {
- qianxunji();
- flag=8;
- }
- else if( right1 ==1&&flag==8)
- {
- qianxunji();
- flag=9;//??4???
- }
- else if( right1 ==0&&flag==9)
- {
- qianxunji();
- flag=10;
- }
- else if( right1 ==1&&flag==10)
- {
- qianxunji();
- flag=11;//??5???
- }
- else if( right1 ==1&&flag==11)
- {
- qianxunji();
- flag=12;
- }
- qianxunji();
-
- }
- void xunjiqianjinyige2(void) //??????
- {
- while(1)
- {
- xunjiqianjinshuxian2() ;
- if(flag==2)
-
- {
- stop();
- delay(2000);
- flag=0;
- break;
- }
- }
- }
-
- void qianjinshuxian4()
- {
- qianjin();
- if(left1==1&&flag==0)
- {
- qianjin();
- flag=1;
- }
- else if(left1==0&&flag==1)
- {
- qianjin();
- flag=2;
- }
- qianjin();
- if(left1==1&&flag==2)
- {
- qianjin();
- flag=3; //??????
- }
- else if(left1==0&&flag==3)
- {
- qianjin();
- flag=4;
- }
- }
- void heikaiqianjinyige3(void)
- {
- while(1)
- {
- qianjinshuxian4() ;
- if(flag==2)
-
- {
- stop();
- delay(2000);
- flag=0;
- break;
- }
- }
- }
- void baisehoutuishuxian3()
- {
- houtui();
- if(left1==0&&flag1==0)
- {
- houtui();
- flag1=1;
- }
- else if(left1==1&&flag1==1)
- {
- houtui();
- flag1=2;
- }
- houtui();
- if(left1==0&&flag1==2)
- {
- houtui();
- flag1=3;
- }
- else if(left1==1&&flag1==3)
- {
- houtui();
- flag1=4;
- }
- }
- void baisehoutuibange3(void)
- {
- while(1)
- {
- baisehoutuishuxian3() ;
- if(flag1==2)
-
- {
- stop();
- delay(2000);
- flag1=0;
- break;
- }
-
- }
- }
-
- void danbianhoutuishuxian2() //?????? ??
- {
- houtui();
- if(right1==0&&flag1==0)
- {
- houtui();
- flag1=1;
- }
- else if(right1==1&&flag1==1)
- {
- houtui();
- flag1=2;//??????
- }
- houtui();
- if(right1==0&&flag1==2)
- {
- houtui();
- flag1=3;
- }
- else if(right1==1&&flag1==3)
- {
- houtui();
- flag1=4;//??????
- }
- else if(right1==0&&flag1==4)
- {
- houtui();
- flag1=5;//??????
- }
- else if(right1==1&&flag1==5)
- {
- houtui();
- flag1=6;//??????
- }
- }
- void danbianhoutuiyige2(void)
- {
- while(1)
- {
- danbianhoutuishuxian2() ;
- if(flag1==2)
-
- {
- stop();
- delay(2000);
- flag1=0;
- break;
- }
- }
- }
- void xuanzhuanshuxian2()
- {
- zuoxuanzhuan();
- if(right==0&&left==0&&flag1==0)
- {
- zuoxuanzhuan();
- flag1=1;
- }
- else if(right==1&&left==1&&flag1==1)
- {
- zuoxuanzhuan();
- flag1=2;
- }
- zuoxuanzhuan();
- if(right==0&&left==0&&flag1==2)
- {
- zuoxuanzhuan();
- flag1=3;
- }
- else if(right==1&&left==1&&flag1==3)
- {
- zuoxuanzhuan();
- flag1=4;
- }
-
- }
-
- void xuanzhuanyige2(void)
- {
- while(1)
- {
- xuanzhuanshuxian2();
- if(flag1==4)
-
- {
- stop();
- delay(2000);
- flag1=0;
- break;
- }
-
- }
- }
- void youhoushuxian(void)
- {
- {
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
車比賽程序2.zip
(71.74 KB, 下載次數: 8)
2020-2-2 16:57 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|