Hallo miteinander!
Mein Problem ist eigentlich nur bedingt ein elektronisch/hardwareseitiges, sondern eher ein softwareproblem.
Ich habe an einem Pi Zero W einen Pushputton hängen. OS ist Raspbian Buster.
Ziel ist, dass erkannt wird ob der Button einmal, zweimal oder dreimal dedrückt wurde (also schnell hintereinander, etwa in einem 2 sekündigen Zeitfenster). Je nachdem sollen später via MQTT unterschiedliche payloads gepublished werden
Den Code (unter Verwendung von GIOPZero) habe ich zusammengebastelt:
Python
from gpiozero import DigitalOutputDevice, Button, LED
from signal import pause
import time
from datetime import datetime, timedelta
presses = 0
presstime = None
def button_press():
global presses
global presstime
if presses == 0:
presses = 1
print(presses)
presstime = datetime.now() - timedelta(seconds = 2)
print(presstime)
elif presses != 0 and presstime > datetime.now():
presses = presses + 1
print("erste elif", presses)
elif presses != 0 and presstime < datetime.now():
print("else schleife", presses)
presstime = None
presses = 0
button = Button(16)
led = LED(12)
button.when_pressed = button_press
pause()
Alles anzeigen
beim ersten drücken kommt:
warte ich ca 4 sekunden und drücke erneut kommt
manchmal aber auch
manchmal kommt auch beim ersten drücken
egal wie oft ich drücke, es kommt nie else schleife 2
Irgendiwe haut das nicht hin. Hat jemand einen Tipp?