Mehrere Ultraschall Sensoren auslesen

Hallo zusammen,
Ich bin noch relativ Anfänger und wollte zwei Abstandssensoren an einen Arduino anschließen. Mit einem hat das Werte auslesen schon gut funktioniert, bei zwei Sensoren bekomme ich als Werte nur 1209 und 0. Ich habe schon gelesen, dass sich die Sensoren gegenseitig stören können und hab zum Test ein Delay eingebaut, das hat jedoch auch nicht geholfen.

Hardware: Ich habe eine Arduino Uno Kopie (von AZ-Delivery) benutzt und zwei HC-SR04 Ultraschall Abstandssensoren. Die Trigger und Echo hab ich an die digital Pins angeschlossen. (trigger1 =Pin 2; echo1=Pin 3; trigger2 = Pin 4; echo2= Pin5). Ansonsten halt Ground an Ground und 5V an 5V.

Mein Code:

int trigger = 2;  //triggerpin von Sensor1
int echo = 3;  //echopin von Sensor 1
int trigger2 = 4; //triggerpin von Sensor2 
int echo2 = 5; //echopin von Sensor 2
long entfernung;
long entfernung2;
  long zeit;
  long zeit2;

void setup(){

//pinModes festlegen, echos als input, trigger als Outputs
  pinMode (echo,INPUT);
  pinMode  (trigger, OUTPUT);
  pinMode(echo2, INPUT);
  pinMode(trigger2, OUTPUT);

  Serial.begin (9600);
 
}

void loop(){
  
//Zeit von Sensor 2 auslesen
digitalWrite (trigger2,LOW);
delayMicroseconds (3);
noInterrupts();
digitalWrite(trigger2, HIGH);
delayMicroseconds(10);
digitalWrite(trigger2, LOW);

zeit= pulseIn(echo2,HIGH);
interrupts();
//Zeit von Sensor 1 auslesen ende

//Zeit in Entfernung umrechnen und ausgeben
zeit=(zeit/2);
entfernung = zeit/29,1;
Serial.println(entfernung);


  delay(5000);

//Abstandssensor 1 auslesen
digitalWrite (trigger, LOW);
delayMicroseconds (3);
noInterrupts();
digitalWrite(trigger, HIGH);
delayMicroseconds(10);
digitalWrite(trigger, LOW);
zeit2=pulseIn(echo,HIGH);

//Zeit in Abstand umrechnen
zeit2=(zeit2/2);
entfernung2 = zeit2/29,1;

Serial.println(entfernung2);
delay(5000);

}

Hallo
Du könntest ein paar zusätzliche Anzeigen auf dem Monitor machen Serial.print() um deine Rechnung und Messwerte zu überprüfen.

Als Dezimalpunkt solltest du den Punkt verwenden , nicht das Komma.

Ich bin mir auch im Moment nicht sicher ob das Abschalten der Interrupts so in den Beispielen enthalten ist.

Heinz

Hallo Heinz. Ich hab die NoInterrupts einmal rausgenommen.
Das Komma hab ich gerade geändert, meine Werte sind jetzt als unbearbeitete Zeiten 11558 und 0 (die Sensoren stehen gerade parallel und sollten eigentlich ungefähr den gleichen Wert haben.) und den Weg von 197 und 0.
Sensor 1 gibt zumindest halbwegs vernünftige Werte (sie verändern sich auch wenn ich meine Hand davor halte). Die 0 von dem zweiten Sensor irritiert mich vor allem. Ich hab auch geschaut ob der Sensor defekt ist, aber wenn ich sie tausche passiert das gleiche.

Hallo
D.h es liegt an Pin 4 U Pin 5 ?

Hast du schon Mal zwei andere Pins versucht ?

Ich glaub das wars wirklich. jetzt sind die Werte schon viel besser. Kaputte Pins hatte ich gar nicht auf dem Schirm in dem Moment. Vielen Dank für die Hilfe

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.