Wir haben in der Schule ein Projekt wo wir ein auto programmieren müssen das einen Ultraschallsensor vorne und einen an der rechen seite hat. Wenn beim vorderen Abstand der die Entfernung <10 ist soll er anhalten. beim Sensor an der rechten seite soll es wenn die entfernung >25 ist eine 90 grad drehung machen und sozusagen einparken. Das Problem liegt jetzt darin, dass es nicht beide Bedingungen gleichztitig abfragt sondern immer nur eine Bedingung erfüllt. kann uns dabei jemand helfen!!!
int SENDEN = 4;
int SENDEN2= 2;
// Pin für das vom Objekt reflektierte Signal
int ECHO = 3;
int ECHO2 = 1;
// Variable für die Speicherung der Entfernung
long Entfernung = 0;
long Entfernung2= 0;
//Gleichsterommotor 1
int GSM1 = 10;
int vor = 9;
int ruck = 8;
//Gleichstrommotor 2
int GSM2 = 5;
int vor2 = 7;
int ruck2 = 6;
void setup()
{
pinMode(SENDEN, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(SENDEN2,OUTPUT);
pinMode(ECHO2, INPUT);
pinMode(GSM1, OUTPUT);
pinMode(GSM2, OUTPUT);
pinMode(vor, OUTPUT);
pinMode(ruck, OUTPUT);
pinMode(vor2, OUTPUT);
pinMode(ruck2, OUTPUT);
// Seriellen Monitor starten
Serial.begin(9600);
}
void loop()
{
// Sender kurz ausschalten um Störungen des Signal zu vermeiden
digitalWrite(SENDEN, LOW);
delay(5);
digitalWrite(SENDEN2, LOW);
delay(5);
// Signal für 10 Micrsekunden senden, danach wieder ausschalten
digitalWrite(SENDEN, HIGH);
delayMicroseconds(10);
digitalWrite(SENDEN, LOW);
digitalWrite(SENDEN2, HIGH);
delayMicroseconds(10);
digitalWrite(SENDEN2, LOW);
// pulseIn -> Zeit messen, bis das Signal zurückkommt
long Zeit = pulseIn(ECHO, HIGH);
long Zeit2= pulseIn(ECHO2,HIGH);
// Entfernung in cm berechnen
// Zeit/2 -> nur eine Strecke
Entfernung = (Zeit / 2) * 0.03432;
Entfernung2= (Zeit2 / 2) *0.03432;
digitalWrite(vor,HIGH);
digitalWrite(vor2,HIGH);
digitalWrite(ruck,LOW);
digitalWrite(ruck2,LOW);
analogWrite(GSM1, 200);
analogWrite(GSM2, 200);
if(Entfernung2 >25){
digitalWrite(vor,LOW); //wenn Parklücke erkannt dann stoppen
digitalWrite(vor2,LOW);
digitalWrite(ruck,LOW);
digitalWrite(ruck2,LOW);
delay(500);
digitalWrite(vor,HIGH); //90° Drehung
analogWrite(GSM1,200);
delay(950);
digitalWrite(vor2,HIGH); //in die Parklücke fahren
analogWrite(GSM2,200);
delay(1000);
digitalWrite(vor,LOW);
digitalWrite(vor2,LOW);
}
else if (Entfernung<10){
digitalWrite(vor,LOW);
digitalWrite(vor2,LOW);
digitalWrite(ruck,LOW);
digitalWrite(ruck2,LOW);
}
else{
digitalWrite(vor,HIGH);
digitalWrite(vor2,HIGH);
digitalWrite(ruck,LOW);
digitalWrite(ruck2,LOW);
analogWrite(GSM1, 200);
analogWrite(GSM2, 200);
}
}
das ist unser programm
Viele grüße Cybermorg