Okay das verstehe ich das dass ned der perfekte Weg ist!
Nur welche Funktion ist dann die richtige?
Das geht auch, mit globalen Variablen oder Addressübergabe. Nur ist das nicht der konventionelle Weg.Nur hab ich schon Beispiel Programme gesehen, wo die das auch mit "void" gemacht haben - komisch
Beim Initialisieren bestimmt die max_cm_distance letztendlich wie lange die Funktion ping() wartet, bis sie abbricht:
NewPing(trigger_pin, echo_pin, max_cm_distance);
Nach dem Initialisieren wird die max_cm_distance nicht mehr benötigt.
ping gibt den Wert 0 (NO_ECHO) zurück, falls das Echo nicht rechtzeitig eintrifft.
Geändert von Sisor (17.08.2014 um 21:13 Uhr)
Okay das verstehe ich das dass ned der perfekte Weg ist!
Nur welche Funktion ist dann die richtige?
Meine Homepage www.belagra.de
ping_cm() wäre das was du brauchst.Nur welche Funktion ist dann die richtige?
achso muss ich es also so verkürzt machen wie du es gemacht hast und dann keine Unterprogramme?
oder heist es dann "ping_cm scanVORNE_MITTE " oder hab ich es jetzt falsch verstanden ?
Meine Homepage www.belagra.de
Wenn du wissen willst, ob die beim Initialisieren angegebene Distanz unterschritten ist, reicht:
if (VORNE_MITTE.ping_cm()) tuetwas();
okay, ich finde das mega erstaunlich ....
man zerbricht sich den Kopf tage lang ( als Laie ) und dann kommt jemand und sagt dir in 5 Minuten wie es bomben einfach geht!
also wenn ich es richtig verstanden habe sieht der Code nun so aus also der Loop Teil:
Code:void loop() { int vm = VORNE_MITTE.ping_cm(); int vr = VORNE_RECHTS.ping_cm(); int r = RECHTS.ping_cm(); if(vm && vm < triggerDistanz || vr && vr < triggerDistanz || r && r < triggerDistanz) { zurueck_LINKS(); } else { vor(); } int vl = VORNE_RECHTS.ping_cm(); int l = RECHTS.ping_cm(); if(vl && vl < triggerDistanz || l && l < triggerDistanz) { zurueck_RECHTS(); } else { vor(); } }
Meine Homepage www.belagra.de
Eigentlich noch einfacher...
Du solltest dir mal ein bischen Zeit nehmen und die NewPing.h und NewPing.cpp mal in Ruhe durchlesen, da stehen alle Antworten auf deine Fragen drin.Code:void loop() { if(VORNE_MITTE.ping_cm() || VORNE_RECHTS.ping_cm()|| RECHTS.ping_cm()) { zurueck_LINKS(); } else { vor(); } ...
grins wollen wir es nicht übertreiben grins ....
Aber wenn ich das noch einfachere nehme? weis er das dann automatisch? das heist ja wenn die Distanz kleiner ist wie triggerDistanz woher weis er das denn dann ?
brauch ich aber die beiden globalen Variablen noch? ja schon weil sonst weis er es ja nicht was die min und max Distanz ist oder ?
int triggerDistanz = 70;
int MAX_DISTANCE = 100;
Weil das ich es verstehe, warum heist das vl & & vl < triggerDistanz
Wieso zwei mal vl?
Meine Homepage www.belagra.de
Weil du das beim Initialisieren so festlegst.
Wozu brauchst du 2 verschiendene maximale Distanzen?int triggerDistanz = 70;
int MAX_DISTANCE = 100;
vl && vl < triggerDistanzWeil das ich es verstehe, warum heist das vl && vl < triggerDistanz
Wieso zwei mal vl?
bedeutet: wenn vl nicht 0 und vl kleiner als triggerDistanz. Wie oben beschrieben bedeutet 0, dass die maxcmDistance überschritten ist.
Damit würdest du aber nicht nur dir einen GROSSEN GEFALLEN tun.grins wollen wir es nicht übertreiben grins ....
Alles was C und C++ Programieren angeht, ist hundertfach im Netz hinterlegt. Dort kannst du dir deine Fragen selbst beantworten.
In der NewPing Bibliothek ist genau definiert, was die Bibliothek wie macht.
okay weil eigentlich brauche ich ja nur die triggerDistanz das reicht ja schon
Ja das muss ich mir im Netz mal genauer an schauen, ich Suche oft und finde nichts, Muss ich mal nach ein paar gescheiten Seiten suchen!
Und fürs Verständnis - das vl && vl < triggerDistanz - das fehlt ja dann auch wenn du nur schreibst VORNE_MITTE.ping_cm.
Das heist das steht auch in der Bibliothek ...... ?
Ich hab schon nach so vielen NEW PING Beispielen gesucht und gesucht wo die Bibliothek beschrieben ist - aber nichts gefunden![]()
Meine Homepage www.belagra.de
Lesezeichen