Class used to interface with the handheld gamepad.

Fork of Gamepad by Craig Evans

Committer:
eencae
Date:
Mon Feb 06 19:33:29 2017 +0000
Revision:
3:964a6d95acdd
Parent:
1:6d25cd49059b
Child:
4:bafb7f483e93
Removed LCD from library and merged in joystick methods (untested)

Who changed what in which revision?

UserRevisionLine numberNew 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 Direction get_direction(); // N,NE,E,SE etc.
eencae 3:964a6d95acdd 105 Polar get_polar(); // mag and angle in struct form
eencae 1:6d25cd49059b 106
eencae 3:964a6d95acdd 107 bool a_flag,b_flag,x_flag,y_flag,l_flag,r_flag,back_flag,start_flag,joy_flag;
eencae 3:964a6d95acdd 108
eencae 3:964a6d95acdd 109 // centred x,y values
eencae 3:964a6d95acdd 110 float _x0;
eencae 3:964a6d95acdd 111 float _y0;
eencae 3:964a6d95acdd 112
eencae 3:964a6d95acdd 113
eencae 0:a6288c29b936 114
eencae 0:a6288c29b936 115 };
eencae 0:a6288c29b936 116
eencae 0:a6288c29b936 117 #endif