My Embedded Systems Project Ihsian Mulla (el14imfm@leeds.ac.uk 200839613

joystick.cpp

Committer:
Ihsianmulla
Date:
2016-05-04
Revision:
0:f79fe9dc65ee

File content as of revision 0:f79fe9dc65ee:

/** Temperature Sensor Functions
* Used for printing and updating the temperature at 1Hz with unit conversion capabilities
@file joystick.cpp
@brief contains functions for joystick update/calibration and direction names with specification
@author Craig Evans
@date May 2016
*/

#include "joystick.h"

extern Joystick joystick;

void calibrateJoystick()
{
    button.mode(PullDown);// additional pull down for external button
    Jbutton.mode(PullDown);
    // must not move during calibration
    joystick.x0 = xPot;  // initial positions in the range 0.0 to 1.0 (0.5 if centred exactly)
    joystick.y0 = yPot;
}

Joystick return_data(){
    return joystick;
}
void updateJoystick()
{
    // read current joystick values relative to calibrated values (in range -0.5 to 0.5, 0.0 is centred)
    joystick.x = xPot - joystick.x0;
    joystick.y = yPot - joystick.y0;
    // read button state
    joystick.button = button;

    // calculate direction depending on x,y values
    // tolerance allows a little lee-way in case joystick not exactly in the stated direction
    if ( fabs(joystick.y) < DIRECTION_TOLERANCE && fabs(joystick.x) < DIRECTION_TOLERANCE) {
        joystick.direction = CENTRE;
    } else if ( joystick.y > DIRECTION_TOLERANCE && fabs(joystick.x) < DIRECTION_TOLERANCE) {
        joystick.direction = UP;
    } else if ( joystick.y < DIRECTION_TOLERANCE && fabs(joystick.x) < DIRECTION_TOLERANCE) {
        joystick.direction = DOWN;
    } else if ( joystick.x > DIRECTION_TOLERANCE && fabs(joystick.y) < DIRECTION_TOLERANCE) {
        joystick.direction = RIGHT;
    } else if ( joystick.x < DIRECTION_TOLERANCE && fabs(joystick.y) < DIRECTION_TOLERANCE) {
        joystick.direction = LEFT;
    } else {
        joystick.direction = UNKNOWN;
    }

}