Нужна информация с Python l oop и / или функциями повтора - PullRequest
0 голосов
/ 14 января 2020

Я довольно плохо знаком с python, я читал, искал, изучал и выполнял. У меня проблемы с поиском ответа на то, что я пытаюсь сделать. Вот что у меня есть ...

 # GPIO setup
GPIO.setmode(GPIO.BCM)
GPIO.setup(channel, GPIO.OUT)


def solenoid_on(pin):
    GPIO.output(pin, GPIO.HIGH)  # Turn solenoid on


def solenoid_off(pin):
    GPIO.output(pin, GPIO.LOW)  # Turn solenoid off

if __name__ == '__main__':

    try:
        solenoid_on(channel) #              |~ in this section, i would like to repeat X amount
        time.sleep(1)    # Sets lag time    |  of times, have a set number of "run time" say...
        solenoid_off(channel) #             |  150 times..or do i just copy and paste this block
        time.sleep(3)    # Sets run time    |  150 times? 

        print("DONE")

        GPIO.cleanup()

    except KeyboardInterrupt:
        GPIO.cleanup()

Спасибо за помощь, это очень ценится.

Ответы [ 2 ]

1 голос
/ 14 января 2020
 if __name__ == '__main__':

try:
    for i in range(150):
        solenoid_on(channel) #              |~ in this section, i would like to repeat X amount
        time.sleep(1)    # Sets lag time    |  of times, have a set number of "run time" say...
        solenoid_off(channel) #             |  150 times..or do i just copy and paste this block
        time.sleep(3)    # Sets run time    |  150 times? 

        print("Iteration", i, " is done")

    GPIO.cleanup()
0 голосов
/ 14 января 2020

Вы можете попробовать ниже. Ибо l oop проходит через него 150 раз.

Если вам определенно нужно, чтобы он выполнялся X раз, используйте a для l oop

Если вам нужно, чтобы он работал до Y (например, какой-либо ответ или ограничение по времени), используйте некоторое время l oop

Не был уверен, хотите ли вы попробовать / кроме как внутри для l oop или нет.

Для L oop

if __name__ == '__main__':

    try:
        for i in range(150):
            start = time.time()
            print('Turning Solenoid', i, 'On')
            solenoid_on(channel) 
            time.sleep(1)
            print('Turning Solenoid', i, 'Off')
            solenoid_off(channel)
            time.sleep(3)
            print('Completed Solenoid', i, 'in', time.time()-start, 'seconds\n\n')

        GPIO.cleanup()

    except KeyboardInterrupt:
        GPIO.cleanup()

Пока L oop

if __name__ == '__main__':

    #minutes elapsed    
    elapsed = 0
    start = time.time()
    while elapsed < 10:
        try:
            print('Turning Solenoid', i, 'On')
            solenoid_on(channel) 
            time.sleep(1)
            print('Turning Solenoid', i, 'Off')
            solenoid_off(channel)
            time.sleep(3)
            print('Completed Solenoid', i, 'in', time.time()-start, 'seconds\n\n')

            GPIO.cleanup()

        except KeyboardInterrupt:
            GPIO.cleanup()

        # set elapsed minutes
        elapsed = (time.time()-start)/60
        print('Elapsed time...', elapsed, 'minutes')
...