- 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();
- }
復制代碼
|