|
哪位大神可以告訴我,后邊該怎么寫。現(xiàn)在寫的只可以巡線,到正方形哪里就會停,走不到終點,應(yīng)該怎樣改程序啊?
這個是程序。
- #include<reg52.h>//單片機頭文件
- #define PWM1 7//小車前進速度,1-9可調(diào)(若轉(zhuǎn)彎容易沖出,調(diào)慢即可)
- #define PWM2 9//小車轉(zhuǎn)向速度,1-9可調(diào)
- sbit zuo1=P0^3;//左電機控制端1
- sbit zuo2=P0^2;//左電機控制端2
- sbit you1=P0^1;//右電機控制端1
- sbit you2=P0^0;//右電機控制端2
- sbit z=P1^2;//左邊 光電管的信號端
- sbit q=P1^1;//前邊 光電管的信號端
- sbit y=P1^0;//右邊 光電管的信號端
- void delay(int z)//pwm中使用的延時函數(shù)
- {
- int i,j;
- for(i=2;i>0;i--)
- for(j=z;j>0;j--);
- }
- void qian()//前進
- {
- you1=0;
- you2=1;
- zuo1=0;
- zuo2=1;
- delay(PWM1);//pwm調(diào)速,若PWM1=7表示速度為全速的70%
- you1=1;
- you2=1;
- zuo1=1;
- zuo2=1;
- delay(10-PWM1);
- }
- void you()//右轉(zhuǎn)
- {
- you1=1;
- you2=1;
- zuo1=0;
- zuo2=1;
- delay(PWM2);//pwm調(diào)速,若PWM1=9表示速度為全速的90%
- you1=1;
- you2=1;
- zuo1=1;
- zuo2=1;
- delay(10-PWM2);
- }
- void zuo()//左轉(zhuǎn)
- {
- you1=0;
- you2=1;
- zuo1=1;
- zuo2=1;
- delay(PWM2);//pwm調(diào)速,若PWM1=9表示速度為全速的90%
- you1=1;
- you2=1;
- zuo1=1;
- zuo2=1;
- delay(10-PWM2);
- }
- void ting()//停止
- {
- you1=1;
- you2=1;
- zuo1=1;
- zuo2=1;
- }
- void main()//主函數(shù)
- {
- while(1)//單片機不間斷監(jiān)測 (是個死循環(huán))
- {
- if(z==1&&y==1) qian();//前進
- else if(z==0&&y==1) zuo();//左邊遇到黑線時,左轉(zhuǎn)
- else if(z==1&&y==0) you();//右邊遇到黑線時,右轉(zhuǎn)
- else if(z==0&&y==0)//左右同時遇到黑線時
- {
- int i=0;
- for(i=0;i<300;i++) qian();//再向前走一段
- //到終點不能穩(wěn)定停止,將上面300調(diào)大。
- while(q==1&&z==1&&y==1)ting();//若全是1,就停止
- }
- else ting();
- }
- }
復(fù)制代碼
|
|