Как добавить временную задержку в Python для аппаратного контроля - PullRequest
0 голосов
/ 23 октября 2018

Мне удалось создать код Python на PI Raspberry для управления дверью гаража.Однако я не знаю, как добавить временную задержку, чтобы контроль ограничивался правильным временем движения.

Любая помощь будет принята с благодарностью.

Мой рабочий код приведен ниже.

    import RPi.GPIO as GPIO          
    from time import sleep

    in1 = 24
    in2 = 23
    en = 25
    temp1=1

   GPIO.setmode(GPIO.BCM)
   GPIO.setup(in1,GPIO.OUT)
   GPIO.setup(in2,GPIO.OUT)
   GPIO.setup(en,GPIO.OUT)
   GPIO.output(in1,GPIO.LOW)
   GPIO.output(in2,GPIO.LOW)
   p=GPIO.PWM(en,1000)
   p.start(25)
   print("\n")
   print("The default speed & direction of motor is LOW & Forward.....")
   print("r-run s-stop f-forward b-backward l-low m-medium h-high e-exit")
   print("\n")    

   while(1):
   x = input()
   if x=='r':
   print("run")
   if(temp1==1):
   GPIO.output(in1,GPIO.HIGH)
   GPIO.output(in2,GPIO.LOW)
   print("forward")
   x='z'
   else:
   GPIO.output(in1,GPIO.LOW)
   GPIO.output(in2,GPIO.HIGH)
   print("backward")
   x='z'


   elif x=='s':
   print("stop")
   GPIO.output(in1,GPIO.LOW)
   GPIO.output(in2,GPIO.LOW)
   x='z'

   elif x=='f':
   print("forward")
   GPIO.output(in1,GPIO.HIGH)
   GPIO.output(in2,GPIO.LOW)
   temp1=1
   x='z'

   elif x=='b':
   print("backward")
   GPIO.output(in1,GPIO.LOW)
   GPIO.output(in2,GPIO.HIGH)
   temp1=0
   x='z'

   elif x=='l':
   print("low")
   p.ChangeDutyCycle(25)
   x='z'

   elif x=='m':
   print("medium")
   p.ChangeDutyCycle(50)
   x='z'

   elif x=='h':
   print("high")
   p.ChangeDutyCycle(75)
   x='z'


    elif x=='e':
    GPIO.cleanup()
    break

    else:
    print("<<<  wrong data  >>>")
    print("please enter the defined data to continue.....")

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Этот вопрос и ответ Как я могу сделать задержку в Python? показывает, как добавить временную задержку в ваш код.

import time
# delay for 10 seconds
time.sleep(10)

Однако это не лучшее решение.Лучше использовать решения здесь: https://raspberrypi.stackexchange.com/questions/69640/add-delay-between-two-gpio-output, и я бы также предложил вам использовать булавки для сбора информации, например, открытой или закрытой от двери, возможно, с помощью сенсорных переключателей (из которых существуют различные типы).

0 голосов
/ 23 октября 2018

Не могу помочь с кодом PI, но хотел бы добавить небольшое предупреждение.Если вы полагаетесь на время, чтобы выключить мотор, закрывающаяся дверь будет раздавлена ​​любыми автомобилями, детьми, велосипедами и т. Д.Можете ли вы подключить датчик тока к Pie, чтобы он останавливался, когда ток двигателя превышал определенную величину?Взгляните на Эти

Майк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...