Verständnisfrage zu sleep

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
Python_Tom
User
Beiträge: 3
Registriert: Montag 14. Februar 2022, 22:03

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
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

So funktioniert nunmal die Entfernungsmessung. Ein kurzer Trigger, damit der Entfernungsmesser weiß, dass er loslegen soll und dann wartet man auf die Antwort.
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
Antworten