Python GPIO add_event_detect 每个状态单独
Python GPIO add_event_detect each state individually
我目前有几个杠杆式开关,我希望在它 on/off 独立关闭所有其他开关后立即打印状态。
到目前为止,我已经走到这一步了:
import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BCM)
GPIO.setup(7, GPIO.IN) # switch 2
GPIO.setup(11, GPIO.IN) # switch 3
def print_func(pin):
if GPIO.input(7) == 0:
print "switch 2 on"
elif GPIO.input(7) == 1:
print "switch 2 off"
elif GPIO.input(11) == 0:
print "switch 3 on"
elif GPIO.input(11) == 1:
print "switch 3 off"
GPIO.add_event_detect(7, GPIO.BOTH, callback=print_func, bouncetime=300)
GPIO.add_event_detect(11, GPIO.BOTH, callback=print_func, bouncetime=300)
while True:
sleep(1)
但是,这对我没有任何帮助。我不知道如何只提及刚刚移动的杠杆的状态,而不通过循环提及每个杠杆的状态..
任何帮助将不胜感激!
我现在没有 raspberry-pi,所以我无法对此进行测试,但我很确定以下是您需要的。
lever_num_by_pin = {7: 2, 11: 3}
def printOn(pin):
print("switch", lever_num_by_pin[pin], "on")
def printOff(pin):
print("switch", lever_num_by_pin[pin], "off")
for pin in lever_num_by_pin:
GPIO.add_event_detect(pin, GPIO.RISING, callback=printOn, bouncetime=300)
GPIO.add_event_detect(pin, GPIO.FALLING, callback=printOff, bouncetime=300)
回调是使用它们从中接收输入的通道的参数调用的。我们可以使用它根据引脚到数字的字典有选择地打印出杠杆编号。此外,我们可以使用这个字典的键作为一种方法来遍历所有带杠杆的引脚,并在每个引脚上附加一个上升和下降事件。上升为开启,下降为关闭
我目前有几个杠杆式开关,我希望在它 on/off 独立关闭所有其他开关后立即打印状态。
到目前为止,我已经走到这一步了:
import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BCM)
GPIO.setup(7, GPIO.IN) # switch 2
GPIO.setup(11, GPIO.IN) # switch 3
def print_func(pin):
if GPIO.input(7) == 0:
print "switch 2 on"
elif GPIO.input(7) == 1:
print "switch 2 off"
elif GPIO.input(11) == 0:
print "switch 3 on"
elif GPIO.input(11) == 1:
print "switch 3 off"
GPIO.add_event_detect(7, GPIO.BOTH, callback=print_func, bouncetime=300)
GPIO.add_event_detect(11, GPIO.BOTH, callback=print_func, bouncetime=300)
while True:
sleep(1)
但是,这对我没有任何帮助。我不知道如何只提及刚刚移动的杠杆的状态,而不通过循环提及每个杠杆的状态..
任何帮助将不胜感激!
我现在没有 raspberry-pi,所以我无法对此进行测试,但我很确定以下是您需要的。
lever_num_by_pin = {7: 2, 11: 3}
def printOn(pin):
print("switch", lever_num_by_pin[pin], "on")
def printOff(pin):
print("switch", lever_num_by_pin[pin], "off")
for pin in lever_num_by_pin:
GPIO.add_event_detect(pin, GPIO.RISING, callback=printOn, bouncetime=300)
GPIO.add_event_detect(pin, GPIO.FALLING, callback=printOff, bouncetime=300)
回调是使用它们从中接收输入的通道的参数调用的。我们可以使用它根据引脚到数字的字典有选择地打印出杠杆编号。此外,我们可以使用这个字典的键作为一种方法来遍历所有带杠杆的引脚,并在每个引脚上附加一个上升和下降事件。上升为开启,下降为关闭