这个是我用3个超声波传感器做的壁障探测小车,我的目标是做6个超声波传感器的,但是这个程序为什么在3个超声波的时候程序就失效了,只有2个超声波传感器有效- int inputPin=2;
- int outputPin=3;
- //////////////
- int inputPin1=12;
- int outputPin1=13;
- ////////
- int inputPin2=0;
- int outputPin2=1;
- ///////
- int distance;
- int distance1;
- int distance2;
- void setup()
- {
- Serial.begin(9600);
- //第一个超声波
- pinMode(inputPin,INPUT);
- pinMode(outputPin,OUTPUT);
- //第2个超声波
-
- pinMode(inputPin1,INPUT);
- pinMode(outputPin1,OUTPUT);
- //
- pinMode(inputPin2,INPUT);
- pinMode(outputPin2,OUTPUT);
-
- //小车运动
- pinMode(8,OUTPUT);
- pinMode(9,OUTPUT);
- pinMode(11,OUTPUT);
- pinMode(5,OUTPUT);
- pinMode(6,OUTPUT);
- pinMode(7,OUTPUT);
- }
- void loop()
- {
- //第一个超声波
- digitalWrite(outputPin,LOW);
- delayMicroseconds(2);
- digitalWrite(outputPin,HIGH);
- delayMicroseconds(10);
- int distance=pulseIn(inputPin,HIGH);
- distance=distance/58;
- //第二个超声波
- digitalWrite(outputPin1,LOW);
- delayMicroseconds(2);
- digitalWrite(outputPin1,HIGH);
- delayMicroseconds(10);
- distance1=pulseIn(inputPin1,HIGH);
- distance1=distance1/58;
- //第3个超声波
- digitalWrite(outputPin2,LOW);
- delayMicroseconds(2);
- digitalWrite(outputPin2,HIGH);
- delayMicroseconds(10);
- distance2=pulseIn(inputPin2,HIGH);
- distance2=distance2/58;
-
- //
- //Serial.print("distance = ");
- //Serial.println(distance);
- //
- Serial.print(",distance = ");
- Serial.println(distance1);
- //
- Serial.print(",distance = ");
- Serial.println(distance2);
-
-
- Goahead();
- delay(20);
- if( distance >= 50)
- {
- // digitalWrite(ledpin,HIGH);
- // delay(100);
- Goahead();
- }
- else
- {
- // digitalWrite(ledpin,LOW);
- //delay(100);
- Turn_left();
- }
-
- if( distance1 >= 50 )
- {
- // digitalWrite(ledpin,HIGH);
- // delay(100);
- // Goahead();
- }
- else
- {
- // digitalWrite(ledpin,LOW);
- //delay(100);
- //Stop();
- Turn_right();
- }
-
-
- if( distance2 >= 50)
- {
- // digitalWrite(ledpin,HIGH);
- // delay(100);
- Goahead();
- }
- else
- {
- // digitalWrite(ledpin,LOW);
- //delay(100);
- Stop();
- }
-
-
- }
-
- ///////////////////////////////
- void Goahead()
- {
- analogWrite(5,145);
- digitalWrite(6,HIGH);
- digitalWrite(7,LOW);
- analogWrite(11,160);
- digitalWrite(8,HIGH);
- digitalWrite(9,LOW);
- }
- void Stop()//停止程序
- {
- digitalWrite(6,HIGH);
- digitalWrite(7,HIGH);
- digitalWrite(8,HIGH);
- digitalWrite(9,HIGH);
- }
-
- void Turn_right()//右转
- {
- analogWrite(5,165);
- digitalWrite(6,LOW);
- digitalWrite(7,HIGH);
- analogWrite(11,140);
- digitalWrite(8,HIGH);
- digitalWrite(9,LOW);
- }
- void Turn_left()
- {
- analogWrite(5,165);
- digitalWrite(6,HIGH);
- digitalWrite(7,LOW);
- analogWrite(11,160);
- digitalWrite(8,LOW);
- digitalWrite(9,HIGH);
-
- }
复制代码 |