标题:
Arduino寻迹避障小车程序
[打印本页]
作者:
爱慕春妮
时间:
2021-8-25 21:43
标题:
Arduino寻迹避障小车程序
int m1=5;
int m2=6;
int m3=9;
int m4=3;
#define TRIG 7
#define ECHO 11
float cm;
float tmp;
float juli;
int out1=A0;
int out2=A1;
int out3=A2;
int out4=A3;
int out5=A4;
int out[5]={0,0,0,0,0,};
int i;
int hx;
int b=0;
int bx;
void setup()
{
pinMode(m1,OUTPUT);
pinMode(m2,OUTPUT);
pinMode(m3,OUTPUT);
pinMode(m4,OUTPUT);
Serial.begin(9600);
pinMode(TRIG,OUTPUT);
pinMode(ECHO,INPUT);
pinMode(out1,INPUT);
pinMode(out2,INPUT);
pinMode(out3,INPUT);
pinMode(out4,INPUT);
pinMode(out5,INPUT);
i=0;
}
void distance()//定义距离
{
digitalWrite(TRIG,LOW);
delayMicroseconds(2);
digitalWrite(TRIG,HIGH);
delayMicroseconds(10);
digitalWrite(TRIG,LOW);
tmp=float(pulseIn(ECHO,HIGH));
cm=(tmp*17)/1000;
Serial.print("Echo=");
Serial.print(tmp);
Serial.print(",距离=");
Serial.print(cm);
Serial.println("cm");
juli=cm;
}
void pao()//前进
{
analogWrite(m1,140);
analogWrite(m2,0);
analogWrite(m3,140 );
analogWrite(m4,0);
}
void zuozhuan()
{
analogWrite(m1,140);
analogWrite(m2,0);
analogWrite(m3,30);
analogWrite(m4,0);
}
void youzhuan()
{
analogWrite(m1,30);
analogWrite(m2,0);
analogWrite(m3,160);
analogWrite(m4,0);
}
void youzhuanj()
{
analogWrite(m1,0);
analogWrite(m2,0);
analogWrite(m3,180);
analogWrite(m4,0);
}
void zuozhuanj()
{
analogWrite(m1,150);
analogWrite(m2,0);
analogWrite(m3,0);
analogWrite(m4,0);
}
void shache()//定义刹车
{
analogWrite(m1,0);
analogWrite(m2,0);
analogWrite(m3,0);
analogWrite(m4,0);
}
void youzhijiaowan()
{
analogWrite(m1,225);
analogWrite(m2,0);
analogWrite(m3,30);
analogWrite(m4,0);
}
void zuozhijiaowan()
{
analogWrite(m1,0);
analogWrite(m2,0);
analogWrite(m3,250);
analogWrite(m4,0);
}
void xunji()
{
out[0] = digitalRead(out1);
out[1] = digitalRead(out2);
out[2] = digitalRead(out3);
out[3] = digitalRead(out4);
out[4] = digitalRead(out5);
if ( ((out[0] == 0) && (out[1] == 0)&&(out[2] == 0) && (out[3] == 0) && (out[4] == 0)) )
{
i=i++;
if(i==2)
{
shache();
delay(200);
zuozhijiaowan();
delay(200);
}
else if(i>=3)
{
pao();
delay(20);
shache();
}
else
pao();
}
else if ((out[0] == 1) && (out[1] == 1) && (out[2] == 1) && (out[3] == 1) && (out[4] == 1))
{
if(bx==0)
{
delay(200);
pao();
}
}
else if ((out[0] == 1) && (out[1] == 1) && (out[2] == 0) && (out[3] == 1) && (out[4] == 1))
{
pao();
}
else if ((out[0] == 1) && (out[1] == 0) && (out[2] == 1) && (out[3] == 1) && (out[4] == 1))
{
youzhuan();
}
else if ((out[0] == 0) && (out[1] == 1) && (out[2] == 1) && (out[3] == 1) && (out[4] == 1))
{
youzhuan();
if ((out[0] == 1) && (out[1] == 1) && (out[2] == 1) && (out[3] == 1) && (out[4] == 1))
{
zuozhuan();
}
}
else if ((out[0] == 1) && (out[1] == 1) && (out[2] == 1) && (out[3] == 0) && (out[4] == 1))
{
zuozhuan();
}
else if ((out[0] == 1) && (out[1] == 1) && (out[2] == 1) && (out[3] == 1) && (out[4] == 0))
{
zuozhuanj();
if ((out[0] == 1) && (out[1] == 1) && (out[2] == 1) && (out[3] == 1) && (out[4] == 1))
{
zuozhuan();
}
}
}
void duankou()
{
out[0] = digitalRead(out1);
out[1] = digitalRead(out2);
out[2] = digitalRead(out3);
out[3] = digitalRead(out4);
out[4] = digitalRead(out5);
}
void bizhang()
{
while(1)
{
distance();
if(juli<=60&&juli>10)
{
if(juli<35&&juli>10)
{
shache();
youzhijiaowan();
delay(70);
distance();
if(juli>60)
{
while(1)
{
pao();
duankou();
if ((out[0] == 0) || (out[1] == 0) || (out[2] == 0))
{
shache();
delay(200);
zuozhijiaowan();
delay(150);
break;
}
}
}
}
else
xunji();
}
else
xunji();
}
}
void loop()
{
bizhang();
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1