Mein versuch war mehrere Ultraschallsensoren gleichzeitig auszulesen. Für zwei Sensoren war das relativ einfach. Da die Sachen sehr Zeitkritisch sind wollte ich die Sensoren gleichzeitig auslesen. Ich benutze die HC-SR04 Sensoren. Die Sensoren geben nicht gleichzeitig das Signal aus, weswegen ich versucht habe dafür zu sorgen, dass sie trotzdem alle ausgewertet werden. Ich wollte nun Alle Ultraschallsensoren gleichzeitig auslesen. Geht das auch einfacher zu programmieren oder muss ich alle Möglichkeiten einzeln programmieren?
const int pingPin1 = 22; // pins fuer Ultraschall
const int echoPin1 = 23;
const int pingPin2 = 24; // pins fuer Ultraschall
const int echoPin2 = 25;
const int pingPin3 = 30; // pins fuer Ultraschall
const int echoPin3 = 31;
const int pingPin4 = 32; // pins fuer Ultraschall
const int echoPin4 = 33;
int relais1 = 51;
int relais2 = 53;
unsigned long time;
unsigned long time1;
unsigned long time2;
unsigned long time3;
unsigned long time4;
long cm;
int a; //Zeile 20
void setup()
{
pinMode(pingPin1,OUTPUT);
pinMode(echoPin1,INPUT);
pinMode(pingPin2,OUTPUT);
pinMode(echoPin2,INPUT);
pinMode(pingPin3,OUTPUT);
pinMode(echoPin3,INPUT);
pinMode(pingPin4,OUTPUT);
pinMode(echoPin4,INPUT);
digitalWrite(pingPin1, LOW);
digitalWrite(pingPin2, LOW);
digitalWrite(pingPin3, LOW);
digitalWrite(pingPin4, LOW);
pinMode(relais1,OUTPUT);
pinMode(relais2,OUTPUT);
Serial.begin(9600);
}
//Zeile 40
void loop()
{
a=2;
digitalWrite(pingPin1, HIGH);
digitalWrite(pingPin2, HIGH);
delayMicroseconds(10); //Ultraschallsensor Signal zum messen geben
digitalWrite(pingPin1, LOW);
digitalWrite(pingPin2, LOW);
while(a==2) //Anfang des Auslesen der 1.beiden Ultraschallsensoren
{
if (digitalRead(echoPin1)==1)
{
time1=micros();
while(a==2)
{
if(digitalRead(echoPin1)==0)
{
time1=micros()-time1;
while(a==2)
{
if(digitalRead(echoPin2)==1)
{
time2=micros();
while(a==2)
{
if(digitalRead(echoPin2)==0)
{
time2=micros()-time2;
a=1;
}
}
}
}
}
if(digitalRead(echoPin2)==1)
{
time2=micros();
while(a==2)
{
if(digitalRead(echoPin2)==0)
{
time2=micros()-time2;
while(a==2)
{
if(digitalRead(echoPin1)==0)
{
time1=micros()-time1;
a=1;
}
}
}
if(digitalRead(echoPin1)==0)
{
if(digitalRead(echoPin1)==0)
{
time1=micros()-time1;
while(a==2)
{
if(digitalRead(echoPin2)==0)
{
time2=micros()-time2;
a=1;
}
}
}
}
}
}
}
}
if (digitalRead(echoPin2)==2)
{
time2=micros();
while(a==2)
{
if(digitalRead(echoPin2)==0)
{
time1=micros()-time2;
while(a==2)
{
if(digitalRead(echoPin2)==1)
{
time1=micros();
while(a==2)
{
if(digitalRead(echoPin1)==0)
{
time2=micros()-time1;
a=1;
}
}
}
}
}
if(digitalRead(echoPin1)==1)
{
time1=micros();
while(a==2)
{
if(digitalRead(echoPin1)==0)
{
time2=micros()-time1;
while(a==2)
{
if(digitalRead(echoPin2)==0)
{
time1=micros()-time2;
a=1;
}
}
}
if(digitalRead(echoPin1)==0)
{
if(digitalRead(echoPin1)==0)
{
time1=micros()-time1;
while(a==2)
{
if(digitalRead(echoPin2)==0)
{
time2=micros()-time2;
a=1;
}
}
}
}
}
}
}
}
} //Ende des Auswerten der 1.Beiden Ultraschallsensoren
if(time1<time2)
{
time=time1;
}
else
{
time=time2;
}
cm = (time * 340) / 20000;
Serial.println(time);
Serial.println(cm);
}