Version of Robotron arcade game using LPC1768, a Gameduino shield, a serial EEPROM (for high scores), two microswitch joysticks and two buttons plus a box to put it in. 20 levels of mayhem.

Dependencies:   25LCxxx_SPI CommonTypes Gameduino mbed

PanelControls.h

Committer:
RichardE
Date:
2013-06-17
Revision:
18:70190f956a24
Parent:
4:673eb9735d44

File content as of revision 18:70190f956a24:

/*
 * SOURCE FILE : PanelControls.h
 *
 * Responsible for reading joysticks and buttons.
 * This is the version for mbed LPC1768.
 * There is a version kicking around for the LPC11U24 that uses different inputs for joystick 2.
 *
 */

#ifndef PanelControlsIncluded
  
  #define PanelControlsIncluded

  #include "mbed.h"
  #include "Types.h"
  
  class PanelControls {
    
  public :

    /***************/
    /* CONSTRUCTOR */
    /***************/
    PanelControls() :
      inputs( 0 ),
      bus( (BusIn*)NULL )
    {
    }
    
    /**************/
    /* DESTRUCTOR */
    /**************/
    ~PanelControls() {
      delete bus;
    }
    
    /*************************/
    /* INITIALISE INPUT PINS */
    /*************************/
    void InitialisePins( void ) {
      // Create an input bus.
      bus = new BusIn(
        p23, p24, p25, p26, // joystick 1 up, down, left, right
        p21, p22, p27, p28, // joystick 2 up, down, left, right
        p29, p30            // button 1, button 2
      );
    }
    
    /*****************************/
    /* READ ALL THE PANEL INPUTS */
    /*****************************/
    // Returns a bitmap of all the inputs.
    void Read( void ) {
      if( bus == (BusIn*)NULL ) {
        inputs = 0;
      }
      else {
        // Note that a closed contact registers as a zero
        // which is why the bitwise not operator (~) is used.
        inputs = ~*bus & 0x3FF;
      }
    }
    
    // Masks to use with GetInputs method.
    enum Mask {
      Up1 = 1,
      Down1 = 2,
      Left1 = 4,
      Right1 = 8,
      Up2 = 16,
      Down2 = 32,
      Left2 = 64,
      Right2 = 128,
      Button1 = 256,
      Button2 = 512,
    };
    
    // Bit numbers indicating where readings for each joystick start in the map.
    // Can use these with right shift operator.
    enum Bits {
      Joy1 = 0,      // joystick 1 readings start at bit 0
      Joy2 = 4,      // joystick 2 readings start at bit 4
      Buttons = 8,   // button readings start at bit 8
    };
    
    /***************************/
    /* GET STATE OF THE INPUTS */
    /***************************/
    // Returns a bitmap of the state of the inputs
    // last time Read was called.
    UInt16 GetInputs( void ) {
      return inputs;
    }
    
  private :
  
    // Stored state of inputs.
    UInt16 inputs;

    // Input bus used to read inputs.
    BusIn *bus;
        
  };
    
#endif

/* END of PanelControls.h */