|
|
设想的情况是小车在探测到障碍物时能够停下来,然后转向,但是实测时,小车会一直撞到障碍物上,然后大概过上1秒才能有反应,这种情况咋么破?
小车装4个传感器, 前方两个为F1,F2, 左右各为L,R,原定探测距离20CM时反应,各种撞墙,后来放大到35,还是一样会撞上。
代码是ardublock生成的,大神帮忙看下哪里有问题。
代码如下:
int _ABVAR_4_R;
int _ABVAR_1_F1;
int _ABVAR_2_F2;
int _ABVAR_3_L;
int ardublockUltrasonicSensorCodeAutoGeneratedReturnCM(int trigPin, int echoPin)
{
int duration;
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(5);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
duration = duration / 59;
return duration;
}
void setup()
{
digitalWrite( 8 , LOW );
_ABVAR_2_F2 = 0;
digitalWrite( 12 , LOW );
Serial.begin(9600);
pinMode( 2 , OUTPUT);
_ABVAR_3_L = 0;
digitalWrite( 10 , LOW );
pinMode( 5 , OUTPUT);
_ABVAR_1_F1 = 0;
pinMode( 3 , OUTPUT);
_ABVAR_4_R = 0;
pinMode( 4 , OUTPUT);
digitalWrite( 6 , LOW );
}
void loop()
{
_ABVAR_1_F1 = ardublockUltrasonicSensorCodeAutoGeneratedReturnCM( 10 , 11 ) ;
delay( 75 );
Serial.print( "Distance F1(cm):" );
Serial.print( _ABVAR_1_F1 );
Serial.println("");
_ABVAR_2_F2 = ardublockUltrasonicSensorCodeAutoGeneratedReturnCM( 8 , 9 ) ;
delay( 75 );
Serial.print( "Distance F2(cm):" );
Serial.print( _ABVAR_2_F2 );
Serial.println("");
_ABVAR_3_L = ardublockUltrasonicSensorCodeAutoGeneratedReturnCM( 12 , 13 ) ;
delay( 75 );
Serial.print( "Distance L(cm):" );
Serial.print( _ABVAR_3_L );
Serial.println("");
_ABVAR_4_R = ardublockUltrasonicSensorCodeAutoGeneratedReturnCM( 6 , 7 ) ;
delay( 75 );
Serial.print( "Distance R(cm):" );
Serial.print( _ABVAR_4_R );
Serial.println("");
digitalWrite( 2 , LOW );
digitalWrite( 3 , LOW );
digitalWrite( 4 , LOW );
digitalWrite( 5 , LOW );
if (( ( ( ( _ABVAR_1_F1 ) >= ( 35 ) ) && ( ( _ABVAR_2_F2 ) >= ( 35 ) ) ) && ( ( ( _ABVAR_3_L ) >= ( 25 ) ) && ( ( _ABVAR_4_R ) >= ( 25 ) ) ) ))
{
digitalWrite( 2 , HIGH );
digitalWrite( 3 , LOW );
digitalWrite( 4 , HIGH );
digitalWrite( 5 , LOW );
delay( 30 );
}
else
{
if (( ( ( ( _ABVAR_1_F1 ) < ( 35 ) ) && ( ( _ABVAR_2_F2 ) >= ( 35 ) ) ) && ( ( ( _ABVAR_3_L ) >= ( 25 ) ) && ( ( _ABVAR_4_R ) >= ( 25 ) ) ) ))
{
digitalWrite( 2 , HIGH );
digitalWrite( 3 , LOW );
digitalWrite( 4 , LOW );
digitalWrite( 5 , HIGH );
delay( 61 );
}
else
{
if (( ( ( ( _ABVAR_1_F1 ) >= ( 35 ) ) && ( ( _ABVAR_2_F2 ) < ( 35 ) ) ) && ( ( ( _ABVAR_3_L ) >= ( 25 ) ) && ( ( _ABVAR_4_R ) >= ( 25 ) ) ) ))
{
digitalWrite( 2 , LOW );
digitalWrite( 3 , HIGH );
digitalWrite( 4 , HIGH );
digitalWrite( 5 , LOW );
delay( 61 );
}
else
{
if (( ( ( ( _ABVAR_1_F1 ) >= ( 35 ) ) && ( ( _ABVAR_2_F2 ) >= ( 35 ) ) ) && ( ( ( _ABVAR_3_L ) < ( 25 ) ) && ( ( _ABVAR_4_R ) >= ( 25 ) ) ) ))
{
digitalWrite( 2 , HIGH );
digitalWrite( 3 , LOW );
digitalWrite( 4 , HIGH );
digitalWrite( 5 , LOW );
delay( 30 );
}
else
{
if (( ( ( ( _ABVAR_1_F1 ) >= ( 35 ) ) && ( ( _ABVAR_2_F2 ) >= ( 35 ) ) ) && ( ( ( _ABVAR_3_L ) >= ( 25 ) ) && ( ( _ABVAR_4_R ) < ( 25 ) ) ) ))
{
digitalWrite( 2 , HIGH );
digitalWrite( 3 , LOW );
digitalWrite( 4 , HIGH );
digitalWrite( 5 , LOW );
delay( 30 );
}
else
{
if (( ( ( ( _ABVAR_1_F1 ) < ( 35 ) ) && ( ( _ABVAR_2_F2 ) >= ( 35 ) ) ) && ( ( ( _ABVAR_3_L ) < ( 25 ) ) && ( ( _ABVAR_4_R ) >= ( 25 ) ) ) ))
{
digitalWrite( 2 , HIGH );
digitalWrite( 3 , LOW );
digitalWrite( 4 , LOW );
digitalWrite( 5 , HIGH );
delay( 82 );
}
else
{
if (( ( ( ( _ABVAR_1_F1 ) < ( 35 ) ) && ( ( _ABVAR_2_F2 ) < ( 35 ) ) ) && ( ( ( _ABVAR_3_L ) >= ( 25 ) ) && ( ( _ABVAR_4_R ) >= ( 25 ) ) ) ))
{
digitalWrite( 2 , HIGH );
digitalWrite( 3 , LOW );
digitalWrite( 4 , LOW );
digitalWrite( 5 , HIGH );
delay( 123 );
}
else
{
if (( ( ( ( _ABVAR_1_F1 ) < ( 35 ) ) && ( ( _ABVAR_2_F2 ) < ( 35 ) ) ) && ( ( ( _ABVAR_3_L ) < ( 25 ) ) && ( ( _ABVAR_4_R ) < ( 25 ) ) ) ))
{
digitalWrite( 2 , HIGH );
digitalWrite( 3 , LOW );
digitalWrite( 4 , HIGH );
digitalWrite( 5 , LOW );
delay( 245 );
}
else
{
if (( ( ( ( _ABVAR_1_F1 ) >= ( 35 ) ) && ( ( _ABVAR_2_F2 ) < ( 35 ) ) ) && ( ( ( _ABVAR_3_L ) < ( 25 ) ) && ( ( _ABVAR_4_R ) >= ( 25 ) ) ) ))
{
digitalWrite( 2 , HIGH );
digitalWrite( 3 , LOW );
digitalWrite( 4 , LOW );
digitalWrite( 5 , HIGH );
delay( 123 );
}
else
{
if (( ( ( ( _ABVAR_1_F1 ) >= ( 35 ) ) && ( ( _ABVAR_2_F2 ) < ( 35 ) ) ) && ( ( ( _ABVAR_3_L ) >= ( 25 ) ) && ( ( _ABVAR_4_R ) < ( 25 ) ) ) ))
{
digitalWrite( 2 , LOW );
digitalWrite( 3 , HIGH );
digitalWrite( 4 , HIGH );
digitalWrite( 5 , LOW );
delay( 82 );
}
else
{
if (( ( ( ( _ABVAR_1_F1 ) >= ( 35 ) ) && ( ( _ABVAR_2_F2 ) >= ( 35 ) ) ) && ( ( ( _ABVAR_3_L ) < ( 25 ) ) && ( ( _ABVAR_4_R ) < ( 25 ) ) ) ))
{
digitalWrite( 2 , HIGH );
digitalWrite( 3 , LOW );
digitalWrite( 4 , HIGH );
digitalWrite( 5 , LOW );
delay( 30 );
}
else
{
if (( ( ( ( _ABVAR_1_F1 ) >= ( 35 ) ) && ( ( _ABVAR_2_F2 ) < ( 35 ) ) ) && ( ( ( _ABVAR_3_L ) < ( 25 ) ) && ( ( _ABVAR_4_R ) < ( 25 ) ) ) ))
{
digitalWrite( 2 , LOW );
digitalWrite( 3 , HIGH );
digitalWrite( 4 , HIGH );
digitalWrite( 5 , LOW );
delay( 163 );
}
else
{
if (( ( ( ( _ABVAR_1_F1 ) < ( 35 ) ) && ( ( _ABVAR_2_F2 ) < ( 35 ) ) ) && ( ( ( _ABVAR_3_L ) >= ( 25 ) ) && ( ( _ABVAR_4_R ) < ( 25 ) ) ) ))
{
digitalWrite( 2 , LOW );
digitalWrite( 3 , HIGH );
digitalWrite( 4 , HIGH );
digitalWrite( 5 , LOW );
delay( 123 );
}
else
{
if (( ( ( ( _ABVAR_1_F1 ) < ( 35 ) ) && ( ( _ABVAR_2_F2 ) >= ( 35 ) ) ) && ( ( ( _ABVAR_3_L ) < ( 25 ) ) && ( ( _ABVAR_4_R ) < ( 25 ) ) ) ))
{
digitalWrite( 2 , HIGH );
digitalWrite( 3 , LOW );
digitalWrite( 4 , LOW );
digitalWrite( 5 , HIGH );
delay( 163 );
}
if (( ( ( ( _ABVAR_1_F1 ) < ( 35 ) ) && ( ( _ABVAR_2_F2 ) < ( 35 ) ) ) && ( ( ( _ABVAR_3_L ) < ( 25 ) ) && ( ( _ABVAR_4_R ) >= ( 25 ) ) ) ))
{
digitalWrite( 2 , HIGH );
digitalWrite( 3 , LOW );
digitalWrite( 4 , LOW );
digitalWrite( 5 , HIGH );
delay( 123 );
}
else
{
if (( ( ( ( _ABVAR_1_F1 ) < ( 35 ) ) && ( ( _ABVAR_2_F2 ) >= ( 35 ) ) ) && ( ( ( _ABVAR_3_L ) >= ( 25 ) ) && ( ( _ABVAR_4_R ) < ( 25 ) ) ) ))
{
digitalWrite( 2 , HIGH );
digitalWrite( 3 , LOW );
digitalWrite( 4 , LOW );
digitalWrite( 5 , HIGH );
delay( 123 );
}
}
}
{
}
}
}
}
}
}
}
}
}
}
}
}
}
}
|
|