Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: Gamepad.h
- Revision:
- 8:7eaf26f4b5f2
- Parent:
- 6:b1c3dfe67f7d
- Child:
- 9:893189072e89
--- 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;
};