5 ultraschallsensoren und 7 leds

Hallo forum,

ich bin gerade dabei meinen kollisionserkennungssystem mit 5 ultraschallsensoren und 7 leds,

4 ultraschallsensoren für die 4 richtungen, und einer ist für die höhen messung.

die leds helfen mir das ganze besser zuerkennen!!

Ich habe jetzt mit drei probiert es funktioniert problemlos, bei 4 geht es nicht mehr und bei 5 hab ich kein plan mehr, hängt es von strom aufnahme oder wegen mein programm, bitte hilfe…

vielen dank im Vorraus

Bau mal einen zeitlichen Versatz während der Abfrage der einzelnen Sensoren ein. Wahrscheinlich bekommen deine Sensoren das Echo eines anderen wenn alle gleichzeitig abgefragt werden...

Das mit den Pausen (delay, auch wenn es nicht gern gesehen wird :wink: ) zwischen den einzelnen Sensoren wurde schon angesprochen und die Pins D0 und D1 solltest du nicht beschalten, diese werden vom USB-Serialwandler verwendet und du kannst so Probleme beim Flashen deines Sketches bekommen.

Und setze deinen Sketch bitte in Code-Tags, nicht in “Quote-Tags”. Mit Code-tags ist dieser besser zu lesen.

Verwende Schaltfläche </> oben links im Editor.

das mit millis zu machen ist fast kürzer als 7x delay zu nehmen. :wink: noch eleganter wäre es den nächsten abzufragen, so bald man vom vorherigen die Antwort hat....

MaHa76:
das mit millis zu machen ist fast kürzer als 7x delay zu nehmen. :wink:

Für jemanden der es kann, bin ich bei dir.
Aber ein “blutiger Anfänger” tut sich da sehr schwer.
Man sieht ja schon, welche Problem noch vorhanden sind.
Deshalb lieber erst mal “kleine Brötchen backen” !

Wow danke für die schnellen Antworten, also Pin 12 und 13 kann ich ändern, das ist kein Problem. Sorry wegen den Code nächstes mal mach ich es besser :).
Also wenn ich es jetzt richtig verstanden habe muss ich alle delays weg geben!! Und was versteh ich unter "zeitlichen versatz" ist das so das einer nach dem andern abgefragt werden?

Zeitlicher Versatz heißt "Pause einfügen".

Und bitte ändere die Quote-Tags noch nachträglich. Das kannst du machen, wenn du auf deinem 1. Thread auf "more - modify" klickst und dann die Tags überschreibst.
Dann liest sich das besser.

Für die Problemlösung wäre ein etwas präzisere Fehlerbeschreibung als “bei 4 geht es nicht mehr und bei 5 hab ich kein plan mehr,” hilfreich.

Vor allem bei " hab ich kein plan mehr" können wir schwer helfen.

Ich glaube nicht, dass es am mangelnden zeitlichen Versatz liegt.
Schliesslich ist nach jedem Sensorlesen eine Serielle Ausgabe mit 9600baud drin, das sollte für genug Abstand sorgen.

Anstelle der drei Funktionen niedrig(), mittig(), hoch() würde ich nur eine Funktion nehmen, die den Sensor einmal abfragt, und dann den Wert für die 3 LEDs auswertet.

void forthsensor(){ // This function is for forth sensor.
    int duration4, distance4;
    digitalWrite (trigPin4, HIGH);
    delayMicroseconds (10);
    digitalWrite (trigPin4, LOW);
    duration4 = pulseIn (echoPin4, HIGH);
    distance4 = (duration4/2) / 29.1;

      Serial.print("Hoehe: "); 
      Serial.print(distance4);
      Serial.print("cm");
 
    if (distance4 < 20) {  // Change the number for long or short distances.
      digitalWrite (ledPin4, HIGH);
    }
 else {
      digitalWrite (ledPin4, LOW);
    } 
    
    if (distance4 < 100) {  // Change the number for long or short distances.
      digitalWrite (ledPin5, HIGH);
    }
 else {
      digitalWrite (ledPin5, LOW);
    }  
    if (distance4 < 200) {  // Change the number for long or short distances.
      digitalWrite (ledPin6, HIGH);
    }
 else {
      digitalWrite (ledPin6, LOW);
    }  
}

(Man könnte natürlich auch nur eine Funktion schreiben, an die der gewünschte Kanal übergeben wird, aber das kommt erst im Kapitel für Fortgeschrittene…)

Den Code hab ich jetzt

HotSystems:
Zeitlicher Versatz heißt "Pause einfügen".

Und bitte ändere die Quote-Tags noch nachträglich. Das kannst du machen, wenn du auf deinem 1. Thread auf "more - modify" klickst und dann die Tags überschreibst.
Dann liest sich das besser.

So geändert

guntherb:
Für die Problemlösung wäre ein etwas präzisere Fehlerbeschreibung als “bei 4 geht es nicht mehr und bei 5 hab ich kein plan mehr,” hilfreich.

Vor allem bei " hab ich kein plan mehr" können wir schwer helfen.

