Ожидание ввода в течение нескольких итераций al oop in python - PullRequest
1 голос
/ 06 марта 2020

Я пытаюсь написать код python для управления напряжением выводов GPIO. Идея заключается в том, что на частоте 1 кГц, если половину времени вывод выключен, а половину времени он включен, то напряжение будет 50%.

Мне нужно сохранить, пока l oop работает в ожидании ввода пользователя, чтобы я мог изменить скорость двигателя.

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(4, GPIO.OUT)

# The higher the number for speed the slower the motor will rotate
def motor(speed):
    i = 0
    run = True

    # Runs until user tells it to stop
    while run == True:

        # Pins should vary at every second
        time.sleep(0.001)
        i += 1
        if i % speed == 0:
            GPIO.output(4, GPIO.HIGH)
        else:
            GPIO.output(4, GPIO.LOW)

        # This block is causing the issue
        # I need the loop to keep running while waiting for the input
        if i % speed * 10 == 0:
            com = int(input("Enter 0 to quit"))
            if com == -1:
                GPIO.output(4, GPIO.LOW)
                break

    GPIO.output(4, GPIO.LOW)


run = True;
while (run):
    speed = int(input("Select Speed"))

    if speed == 0:
        run = False
    else:
        motor(speed)

GPIO.cleanup()
...