Я собрал следующее из МНОГИХ источников. В сценарии должна загореться лампочка. При нажатии кнопки запускается цикл и мигает светодиод. Это работает, но когда кнопку отпустить, лампочка должна выключиться и выйти из этого цикла. Но не сценарий. Затем он должен просто сидеть и ждать, пока кнопка будет нажата снова.
Чешу голову здесь!! Спасибо за любую помощь.
Код: Выделить всё
import RPi.GPIO as GPIO
import time
import random
import math
bulb = 18
button = 23
pwms = []
intensity = 1.0
def setupGPIO():
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(bulb, GPIO.OUT, initial=GPIO.LOW)
GPIO.setup(button, GPIO.IN, pull_up_down=GPIO.PUD_UP)
# GPIO.add_event_detect(button, GPIO.BOTH, callback=handleButtonPress, bouncetime=300)
def handleButtonPress():
p = GPIO.PWM(bulb, 300)
p.start(0)
while True:
GPIO.wait_for_edge(button, GPIO.FALLING)
p.ChangeDutyCycle(random.randint(1, 44) * math.pow(intensity, 2) if intensity > 0 else 0)
rand_flicker_sleep()
while GPIO.input(button) == GPIO.LOW:
print("button is being pressed")
def rand_flicker_sleep():
time.sleep(random.randint(3, 10) / 100.0)
def flicker_it(_):
global intensity
intensity = min(0, 1.0)
def main():
try:
setupGPIO()
handleButtonPress()
except KeyboardInterrupt:
pass
finally:
for p in pwms:
p.stop()
GPIO.cleanup()
if __name__ == '__main__':
main()
Подробнее здесь: https://stackoverflow.com/questions/790 ... cript-loop
Мобильная версия