Ich glaube nicht, dass es am mangelnden zeitlichen Versatz liegt.
Schliesslich ist nach jedem Sensorlesen eine Serielle Ausgabe mit 9600baud drin, das sollte für genug Abstand sorgen.

Anstelle der drei Funktionen niedrig(), mittig(), hoch() würde ich nur eine Funktion nehmen, die den Sensor einmal abfragt, und dann den Wert für die 3 LEDs auswertet.

void forthsensor(){ // This function is for forth sensor.

int duration4, distance4;
   digitalWrite (trigPin4, HIGH);
   delayMicroseconds (10);
   digitalWrite (trigPin4, LOW);
   duration4 = pulseIn (echoPin4, HIGH);
   distance4 = (duration4/2) / 29.1;

Serial.print("Hoehe: ");
     Serial.print(distance4);
     Serial.print(“cm”);

if (distance4 < 20) {  // Change the number for long or short distances.
     digitalWrite (ledPin4, HIGH);
   }
else {
     digitalWrite (ledPin4, LOW);
   }
   
   if (distance4 < 100) {  // Change the number for long or short distances.
     digitalWrite (ledPin5, HIGH);
   }
else {
     digitalWrite (ledPin5, LOW);
   }  
   if (distance4 < 200) {  // Change the number for long or short distances.
     digitalWrite (ledPin6, HIGH);
   }
else {
     digitalWrite (ledPin6, LOW);
   }  
}




*(Man könnte natürlich auch nur eine Funktion schreiben, an die der gewünschte Kanal übergeben wird, aber das kommt erst im Kapitel für Fortgeschrittene...)*

Aha okay vielen Dank. Ich probiers heute am Abend aus. Und tut mir leid wegen mein Problem Beschreibung, ich bessere mich bestimmt :wink:

Die von mir skizzerte Funktion wird dein Problem wahrscheinlich nicht lösen.

Aber was genau nicht mehr geht, wie sich der Fehler äußert, unter welchen Bedingungen er auftritt ist schon wichtig.
du gibst dein Auto ja auch nicht in der Werkstatt ab mit den Wort: "Der geht nicht mehr"

Banshin:
Den Code hab ich jetzt
So geändert

Prima, sieht gut aus.

Interessant wäre auch, wie du die Sensoren befestigt hast. Die sollten auch mechanisch voneinander isoliert sein.

hi nochmals, also ich habe jetzt mit einem freund von mir über mein Problem gesprochen, und er meinte den Ultraschallsensor was ich verwende (HC-SR04) ist nicht so gut!! ich soll lieber die SRF modulle verwenden? was meint ihr?

und "hotsystem" ich verwende momentan einfach einen breadboard wo ich alles drauf angeschlossen hab, wenn das Problem gelöst ist, dann bau ich mir eine Platine!

Wenn es mit 4 gut läuft und mit 5 nicht, ist es schwierig zu behaupten die Sensoren wären generell schlecht. Ich sehe da die Schwäche vielmehr in der konkreten Anwendung.

Und diese Sensoren wurden schon mehrfach eingesetzt, auch in größerer Stückzahl in einem Projekt.

Wenn der Aufbau gut gemacht ist und der Sketch auch richtig programmiert, läuft das auch mit den "billigeren" Modulen.

Edit:

Beim Breadboard musst du unbedingt drauf achten, das die alle in eine andere Richtung zeigen.

MaHa76:
Wenn es mit 4 gut läuft und mit 5 nicht, ist es schwierig zu behaupten die Sensoren wären generell schlecht. Ich sehe da die Schwäche vielmehr in der konkreten Anwendung.

ja stimmt, die andere möglichkeit ist die dass ich alles vom arduino versorge,also die versorgungsspanung kommt vom Arduino, ich probiere jetzt mal extern die ultraschallsensoren zuversorgen mit eine batarie,, vielleicht klappt es!!

ja ich habe die sensoren auch in verschiedene richtungen gestellt!

aber ich glaube der Arduino hält die 5 sensoren nicht aus?

Banshin:
aber ich glaube der Arduino hält die 5 sensoren nicht aus?

Also die Stromaufnahme allein ist nicht das Problem.

Die ziehen ca. 2 mA und das mal 5 sind 10 mA, dass schafft der Uno problemlos.

hmm wo kanns dann daran liegen,, hängt es wirklich nur vom programm ab! Ich habe da was gefunden, aber es ist für mich sehr kompliziert :frowning:

https://bitbucket.org/teckel12/arduino-new-ping/wiki/Home

Was hilf dir das weiter ?

Wenn du nur kopierst, wirst du es nie lernen.

Du must deinen Sketch sauber aufbauen und prüfen wo es dran liegt.

Prüfe deine Sensoren einzeln nacheinander, indem du alle anderen auskommentierst.

ja stimmt, sorry hab nur kurz aufgegeben..

ich kontrolliere alles mal in aller ruhe,, und meld mich nochmals..

sorry aber ich probiere seit zwei wochen herum, und komme nicht auf was gescheites :((