Library for ELEC2645 Gamepad PCB. University of Leeds
Dependents: Project_MaZe1_copy Labirint Game_Controller_Project 200943373MAZE ... more
Diff: Gamepad.h
- Revision:
- 8:7eaf26f4b5f2
- Parent:
- 6:b1c3dfe67f7d
- Child:
- 9:893189072e89
diff -r 019671f7bd83 -r 7eaf26f4b5f2 Gamepad.h --- a/Gamepad.h Mon Feb 06 20:31:45 2017 +0000 +++ b/Gamepad.h Tue Feb 07 10:53:46 2017 +0000 @@ -1,3 +1,14 @@ +/** +@file Gamepad.h + +@brief Library for interfacing with ELEC2645 Gamepad PCB +@brief University of Leeds + +@author Dr Craig A. Evans +@date Febraury 2017 + +*/ + #ifndef GAMEPAD_H #define GAMEPAD_H @@ -33,32 +44,116 @@ public: + /** Constructor + */ Gamepad(); + + /** Destructor + */ ~Gamepad(); + /** Initialise all peripherals and configure interrupts + */ void init(); + + /** Turn all LEDs on + */ void leds_on(); + + /** Turn all LEDs off + */ void leds_off(); + + /** Fade all to set duty-cycle + @param value in range 0.0 to 1.0 + */ void fade_leds(float val); + /** Read potentiometer + @returns potentiometer value in range 0.0 to 1.0 + */ float read_pot(); + + /** Play tone on piezo + @param frequency in Hz + @param duration of tone in seconds + */ void tone(float frequency, float duration); + /** Check if A button pressed + @returns true if yes, false if no + */ bool a_pressed(); + + /** Check if B button pressed + @returns true if yes, false if no + */ bool b_pressed(); + + /** Check if X button pressed + @returns true if yes, false if no + */ bool x_pressed(); + + /** Check if Y button pressed + @returns true if yes, false if no + */ bool y_pressed(); + + /** Check if L button pressed + @returns true if yes, false if no + */ bool l_pressed(); + + /** Check if R button pressed + @returns true if yes, false if no + */ bool r_pressed(); + + /** Check if Back button pressed + @returns true if yes, false if no + */ bool back_pressed(); + + /** Check if Start button pressed + @returns true if yes, false if no + */ bool start_pressed(); + + /** Check if Joystick button pressed + @returns true if yes, false if no + */ bool joystick_pressed(); + + /** Get magnitude of joystick movement + @returns value in range 0.0 to 1.0 + */ + + float get_mag(); - float get_mag(); + /** Get angle of joystick movement + @returns value in range 0.0 to 359.9. 0.0 corresponds to N, 180.0 to S. -1.0 is central + */ float get_angle(); + + /** Gets joystick direction + @returns an enum: CENTRE, N, NE, E, SE, S, SW, W, NW, + */ Direction get_direction(); // N,NE,E,SE etc. + + /** Gets raw cartesian co-ordinates of joystick + @returns a struct with x,y members, each in the range 0.0 to 1.0 + */ Vector2D get_coord(); // cartesian co-ordinates x,y + + /** Gets cartesian coordinates mapped to circular grid + @returns a struct with x,y members, each in the range 0.0 to 1.0 + */ Vector2D get_mapped_coord(); // x,y mapped to circle + + /** Gets polar coordinates of the joystick + @returns a struct contains mag and angle + */ Polar get_polar(); // mag and angle in struct form private: @@ -100,10 +195,10 @@ void back_isr(); void start_isr(); void joy_isr(); - + bool a_flag,b_flag,x_flag,y_flag,l_flag,r_flag,back_flag,start_flag,joy_flag; - - // centred x,y values + + // centred x,y values float _x0; float _y0; };