PiFace InputListener(Switch)打开Python中的LED

时间:2015-11-23 01:58:29

标签: python switch-statement raspberry-pi led debian-based

我正在研究如何与Rasberry Pi和PiFace合作。代码是用Python编写的。

我的问题是: 一旦我按下PiFace上的4个开关中的一个,我似乎无法执行任何操作。我设法制作了一个与灯光一起播放的节目。

我们从我们的教授那里得到的文件在这里: https://piface.github.io/pifacedigitalio/example.html

我想要一个带有监听器的中断来触发相应的LED。按下开关1 - > LED 1触发。

到目前为止,这是我的代码(不起作用)。

import pifacedigitalio

def toggle_led0(event):
    event.chip.leds[0].toggle()

def toggle_led1(event):
    event.chip.leds[1].toggle()

def toggle_led2(event):
    event.chip.leds[2].toggle()

def toggle_led3(event):
    event.chip.leds[3].toggle()

pifacedigital = pifacedigitalio.PiFaceDigital()
listener = pifacedigitalio.SwitchEventListener(chip=pifacedigital)
listener.register(0, pifacedigitalio.IODIR_FALLING_EDGE, toggle_led0)
listener.register(1, pifacedigitalio.IODIR_FALLING_EDGE, toggle_led1)
listener.register(2, pifacedigitalio.IODIR_FALLING_EDGE, toggle_led2)
listener.register(3, pifacedigitalio.IODIR_FALLING_EDGE, toggle_led3)
listener.activate()

1 个答案:

答案 0 :(得分:0)

以下代码适用于我的Pi B

import pifacedigitalio
from time import sleep
def lighton(event):
    try:
        print("on pressed")
        event.chip.relays[0].value = 1
    except:
        raise KeyboardInterrupt
def lightoff(event):
    try:
        print("off pressed")
        event.chip.relays[0].value = 0
    except:
        raise KeyboardInterrupt
pfd = pifacedigitalio.PiFaceDigital()
listener = pifacedigitalio.InputEventListener(chip=pfd)
listener.register(0, pifacedigitalio.IODIR_FALLING_EDGE, lighton)
print("Registered listener0")
listener.register(1, pifacedigitalio.IODIR_FALLING_EDGE, lightoff)
print("Registered listener1")
try:
    listener.activate()
    print("Activated all")
except (KeyboardInterrupt, SystemExit):
    print("\n Ending Process")
    listener.deactivate()
    listener. destroy()