Invaders game for the Gameduino

Dependencies:   Gameduino mbed

Committer:
TheChrisyd
Date:
Sat Sep 29 13:01:42 2012 +0000
Revision:
1:f44175dd69fd
Parent:
0:8a7c58553b44
Child:
2:20a89dc286d5
saved progress

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TheChrisyd 1:f44175dd69fd 1 #ifndef JOYSTICK_INCLUDED
TheChrisyd 1:f44175dd69fd 2 #define JOYSTICK_INCLUDED
TheChrisyd 1:f44175dd69fd 3 /*------------------------------------------------------------
TheChrisyd 1:f44175dd69fd 4 Universal joystick driver for Gameduino
TheChrisyd 1:f44175dd69fd 5
TheChrisyd 1:f44175dd69fd 6 http://www.artlum.com/gameduino/gameduino.html#joystick
TheChrisyd 1:f44175dd69fd 7
TheChrisyd 1:f44175dd69fd 8 Important: Read the file "read_me_first.txt" *before*
TheChrisyd 1:f44175dd69fd 9 writing any code. Do it NOW!
TheChrisyd 1:f44175dd69fd 10
TheChrisyd 1:f44175dd69fd 11 Thanks go to 'Guy" for his contributions to this
TheChrisyd 1:f44175dd69fd 12 ------------------------------------------------------------*/
TheChrisyd 1:f44175dd69fd 13
TheChrisyd 1:f44175dd69fd 14 //#include "WProgram.h"
TheChrisyd 1:f44175dd69fd 15 #include "arduino.h"
TheChrisyd 1:f44175dd69fd 16 class Joystick {
TheChrisyd 1:f44175dd69fd 17 byte buttons; // State of buttons, packed into a byte
TheChrisyd 1:f44175dd69fd 18 byte prev; // State of the buttons on previous read
TheChrisyd 1:f44175dd69fd 19 byte dpad; // State of Up/Down/Left/Right buttons plus some control flags
TheChrisyd 1:f44175dd69fd 20 signed char stickX,stickY;// Analogue x/y position
TheChrisyd 1:f44175dd69fd 21 char xCal,yCal; // Calibration
TheChrisyd 1:f44175dd69fd 22 public:
TheChrisyd 1:f44175dd69fd 23 // The constructor sets up the Arduino pins for input
TheChrisyd 1:f44175dd69fd 24 // and calibrates the joystick using the current position
TheChrisyd 1:f44175dd69fd 25 Joystick();
TheChrisyd 1:f44175dd69fd 26
TheChrisyd 1:f44175dd69fd 27 // Read the current state
TheChrisyd 1:f44175dd69fd 28 void read();
TheChrisyd 1:f44175dd69fd 29
TheChrisyd 1:f44175dd69fd 30 // Return "true" if analog X/Y position is available
TheChrisyd 1:f44175dd69fd 31 bool hasAnalogStick();
TheChrisyd 1:f44175dd69fd 32
TheChrisyd 1:f44175dd69fd 33 // Digital joystick functions
TheChrisyd 1:f44175dd69fd 34 enum button_name {
TheChrisyd 1:f44175dd69fd 35 buttonA = 0x01,
TheChrisyd 1:f44175dd69fd 36 buttonB = 0x02,
TheChrisyd 1:f44175dd69fd 37 buttonC = 0x04,
TheChrisyd 1:f44175dd69fd 38 buttonX = 0x08,
TheChrisyd 1:f44175dd69fd 39 buttonY = 0x10,
TheChrisyd 1:f44175dd69fd 40 buttonZ = 0x20,
TheChrisyd 1:f44175dd69fd 41 buttonStart = 0x40,
TheChrisyd 1:f44175dd69fd 42 buttonSelect = 0x80
TheChrisyd 1:f44175dd69fd 43 };
TheChrisyd 1:f44175dd69fd 44 // Test a named button
TheChrisyd 1:f44175dd69fd 45 // nb. You can combine button names to test multiple buttons at the same time
TheChrisyd 1:f44175dd69fd 46 bool isPressed(byte n) { return (buttons&n)!=0; }
TheChrisyd 1:f44175dd69fd 47
TheChrisyd 1:f44175dd69fd 48 // This tells you if a button changed between the last two calls to "read()"
TheChrisyd 1:f44175dd69fd 49 bool changed(byte n) { return bool((buttons^prev)&n); }
TheChrisyd 1:f44175dd69fd 50
TheChrisyd 1:f44175dd69fd 51 // Joystick up/down/left/right (or analog stick)
TheChrisyd 1:f44175dd69fd 52 bool left() { return (dpad&0x01)!=0; }
TheChrisyd 1:f44175dd69fd 53 bool right() { return (dpad&0x02)!=0; }
TheChrisyd 1:f44175dd69fd 54 bool up() { return (dpad&0x04)!=0; }
TheChrisyd 1:f44175dd69fd 55 bool down() { return (dpad&0x08)!=0; }
TheChrisyd 1:f44175dd69fd 56
TheChrisyd 1:f44175dd69fd 57
TheChrisyd 1:f44175dd69fd 58 // Analog joystick functions
TheChrisyd 1:f44175dd69fd 59
TheChrisyd 1:f44175dd69fd 60 // Force the analog joystick to recalibrate itself
TheChrisyd 1:f44175dd69fd 61 void recalibrate();
TheChrisyd 1:f44175dd69fd 62
TheChrisyd 1:f44175dd69fd 63 // Current joystick position in range [-128..127]
TheChrisyd 1:f44175dd69fd 64 char analogX() { return stickX; }
TheChrisyd 1:f44175dd69fd 65 char analogY() { return stickY; }
TheChrisyd 1:f44175dd69fd 66
TheChrisyd 1:f44175dd69fd 67 // For debugging - show all state onscreen at (x,y)
TheChrisyd 1:f44175dd69fd 68 void dump(int x, int y);
TheChrisyd 1:f44175dd69fd 69 };
TheChrisyd 1:f44175dd69fd 70
TheChrisyd 1:f44175dd69fd 71
TheChrisyd 1:f44175dd69fd 72 // JOYSTICK_INCLUDED
TheChrisyd 1:f44175dd69fd 73 #endif