Li Ruofan 201199450
Dependencies: mbed Gamepad Joystick
Diff: Joystick/Joystick.h
- Revision:
- 8:b4a2954dd74f
- Parent:
- 7:e3844250b77d
--- a/Joystick/Joystick.h Fri May 15 22:23:22 2020 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,108 +0,0 @@ -#ifndef JOYSTICK_H -#define JOYSTICK_H - -#include "mbed.h" - -// this value can be tuned to alter tolerance of joystick movement -#define TOL 0.1f -#define RAD2DEG 57.2957795131f - -enum Direction { - CENTRE, // 0 - N, // 1 - NE, // 2 - E, // 3 - SE, // 4 - S, // 5 - SW, // 6 - W, // 7 - NW // 8 -}; - -struct Vector2D { - float x; - float y; -}; - -struct Polar { - float mag; - float angle; -}; - -/** Joystick Class -@author Dr Craig A. Evans, University of Leeds -@brief Library for interfacing with analogue joystick - -Example: - -@code - -#include "mbed.h" -#include "Joystick.h" - -// y x button -Joystick joystick(PTB10,PTB11,PTC16); - -int main() { - - joystick.init(); - - while(1) { - - Vector2D coord = joystick.get_coord(); - printf("Coord = %f,%f\n",coord.x,coord.y); - - Vector2D mapped_coord = joystick.get_mapped_coord(); - printf("Mapped coord = %f,%f\n",mapped_coord.x,mapped_coord.y); - - float mag = joystick.get_mag(); - float angle = joystick.get_angle(); - printf("Mag = %f Angle = %f\n",mag,angle); - - Direction d = joystick.get_direction(); - printf("Direction = %i\n",d); - - if (joystick.button_pressed() ) { - printf("Button Pressed\n"); - } - - wait(0.5); - } - - -} - -* @endcode -*/ -class Joystick -{ -public: - - // y-pot x-pot button - Joystick(PinName vertPin,PinName horizPin,PinName clickPin); - - void init(); // needs to be called at start with joystick centred - float get_mag(); // polar - float get_angle(); // polar - Vector2D get_coord(); // cartesian co-ordinates x,y - Vector2D get_mapped_coord(); // x,y mapped to circle - Direction get_direction(); // N,NE,E,SE etc. - Polar get_polar(); // mag and angle in struct form - bool button_pressed(); // read button flag set in ISR when button pressed - -private: - - AnalogIn *vert; - AnalogIn *horiz; - InterruptIn *click; - - int _click_flag; // flag set in ISR - void click_isr(); // ISR on button press - - // centred x,y values - float _x0; - float _y0; - -}; - -#endif \ No newline at end of file