欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機巡線小車程序到正方形哪里就會停,走不到終點,為什么?
[打印本頁]
作者:
shuaizuyun
時間:
2018-11-30 17:00
標題:
單片機巡線小車程序到正方形哪里就會停,走不到終點,為什么?
哪位大神可以告訴我,后邊該怎么寫。現在寫的只可以巡線,到正方形哪里就會停,走不到終點,應該怎樣改程序啊?
這個是程序。
3.PNG
(251.32 KB, 下載次數: 59)
下載附件
2018-11-30 16:57 上傳
#include<reg52.h>//單片機頭文件
#define PWM1 7//小車前進速度,1-9可調(若轉彎容易沖出,調慢即可)
#define PWM2 9//小車轉向速度,1-9可調
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中使用的延時函數
{
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調速,若PWM1=7表示速度為全速的70%
you1=1;
you2=1;
zuo1=1;
zuo2=1;
delay(10-PWM1);
}
void you()//右轉
{
you1=1;
you2=1;
zuo1=0;
zuo2=1;
delay(PWM2);//pwm調速,若PWM1=9表示速度為全速的90%
you1=1;
you2=1;
zuo1=1;
zuo2=1;
delay(10-PWM2);
}
void zuo()//左轉
{
you1=0;
you2=1;
zuo1=1;
zuo2=1;
delay(PWM2);//pwm調速,若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()//主函數
{
while(1)//單片機不間斷監測 (是個死循環)
{
if(z==1&&y==1) qian();//前進
else if(z==0&&y==1) zuo();//左邊遇到黑線時,左轉
else if(z==1&&y==0) you();//右邊遇到黑線時,右轉
else if(z==0&&y==0)//左右同時遇到黑線時
{
int i=0;
for(i=0;i<300;i++) qian();//再向前走一段
//到終點不能穩定停止,將上面300調大。
while(q==1&&z==1&&y==1)ting();//若全是1,就停止
}
else ting();
}
}
復制代碼
作者:
lsyforever
時間:
2018-11-30 22:16
這和你傳感器的布置距離有關系,三個點分別在哪里呢
作者:
DIY0426
時間:
2018-11-30 22:47
可能是全測到黑色的線了,你可以試試全感應為黑色時,人為給小車左轉或者右轉
作者:
Wang-tg
時間:
2018-12-1 13:25
應該是你的正方形入口和終點沖突了,你應該處理一下,如果不處理這兩個地方沖突很顯然
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1