PiFace menu

(Updated 25th March)

Since getting the PiFace control and display at the end of February I have been keen to write a simple menu which can run on the Pi the whole time.

pi face menu

My prototype Python script generates 5 menu options which are accessed via the push buttons. Once pressed they either launch another script or run part of the menu script.

I intend to leave this running so I have included two buttons to switch off the back light and turn it back on again.

The clock option displays the current time for three seconds.

The code is still in development and is rather ‘clunky’ (if you can use such a term!) - but it does work!

Please feel free to use any aspect of the code and modify and improve!!!

Updated 25th March

I’ve not setup and mapped a generic Tv remote control - the next part will be getting the menu system to respond to different IR buttons. I don’t think I will have enough room for each menu item so I will explore custom images.


import pifacecad
import time

def update_pin_text(event):
        event.chip.lcd.write(str(event.pin_num))
        choice = event.pin_num
        if choice == 0:
                cad.lcd.clear()
                cad.lcd.write("Menu selected")
                import subprocess
                p = subprocess.Popen(["sysstart"])
                output, err = p.communicate()
                cad.lcd.clear()
                cad.lcd.backlight_on()
                cad.lcd.write("1:Welcome  2:GS\n3:Clock [4/5]:BL")
        if choice == 1:
                cad.lcd.clear()
                cad.lcd.write("GSL countdown\nselected")
                import subprocess
                p = subprocess.Popen(["GSL2014"])
                output, err = p.communicate()
                cad.lcd.clear()
                cad.lcd.backlight_on()
                cad.lcd.write("1:Welcome 2:GS\n3:Clock [4/5]:BL")
        if choice == 2:
                cad.lcd.clear()
                cad.lcd.write("Current time: \n")
                cad.lcd.write(time.ctime())
                time.sleep(5)
                cad.lcd.clear()
                cad.lcd.write("1:Welcome 2:GS\n3:Clock [4/5]:BL")
        if choice ==3:
                cad.lcd.backlight_on()
        if choice ==4:
                cad.lcd.backlight_off()


cad = pifacecad.PiFaceCAD()
cad.lcd.backlight_on()
cad.lcd.write("Pi menu Use the \nbuttons")
time.sleep(2)
cad.lcd.clear()
cad.lcd.write("1:Welcome 2:GS\n3:Clock [4/5]:BL")

listener = pifacecad.SwitchEventListener(chip=cad)
for i in range (6):
        listener.register(i, pifacecad.IODIR_FALLING_EDGE, update_pin_text)
listener.activate()


blog comments powered by Disqus