Class used to interface with the handheld gamepad.

Fork of Gamepad by Craig Evans

Committer:
eencae
Date:
Mon Feb 06 19:47:59 2017 +0000
Revision:
5:ce5eae9ee934
Parent:
4:bafb7f483e93
Child:
6:b1c3dfe67f7d
Made some joystick methods public

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 3:964a6d95acdd 55 bool joystick_pressed();
eencae 5:ce5eae9ee934 56
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 5:ce5eae9ee934 60 Vector2D get_coord(); // cartesian co-ordinates x,y
eencae 5:ce5eae9ee934 61 Vector2D get_mapped_coord(); // x,y mapped to circle
eencae 5:ce5eae9ee934 62 Polar get_polar(); // mag and angle in struct form
eencae 3:964a6d95acdd 63
eencae 0:a6288c29b936 64 private:
eencae 0:a6288c29b936 65
eencae 0:a6288c29b936 66 PwmOut *led_1;
eencae 0:a6288c29b936 67 PwmOut *led_2;
eencae 0:a6288c29b936 68 PwmOut *led_3;
eencae 0:a6288c29b936 69 PwmOut *led_4;
eencae 0:a6288c29b936 70 PwmOut *led_5;
eencae 0:a6288c29b936 71 PwmOut *led_6;
eencae 0:a6288c29b936 72
eencae 1:6d25cd49059b 73 InterruptIn *button_A;
eencae 1:6d25cd49059b 74 InterruptIn *button_B;
eencae 1:6d25cd49059b 75 InterruptIn *button_X;
eencae 3:964a6d95acdd 76 InterruptIn *button_Y;
eencae 1:6d25cd49059b 77 InterruptIn *button_back;
eencae 1:6d25cd49059b 78 InterruptIn *button_start;
eencae 1:6d25cd49059b 79 InterruptIn *button_L;
eencae 1:6d25cd49059b 80 InterruptIn *button_R;
eencae 3:964a6d95acdd 81 InterruptIn *button_joystick;
eencae 3:964a6d95acdd 82
eencae 3:964a6d95acdd 83 AnalogIn *vert;
eencae 3:964a6d95acdd 84 AnalogIn *horiz;
eencae 1:6d25cd49059b 85
eencae 1:6d25cd49059b 86 PwmOut *buzzer;
eencae 1:6d25cd49059b 87 AnalogIn *pot;
eencae 1:6d25cd49059b 88
eencae 1:6d25cd49059b 89 Timeout *timeout;
eencae 1:6d25cd49059b 90
eencae 1:6d25cd49059b 91 void init_buttons();
eencae 1:6d25cd49059b 92 void tone_off();
eencae 3:964a6d95acdd 93
eencae 1:6d25cd49059b 94 void a_isr();
eencae 1:6d25cd49059b 95 void b_isr();
eencae 1:6d25cd49059b 96 void x_isr();
eencae 1:6d25cd49059b 97 void y_isr();
eencae 1:6d25cd49059b 98 void l_isr();
eencae 1:6d25cd49059b 99 void r_isr();
eencae 1:6d25cd49059b 100 void back_isr();
eencae 1:6d25cd49059b 101 void start_isr();
eencae 3:964a6d95acdd 102 void joy_isr();
eencae 3:964a6d95acdd 103
eencae 3:964a6d95acdd 104 bool a_flag,b_flag,x_flag,y_flag,l_flag,r_flag,back_flag,start_flag,joy_flag;
eencae 3:964a6d95acdd 105
eencae 3:964a6d95acdd 106 // centred x,y values
eencae 3:964a6d95acdd 107 float _x0;
eencae 3:964a6d95acdd 108 float _y0;
eencae 3:964a6d95acdd 109
eencae 3:964a6d95acdd 110
eencae 0:a6288c29b936 111
eencae 0:a6288c29b936 112 };
eencae 0:a6288c29b936 113
eencae 0:a6288c29b936 114 #endif