dextha
Goto Top

If-Schleife mit python

Hallo zusammen,

ich versuche gerade meine ersten Gehversucht mit pyton auf einem PI. Ich möchte damit einen gpio-Eingang abfragen und mitzählen, wie oft sich der Zustand in einer Minute verändert.
Meine überlegung ist die, dass ich die Sekunden von time.strftime verwende, um zu prüfen, ob die Minute aus ist und fange somit in der nächsten Minute wieder neu zu zählen an.

#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import datetime

GPIO.setmode(GPIO.BCM)   #Art der Pin-Nummerierung
GPIO.setup(24, GPIO.IN)   #Pin24 als digitalen Eingang festlegen

s = 0
t = 0
m = 60

while 1:
    t = time.strftime("%S")  
    print(t)
    if t < m:
        # Eingang lesen
        t = time.strftime("%S")  
        print "schleife2"  
        if GPIO.input(24) == GPIO.LOW:
            # Wenn Eingang HIGH ist, Ausgabe im Terminal erzeugen
            i = i + 1
            print(i)
            time.sleep(0.5)

Der Code ist jetzt noch nicht fertig, aber ich habe jetzt schon das Problem, dass nicht in das erste if gesprungen wird. Was mache ich da falsch?

LG, Dex

Content-ID: 502168

Url: https://administrator.de/contentid/502168

Ausgedruckt am: 21.11.2024 um 22:11 Uhr

141320
Lösung 141320 07.10.2019 aktualisiert um 15:49:38 Uhr
Goto Top
time.strftime("%S")
Wird niemals kleiner 60 sein, schau dir die Ausgabe von t an dann siehst du's.
Sowas macht man einfach mit timer() oder time.time()
Import time
from timeit import default_timer as timer
t = timer()
m = 60
while timer() < (t + m):
    print("Tu hier was")  
    time.sleep(1)
oder
import time
t = time.time()
m = 60
while time.time() < (t + m):
    print("Tu hier was")  
    time.sleep(1)
Statt der while kannst du natürlich auch dein IF zum Vergleich benutzen, das soll nur zeigen wie man den Zeitvergleich prinzipiell so aufbaut.
Siehe auch
https://stackoverflow.com/questions/7370801/measure-time-elapsed-in-pyth ...

p.s. "if-Schleifen" gibt es nicht.For, Foreach, while, do loop usw. schon ...
Dextha
Dextha 07.10.2019 um 16:47:53 Uhr
Goto Top
Danke dir!!!!