2017-02-01 8 views
1

Возможно ли, чтобы сценарий python приостановился, когда вы удерживаете кнопку нажатой, а затем запускаете, когда вы отпустите эту кнопку? (У меня есть кнопка, подключенная к контактам GPIO на моей малине Pi)Как подождать, пока вы отпустите кнопку в python

+0

у вас есть какой-либо код до сих пор? – lmiguelvargasf

+0

Да, это возможно. – kalenpw

ответ

1

Я предполагаю, что кнопка, которую вы используете, находится в GPIO18, поэтому вы можете использовать этот код.

import RPi.GPIO as GPIO 
import time 

GPIO.setmode(GPIO.BCM) 

GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP) 

while True: 
    input_state = GPIO.input(18) 
    while not input_state: 
     # as soon as your button is pressed you 
     # will be inside this loop 
     print('Button is being pressed') 

В качестве альтернативы вы можете также попробовать:

import time 
import RPi.GPIO as GPIO 

PIN = 18 

GPIO.setmode(GPIO.BCM) 
GPIO.setup(PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP) 

while True: 
    GPIO.wait_for_edge(PIN, GPIO.FALLING) 
    print "Pressed" 
    # your code 

Я думаю, что второй цели более точно ваш запрос.

0

Вы посмотрели gpiozero? Он значительно упрощает взаимодействие с GPIO.

from gpiozero import Button 

button = Button(2) 

button.wait_for_press()  
button.wait_for_release() 
print("Button was pressed and released") 

Вот ссылка на класс Button: https://gpiozero.readthedocs.io/en/v1.3.1/api_input.html#gpiozero.Button.wait_for_release

И примеры того, как использовать его: https://gpiozero.readthedocs.io/en/v1.3.1/recipes.html#button