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)