Hi,
I have some written some code for a Pi with a PiFaceDigital 2 card which is a reaction timer game.
The programme starts in a menu with 2 options - option 1 is to play the game, option 2 is to quit. Once in game play, the screen clears, and the programme waits for an input from one of the four buttons on the PifaceDigital. When someone presses a button, the programme reports which button was pressed, and the time elapsed since starting the game.
All works well, except if a button is pressed on the PiFace whilst in the menu section of the game, as soon as gameplay starts, the programme immediatly reports that a button has been pressed.
Whilst a sensible answer is "don;t press any buttons then!", that's not quite possible, as the game is based on external sensors, and they will be reset during this time.
I have used the .init command to reset the board, but it doesn't seem to work.
Code below....any ideas?
import pifacedigitalio
import time
import os
pfd = pifacedigitalio.PiFaceDigital()
def print_flag(event):
print ("The winner is station ",event.pin_num + 1)
end = time.time()
print end - start
pfd.leds[1].turn_on()
time.sleep(2)
pfd.leds[1].turn_off()
time.sleep(1)
pfd.leds[1].turn_on()
time.sleep(2)
pfd.leds[1].turn_off()
time.sleep(1)
pfd.leds[1].turn_on()
time.sleep(2)
pfd.leds[1].turn_off()
time.sleep(1)
global quit
quit = True
ans=True
while ans:
os.system('clear')
quit = False
print("""
1. Play game
2. Quit
""")
ans=raw_input("Please select...")
if ans=="1":
pd = pifacedigitalio.PiFaceDigital()
os.system('clear')
print("The game has begun...")
print("")
pd.deinit_board
pifacedigitalio.init()
listener = pifacedigitalio.InputEventListener(chip=pd)
start=time.time()
# set up listeners for all buttons
listener.register(0, pifacedigitalio.IODIR_ON, print_flag)
listener.register(1, pifacedigitalio.IODIR_ON, print_flag)
listener.register(2, pifacedigitalio.IODIR_ON, print_flag)
listener.register(3, pifacedigitalio.IODIR_ON, print_flag)
# Start listening for events. This spawns a new thread.
listener.activate()
# Hang around and wait for a button press
while not quit:
time.sleep(1)
listener.deactivate()
pd.deinit_board
elif ans=="2":
break
else:
print ("Not a valid choice, please try again")
time.sleep(1)




