PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie funktioniert Arduino Ultraschalll library?



RoboterSindCool
25.03.2015, 14:46
Hallo an alle Anwesenden,
ich will (für eine Roboter) bis zu 8 Ultraschall sensoren an eine Arduino mega anschließen und will dafür natürlich eine library verwenden.
Ich habe nun diese hier:

http://blog.iteadstudio.com/arduino-library-for-ultrasonic-ranging-module-hc-sr04/

ich verstehe aber nicht wie sie funktioniert.
Ich will einfach nur mit einem Methodenaufruf die entfernung in cm bekommen. (Davor natürlich noch objekt davon erstellen).
Muss ich jetzt die Methode Timing() oder die Methode Ranging() aufrufen?

kann ich vielleicht in die Methode Timing unten einfügen:

distacne_cm = duration /29 / 2 ;
return distacne_cm;


und dann die Methode Ranging löschen und alles in der h. Datei anpassen?



Danke für jede Hilfe,

RoboterSindCool

danimath
25.03.2015, 16:18
Moin,

in der Doku, die Du angegeben hast, steht's doch: TIMING () gibt die Zeit zurück, RANGING () die Entfernung in cm oder Inch. Aber warum überhaupt den Overhead einer Library. Guckst Du hier: http://randomnerdtutorials.com/complete-guide-for-ultrasonic-sensor-hc-sr04/. Ein paar Aufrufe, die Du bequem in eine Funktion packen kannst.

viele Grüße
Andreas

Sisor
25.03.2015, 17:47
Bei der 'NewPing'-Bibliothek ist ein Beispiel mit 15 US-Sensoren dabei.

RoboterSindCool
26.03.2015, 07:22
Also gut: Danke schön an Sisor und danimath.
Ich habe es nun verstanden, ich habe einfach nur übersehen, dass die Ranging Methode erst die Timing Methode aufruft. Ich habe es bis jetzt mit 4 HC-SR04 angeschlossen versucht und es hat wunderbar funktioniert.

Danke

Thie
26.03.2015, 11:00
Du musst halt aufpassen, da die meisten Beispiele und auch die Library die Arduino Funktion pulseIn() ohne Timeout verwenden!
Dann wird maximal 1 Sekunde gewartet, sollte mal nichts in Reichweite sein!
Das kann dann bei 8 Sensoren ganz schön lange dauern!

Sisor
26.03.2015, 18:29
Du musst halt aufpassen, da die meisten Beispiele und auch die Library die Arduino Funktion pulseIn() ohne Timeout verwenden!
Dann wird maximal 1 Sekunde gewartet, sollte mal nichts in Reichweite sein!
Das kann dann bei 8 Sensoren ganz schön lange dauern!

Bei NewPing-Lib:
NewPing(uint8_t trigger_pin, uint8_t echo_pin, int max_cm_distance );
Mit max_cm_distance kann man indirekt die maximale Echowartezeit bestimmen.
Mal ne Rechnung: Bei 2m maximal zu Detektierenden Entfernung sind das

2m / 340 m*s^-1 = 6ms.

6ms * 2 = 12ms (Hinweg = Rückweg, Gesamtweg = 2 * Hinweg)

HaWe
27.03.2015, 10:29
... und wieder zurück macht 12ms.

Man kann aber US-Sensoren, die in völlig verschiedene Richtungen zeigen (ohne Gefahr der Echo- und Reflex-Echo-Überlappung) auch unmittelbar nacheinander zum Senden triggern und dann gemeinsam auf ihre Echos warten lassen - das spart Wartezeit... 8-)

RoboterSindCool
11.04.2015, 18:15
Danke HaWe und Sisor

ich habe die newPing library verwendet und es hat wunderbar funktioniert.
Es spart tatsächlich zeit die MAXDISTANZ auf die wirklich benötigte distanz zu minimieren

Vielen Dank an alle und an dieses Forum !!!

RoboterSindCool