Ultraschall-Messung programmieren

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Liebe Community,

    da ich leider nur ein Amateur in C++ bin, möchte ich euch gerne um Hilfe bitten.
    Ich habe mir diese Anleitung (Entfernungsmessung mit Ultraschall) angesehen und benutze auf meinem Raspberry Pi die PIGPIO Bibliothek, soweit so gut.
    Ich möchte nun aber gerne, dass ein Signal ausgesendet wird und dann entweder sobald es empfangen wird die Entfernung berechnet und ausgegeben werden soll oder, nach maximal 30 Millisekunden, einfach "Entfernung zu gross" ausgegeben wird. Anschliessend soll sofort ein neues Signal ausgesendet werden.

    Wer kann mir dabei helfen? :helpnew: :danke_ATDE:

    MfG

    Einmal editiert, zuletzt von DaJuBi (7. August 2014 um 02:26)

  • Hallo DaJuBi,

    mit diesem Proggi hab ich mal vor Monaten gespielt.
    Habe mit 2 Sensoren HC-SR04 rumgebastelt, und auch mit timeouts rumgespielt, wenn in best. Zeiten keine Antwort kam.

    Das ist nicht in C++, sondern C.
    Vlt. bringt es Dir was.
    Wie gesagt, das waren Anfänge, aber es hat funktioniert....:lol:

    Evtl. bringt es Dir was.
    viel erfolg

    Das ganze lässt sich natürlich eleganter mit Interrupt und einem puls lösen wie ich es heute mache , aber ... aller Anfang ... :D
    Interrupt hatte ich schon reingebastelt, aber hier wieder entfernt... des lernen willens...

    gruß root

    Einmal editiert, zuletzt von root (7. August 2014 um 04:32)

  • Kannst du mir vlt. eben sagen, was hier dran falsch ist?

    Ich bekomme immer beim Starten den Fehler:
    Unhandled signal 27, terminating

    MfG

    Einmal editiert, zuletzt von DaJuBi (8. August 2014 um 02:29)

  • Hallo, eben noch mal kurz reingeguckt... komm grade von ner 4 Std. Autobahnfahrt, jmnd. abschleppen, und bin müde.
    Aber so auf's kurze.....

    Code
    enum EPins {
        ECHO = 23,
        TRIGGER = 24
    };

    hinter "TRIGGER = 24" fehlt das Komma, und hinter "};" muss das Semikolon weg.
    Ob das die Fehlermeldung erklährt ?, weiss ich noch net

    Ich versuch das heute mal mal nachzuvollziehen, aber etzt gönn ich mir noch ein Bierschen:lol:

    ABER, alle Achtung, als Anfänger wie Du dich bezeichnest geh'st ganz schön ran ... pigpio bißchen ausreizen ... löblich .. :bravo2:

    gruß root

  • Hi DaJuBi.

    Also, ich hab mal Dein Proggi genommen und bei mir durch den Compiler gejagt.
    Nix geht, ich fliege u.A raus wegen "

    Code
    bool bUp, bDown;


    Hat er ja recht, den Datentyp gibt's ja bei C nicht.

    Dann wegen des fehlenden Kommas, "redefined Expression" ...usw.
    Dazu muss ich sagen, ich hab mit "enum"s noch nie gearbeitet, kenn es also (noch) nicht.
    Ich habe die Zeilen mal so abgeändert, wie ich es für richtig halte.

    Den eigentlichen Code hab ich gelassen.
    Frage an Radio Eriwan: Funzt das Programm dann ?
    Antwort: Im Prinzip ja, aber net so recht.:lol::lol::lol:

    Mein Lieblings Oszi angeworfen, und mir das mal angeschaut:
    Ergebnis:
    Nach Ende das Pulses dauert es ~8ms bis zur steigenden Echo-Flanke, das ist ok.
    Neg. Echo-Flanke ist logisch abhängig v.d. Entfernung.
    Jetzt kommt der Hammer.
    IMMER 25 ms nach dem ersten Puls kommt der nächste.
    Da ist aber Echo noch "oben", und dann spinnt iwie der Sensor, auch logisch.
    Dann Pause(n) ~100-300 ms, und auf ein neues.
    Um noch eins draufzusetzen: Unregelmäßig, kommt nach dem ersten Puls ~2ms später der 2.
    Da hatte der Sensor noch gar keine Zeit, was zu machen...:)

    Also, weiter such ich net.. willst ja auch was tun ...:D
    Den Interrupt haut's wegen Flanken und setzten und löschen durcheinander:D
    Ich hoffe bloß, dass ich das durch die Änderungen net war :blush:

    Die geänderten Zeilen sind ganz oben... siehste schon.
    Ich benutze C, C++ ..nie was gemacht.

    Vlt. gibt's nen Denkanstoß, aber erschlag mich net, wenn ich Deinen Interrupt auf's Kreuz gelegt hab.;)
    Gruß root

  • Habt ihr mal das Beispiel das ich im Artikel angehängt hatte ausprobiert?
    Das sollte tun ... denke ich jedenfalls :s

    //EDIT: Signal 27 (Quelle:(
    SIGPROF 27 Profiling alarm clock (4.2 BSD)
    würde mich irgendwie wundern ....


    cheers,
    -ds-

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!