Danke für die Info.
Ich habe zum Glück noch einige von unterschiedlichen Anbietern liegen.
Ich werde sie heute Abend mal einbauen und testen.
Ne ordentliche Verkabelung soll heute auch noch folgen.
Mich nervt das Kauderwelsch.
Danke für die Info.
Ich habe zum Glück noch einige von unterschiedlichen Anbietern liegen.
Ich werde sie heute Abend mal einbauen und testen.
Ne ordentliche Verkabelung soll heute auch noch folgen.
Mich nervt das Kauderwelsch.
Warum nutzt du nicht NewPing? Im OP hast du's im Code inkludiert. Das würde den Code wartbarer machen und das Timeout-Problem mittels MAX_DISTANCE_CM lösen:
Code:#include <NewPing.h> //... #define MAX_DISTANCE_CM 200 NewPing sonarFront = NewPing(frontTriggerPin, frontEchoPin, MAX_DISTANCE_CM); //... loop() { //.. auto front_cm = sonarFront.ping_cm(); Serial.println(front_cm); //.. }
Bei mir hatte die NewPing mehr Ärger gemacht, als sie Vorteile haben sollte.
Daher würde _ich_ von abraten. Ist allerdings ne Weile her, möglicherweise wurde da auch einiges gefixt inzwischen.
Man kann auch bei PulseIn ein Timeout angeben: pulseIn(pin, value, timeout)
Siehe: https://www.arduino.cc/reference/en/...ed-io/pulsein/
Grüssle, Sly
..dem Inschenör ist nix zu schwör..
Das weiss ich nicht mehr- ist ne ganze Weile her (darum sagte ich auch, gut möglich, dass da einiges inzwischen verbessert ist).
Dunkel glaube ich, mich daran zu erinnern, dass es dauernd Hakeleien gab, wenn man wirklich mehrere Sensoren betreiben wollte, bin da aber nicht sicher....
Grüssle, Sly
..dem Inschenör ist nix zu schwör..
ich halte solche diffuse Aussagen für absolut nicht hilfreich, v.a. wenn man noch nicht einmal sagen kann welche Version welchen "Ärger" genau gemacht haben soll.
Die Lib gibt es inzwischen in der Version 1.9.x
https://bitbucket.org/teckel12/ardui...ping/wiki/Home
https://bitbucket.org/teckel12/ardui...ing_v1.9.1.zip
Ich würde sie mal testen, und wenn sie wirklich "Ärger" macht, mal genau beschreiben, welchen, mit Beispiel.
Anfangen würde ich mit 1 USS, und wenn der funktioniert, dann den 2. und dann den 3. mit dazu nehmen.
Was grundsätzlich immer "Ärger" machen kann bei verschiedenen USS nebeneinander sind Zweit- und Dritt-Reflex-Echos, die von den jeweils anderen Sensoren stammen - aber das muss man testen, ggf. neu justieren, Ping-Abstände verlängern, ggf. auch wieder auf 2 USS zurückgehen.
Mit den Ultraschallsensoren sollte gar nichts schief gehen. Klar muss nur sein:
1. Jeden Sensor einzeln zu verwenden, niemals mehrere parallel (hatte HaWe schon gesagt), ist eigentlich auch klar, wenn man die Funktionsweise betrachtet.
2. Die Sensoren nach Möglichkeit an unterschiedliche Ports hängen, so dass sie auch physisch dort getrennt sind und für die Programmierung.
Ich habe nur mit einem SRF-05 rumprobiert. Die Beispielcodes sind irre einfach und funktionieren einwandfrei.
Ähnlich sollte es mit den anderen Sensoren auch funktionieren.Code:void loop() { digitalWrite(TRIG_PIN, LOW); delayMicroseconds(2); digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); const unsigned long duration= pulseIn(ECHO_PIN, HIGH); int distance= duration/29/2; if(duration==0){ Serial.println("Warning: no pulse from sensor"); } else{ Serial.print("distance to nearest object: "); Serial.print(distance); Serial.println(" cm"); }
MfG
Lesezeichen