A class to handle reading, scaling and filtering horizontal and vertical position, and rise/fall interrupts for the button.

Committer:
alex89_2
Date:
Tue Sep 28 15:01:13 2010 +0000
Revision:
1:e55694d8a418
Parent:
0:9c486d50434e
Child:
2:8805f880e231
Updated documentation

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alex89_2 0:9c486d50434e 1 //remove repetition
alex89_2 0:9c486d50434e 2 #ifndef MBED_JOYSTICK_H
alex89_2 0:9c486d50434e 3 #define MBED_JOYSTICK_H
alex89_2 0:9c486d50434e 4
alex89_2 0:9c486d50434e 5 //required to use mbed functions
alex89_2 0:9c486d50434e 6 #include "mbed.h"
alex89_2 0:9c486d50434e 7
alex89_2 0:9c486d50434e 8 struct joyhv {
alex89_2 0:9c486d50434e 9 double h;
alex89_2 0:9c486d50434e 10 double v;
alex89_2 0:9c486d50434e 11 };
alex89_2 0:9c486d50434e 12
alex89_2 1:e55694d8a418 13 /** Class: Joystick
alex89_2 0:9c486d50434e 14 * Used for reading from an analog joystick
alex89_2 0:9c486d50434e 15 *
alex89_2 0:9c486d50434e 16 * Example:
alex89_2 0:9c486d50434e 17 * > #include "mbed.h"
alex89_2 0:9c486d50434e 18 * > Joystick joy(p20, p19, p18);
alex89_2 0:9c486d50434e 19 */
alex89_2 0:9c486d50434e 20
alex89_2 0:9c486d50434e 21 class Joystick {
alex89_2 0:9c486d50434e 22 public:
alex89_2 1:e55694d8a418 23 /** Constructor: Joystick
alex89_2 0:9c486d50434e 24 *
alex89_2 0:9c486d50434e 25 *
alex89_2 0:9c486d50434e 26 * Variables:
alex89_2 0:9c486d50434e 27 * b - DigitalIn pin for button
alex89_2 0:9c486d50434e 28 * h - AnalogIn pin for horizontal
alex89_2 0:9c486d50434e 29 * v - AnalogIn pin for vertical
alex89_2 0:9c486d50434e 30 */
alex89_2 0:9c486d50434e 31 Joystick(PinName b, PinName h, PinName v);
alex89_2 0:9c486d50434e 32
alex89_2 0:9c486d50434e 33 /* Function: read
alex89_2 0:9c486d50434e 34 * Read the joystick position, represented as a joyhv value - h and v are doubles in the range [0.0, 1.0]
alex89_2 0:9c486d50434e 35 *
alex89_2 0:9c486d50434e 36 * Variables:
alex89_2 0:9c486d50434e 37 * returns - A structure of two double values representing the position of the joystick,
alex89_2 0:9c486d50434e 38 * measured as a percentage vertically (joyhv.v) or horizontally (joyhv.h)
alex89_2 0:9c486d50434e 39 */
alex89_2 0:9c486d50434e 40 joyhv read();
alex89_2 0:9c486d50434e 41
alex89_2 0:9c486d50434e 42 /* Function: getV
alex89_2 0:9c486d50434e 43 * Read the joystick's vertical position, represented as a double value in the range [0.0, 1.0]
alex89_2 0:9c486d50434e 44 *
alex89_2 0:9c486d50434e 45 * Variables:
alex89_2 0:9c486d50434e 46 * returns - A double values representing the vertical position of the joystick,
alex89_2 0:9c486d50434e 47 * measured as a percentage
alex89_2 0:9c486d50434e 48 */
alex89_2 0:9c486d50434e 49 double getV();
alex89_2 0:9c486d50434e 50
alex89_2 0:9c486d50434e 51 /* Function: getH
alex89_2 0:9c486d50434e 52 * Read the joystick's horizontal position, represented as a double value in the range [0.0, 1.0]
alex89_2 0:9c486d50434e 53 *
alex89_2 0:9c486d50434e 54 * Variables:
alex89_2 0:9c486d50434e 55 * returns - A double values representing the horizontal position of the joystick,
alex89_2 0:9c486d50434e 56 * measured as a percentage
alex89_2 0:9c486d50434e 57 */
alex89_2 0:9c486d50434e 58 double getH();
alex89_2 0:9c486d50434e 59
alex89_2 0:9c486d50434e 60 /* Function: rise
alex89_2 0:9c486d50434e 61 * Attach a function to call when a rising edge occurs on the button input
alex89_2 0:9c486d50434e 62 *
alex89_2 0:9c486d50434e 63 * Variables:
alex89_2 0:9c486d50434e 64 * fptr - A pointer to a void function, or 0 to set as none
alex89_2 0:9c486d50434e 65 */
alex89_2 0:9c486d50434e 66 void rise (void (*fptr)(void));
alex89_2 0:9c486d50434e 67
alex89_2 0:9c486d50434e 68 /* Function: fall
alex89_2 0:9c486d50434e 69 * Attach a function to call when a falling edge occurs on the button input
alex89_2 0:9c486d50434e 70 *
alex89_2 0:9c486d50434e 71 * Variables:
alex89_2 0:9c486d50434e 72 * fptr - A pointer to a void function, or 0 to set as none
alex89_2 0:9c486d50434e 73 */
alex89_2 0:9c486d50434e 74 void fall (void (*fptr)(void));
alex89_2 0:9c486d50434e 75
alex89_2 0:9c486d50434e 76 /* Function: operator joyhv
alex89_2 0:9c486d50434e 77 * An operator shorthand for <read()>
alex89_2 0:9c486d50434e 78 *
alex89_2 0:9c486d50434e 79 * The joyhv() operator can be used as a shorthand for <read()> to simplify common code sequences
alex89_2 0:9c486d50434e 80 *
alex89_2 0:9c486d50434e 81 */
alex89_2 0:9c486d50434e 82 operator joyhv ();
alex89_2 0:9c486d50434e 83
alex89_2 0:9c486d50434e 84
alex89_2 0:9c486d50434e 85 joyhv scale(joyhv read);
alex89_2 0:9c486d50434e 86 joyhv filter(joyhv read, double factor);
alex89_2 0:9c486d50434e 87
alex89_2 0:9c486d50434e 88
alex89_2 0:9c486d50434e 89 private:
alex89_2 0:9c486d50434e 90 InterruptIn _b;
alex89_2 0:9c486d50434e 91 AnalogIn _h;
alex89_2 0:9c486d50434e 92 AnalogIn _v;
alex89_2 0:9c486d50434e 93 };
alex89_2 0:9c486d50434e 94
alex89_2 0:9c486d50434e 95
alex89_2 0:9c486d50434e 96 #endif