Seite 1 von 1

Verständnisfrage zu sleep

Verfasst: Sonntag 6. März 2022, 10:51
von Python_Tom
Hallo Forum,

bin immer noch Anfänger und spiele gerade mit Schallsensor und Entfernungsmessung herum. Ich habe ein Programm im Netz gefunden, das ich an einem Punkt nicht verstehe und bitte um Hilfe.
Python Programm (vom Netz):

Code: Alles auswählen

import time
import RPi.GPIO as GPIO

def measure():
    speed_of_sound = 34300
    GPIO.output(TRIG_PIN, True)
    time.sleep(0.00001)
    GPIO.output(TRIG_PIN, False)
    start = time.time()
    while GPIO.input(ECHO_PIN) == 0:
          start = time.time()
    while GPIO.input(ECHO_PIN) == 1:
          stop = time.time()
    elapsed = stop - start
    distance = (elapsed * speed_of_sound) / 2
    return distance

def measure_average():
     distance1 = measure()
     time.sleep(0.1)
     distance2 = measure()
     time.sleep(0.1)
     distance3 = measure()
     distance = distance1 + distance2 + distance3
     distance = distance / 3
     return distance
.....
Meine Frage richtet sich an die Zeilen im ersten Def Block:
Das Programm aktiviert den GPIO Trig_Pin, wartet 0,01ms und schaltet das GPIO Tri_Pin wieder aus.
Danach kommt die Abfrage ob Echo_Pin gleich 0 oder 1.
Aber wenn es zur Abfrage kommt, ist doch der Trig_Pin schon wieder 0.

Oder läuft das Programm bei einer sleep Time weiter?

Für Antworten bin ich dankbar

Re: Verständnisfrage zu sleep

Verfasst: Sonntag 6. März 2022, 11:07
von Sirius3
So funktioniert nunmal die Entfernungsmessung. Ein kurzer Trigger, damit der Entfernungsmesser weiß, dass er loslegen soll und dann wartet man auf die Antwort.

Re: Verständnisfrage zu sleep

Verfasst: Sonntag 6. März 2022, 11:12
von __deets__
Das ist keine Abfrage, das wäre if. Sondern eine Schleife. Und die wartet, bis der Echo Pin High wird, und dann mit einer zweiten, bis er low wird, und misst damit dies Länge dieses Pulses. Weil das offensichtlich vom USS so vorgegeben ist.

Mit dem Trigger Pin hat das dann doch alles nichts mehr zu tun. Der wurde vorher nur zum Start kurz getoggelt.