Raspberry Pi (Python) — нажмите (и удерживайте) кнопку, чтобы запустить цикл сценария.Python

Программы на Python
Ответить
Anonymous
 Raspberry Pi (Python) — нажмите (и удерживайте) кнопку, чтобы запустить цикл сценария.

Сообщение Anonymous »

Я пытаюсь написать программу, которая будет мерцать светодиодами (и, в конечном итоге, надеюсь, будет мерцать небольшую полоску светодиодов). Он должен выглядеть как молния или мерцающее электричество (для реквизита на Хэллоуин с электрическим стулом)
Я собрал следующее из МНОГИХ источников. В сценарии должна загореться лампочка. При нажатии кнопки запускается цикл и мигает светодиод. Это работает, но когда кнопку отпустить, лампочка должна выключиться и выйти из этого цикла. Но не сценарий. Затем он должен просто сидеть и ждать, пока кнопка будет нажата снова.
Чешу голову здесь!! Спасибо за любую помощь.

Код: Выделить всё

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()
Это на Rpi 3b с использованием Python3 (если это имеет значение!)

Подробнее здесь: https://stackoverflow.com/questions/790 ... cript-loop
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»