gamepad library
Fork of Gamepad by
Gamepad.h@4:bafb7f483e93, 2017-02-06 (annotated)
- Committer:
- eencae
- Date:
- Mon Feb 06 19:40:40 2017 +0000
- Revision:
- 4:bafb7f483e93
- Parent:
- 3:964a6d95acdd
- Child:
- 5:ce5eae9ee934
Removed references to LCD and Joystick libraries.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
eencae | 0:a6288c29b936 | 1 | #ifndef GAMEPAD_H |
eencae | 0:a6288c29b936 | 2 | #define GAMEPAD_H |
eencae | 0:a6288c29b936 | 3 | |
eencae | 0:a6288c29b936 | 4 | #include "mbed.h" |
eencae | 3:964a6d95acdd | 5 | |
eencae | 3:964a6d95acdd | 6 | #define TOL 0.1f |
eencae | 3:964a6d95acdd | 7 | #define RAD2DEG 57.2957795131f |
eencae | 3:964a6d95acdd | 8 | |
eencae | 3:964a6d95acdd | 9 | enum Direction { |
eencae | 3:964a6d95acdd | 10 | CENTRE, // 0 |
eencae | 3:964a6d95acdd | 11 | N, // 1 |
eencae | 3:964a6d95acdd | 12 | NE, // 2 |
eencae | 3:964a6d95acdd | 13 | E, // 3 |
eencae | 3:964a6d95acdd | 14 | SE, // 4 |
eencae | 3:964a6d95acdd | 15 | S, // 5 |
eencae | 3:964a6d95acdd | 16 | SW, // 6 |
eencae | 3:964a6d95acdd | 17 | W, // 7 |
eencae | 3:964a6d95acdd | 18 | NW // 8 |
eencae | 3:964a6d95acdd | 19 | }; |
eencae | 3:964a6d95acdd | 20 | |
eencae | 3:964a6d95acdd | 21 | struct Vector2D { |
eencae | 3:964a6d95acdd | 22 | float x; |
eencae | 3:964a6d95acdd | 23 | float y; |
eencae | 3:964a6d95acdd | 24 | }; |
eencae | 3:964a6d95acdd | 25 | |
eencae | 3:964a6d95acdd | 26 | struct Polar { |
eencae | 3:964a6d95acdd | 27 | float mag; |
eencae | 3:964a6d95acdd | 28 | float angle; |
eencae | 3:964a6d95acdd | 29 | }; |
eencae | 0:a6288c29b936 | 30 | |
eencae | 0:a6288c29b936 | 31 | class Gamepad |
eencae | 0:a6288c29b936 | 32 | { |
eencae | 0:a6288c29b936 | 33 | |
eencae | 0:a6288c29b936 | 34 | public: |
eencae | 0:a6288c29b936 | 35 | |
eencae | 0:a6288c29b936 | 36 | Gamepad(); |
eencae | 1:6d25cd49059b | 37 | ~Gamepad(); |
eencae | 0:a6288c29b936 | 38 | |
eencae | 0:a6288c29b936 | 39 | void init(); |
eencae | 0:a6288c29b936 | 40 | void leds_on(); |
eencae | 0:a6288c29b936 | 41 | void leds_off(); |
eencae | 1:6d25cd49059b | 42 | void fade_leds(float val); |
eencae | 1:6d25cd49059b | 43 | |
eencae | 1:6d25cd49059b | 44 | float read_pot(); |
eencae | 1:6d25cd49059b | 45 | void tone(float frequency, float duration); |
eencae | 1:6d25cd49059b | 46 | |
eencae | 1:6d25cd49059b | 47 | bool a_pressed(); |
eencae | 1:6d25cd49059b | 48 | bool b_pressed(); |
eencae | 1:6d25cd49059b | 49 | bool x_pressed(); |
eencae | 1:6d25cd49059b | 50 | bool y_pressed(); |
eencae | 1:6d25cd49059b | 51 | bool l_pressed(); |
eencae | 1:6d25cd49059b | 52 | bool r_pressed(); |
eencae | 1:6d25cd49059b | 53 | bool back_pressed(); |
eencae | 1:6d25cd49059b | 54 | bool start_pressed(); |
eencae | 0:a6288c29b936 | 55 | |
eencae | 3:964a6d95acdd | 56 | bool joystick_pressed(); |
eencae | 3:964a6d95acdd | 57 | float get_mag(); |
eencae | 3:964a6d95acdd | 58 | float get_angle(); |
eencae | 3:964a6d95acdd | 59 | Direction get_direction(); // N,NE,E,SE etc. |
eencae | 3:964a6d95acdd | 60 | |
eencae | 3:964a6d95acdd | 61 | |
eencae | 0:a6288c29b936 | 62 | private: |
eencae | 0:a6288c29b936 | 63 | |
eencae | 0:a6288c29b936 | 64 | PwmOut *led_1; |
eencae | 0:a6288c29b936 | 65 | PwmOut *led_2; |
eencae | 0:a6288c29b936 | 66 | PwmOut *led_3; |
eencae | 0:a6288c29b936 | 67 | PwmOut *led_4; |
eencae | 0:a6288c29b936 | 68 | PwmOut *led_5; |
eencae | 0:a6288c29b936 | 69 | PwmOut *led_6; |
eencae | 0:a6288c29b936 | 70 | |
eencae | 1:6d25cd49059b | 71 | InterruptIn *button_A; |
eencae | 1:6d25cd49059b | 72 | InterruptIn *button_B; |
eencae | 1:6d25cd49059b | 73 | InterruptIn *button_X; |
eencae | 3:964a6d95acdd | 74 | InterruptIn *button_Y; |
eencae | 1:6d25cd49059b | 75 | InterruptIn *button_back; |
eencae | 1:6d25cd49059b | 76 | InterruptIn *button_start; |
eencae | 1:6d25cd49059b | 77 | InterruptIn *button_L; |
eencae | 1:6d25cd49059b | 78 | InterruptIn *button_R; |
eencae | 3:964a6d95acdd | 79 | InterruptIn *button_joystick; |
eencae | 3:964a6d95acdd | 80 | |
eencae | 3:964a6d95acdd | 81 | AnalogIn *vert; |
eencae | 3:964a6d95acdd | 82 | AnalogIn *horiz; |
eencae | 1:6d25cd49059b | 83 | |
eencae | 1:6d25cd49059b | 84 | PwmOut *buzzer; |
eencae | 1:6d25cd49059b | 85 | AnalogIn *pot; |
eencae | 1:6d25cd49059b | 86 | |
eencae | 1:6d25cd49059b | 87 | Timeout *timeout; |
eencae | 1:6d25cd49059b | 88 | |
eencae | 1:6d25cd49059b | 89 | void init_buttons(); |
eencae | 1:6d25cd49059b | 90 | void tone_off(); |
eencae | 3:964a6d95acdd | 91 | |
eencae | 1:6d25cd49059b | 92 | void a_isr(); |
eencae | 1:6d25cd49059b | 93 | void b_isr(); |
eencae | 1:6d25cd49059b | 94 | void x_isr(); |
eencae | 1:6d25cd49059b | 95 | void y_isr(); |
eencae | 1:6d25cd49059b | 96 | void l_isr(); |
eencae | 1:6d25cd49059b | 97 | void r_isr(); |
eencae | 1:6d25cd49059b | 98 | void back_isr(); |
eencae | 1:6d25cd49059b | 99 | void start_isr(); |
eencae | 3:964a6d95acdd | 100 | void joy_isr(); |
eencae | 3:964a6d95acdd | 101 | |
eencae | 3:964a6d95acdd | 102 | Vector2D get_coord(); // cartesian co-ordinates x,y |
eencae | 3:964a6d95acdd | 103 | Vector2D get_mapped_coord(); // x,y mapped to circle |
eencae | 3:964a6d95acdd | 104 | Polar get_polar(); // mag and angle in struct form |
eencae | 1:6d25cd49059b | 105 | |
eencae | 3:964a6d95acdd | 106 | bool a_flag,b_flag,x_flag,y_flag,l_flag,r_flag,back_flag,start_flag,joy_flag; |
eencae | 3:964a6d95acdd | 107 | |
eencae | 3:964a6d95acdd | 108 | // centred x,y values |
eencae | 3:964a6d95acdd | 109 | float _x0; |
eencae | 3:964a6d95acdd | 110 | float _y0; |
eencae | 3:964a6d95acdd | 111 | |
eencae | 3:964a6d95acdd | 112 | |
eencae | 0:a6288c29b936 | 113 | |
eencae | 0:a6288c29b936 | 114 | }; |
eencae | 0:a6288c29b936 | 115 | |
eencae | 0:a6288c29b936 | 116 | #endif |