Dance Dance Revolution program for main mbed
Dependencies: 4DGL-uLCD-SE SDFileSystem mbed-rtos mbed wave_player
joystick.h
- Committer:
- wliu88
- Date:
- 2016-04-29
- Revision:
- 0:8a02ac09eae0
File content as of revision 0:8a02ac09eae0:
#include "mbed.h"
class Nav_Switch
{
public:
Nav_Switch(PinName up,PinName down,PinName left,PinName right,PinName fire,
volatile bool* u, volatile bool* d, volatile bool* l, volatile bool* r, volatile bool* f, volatile int* counter);
//boolean functions to test each switch
void up();
void down();
void left();
void right();
void fire();
private:
InterruptIn _up;
InterruptIn _down;
InterruptIn _left;
InterruptIn _right;
InterruptIn _fire;
volatile bool* _u;
volatile bool* _d;
volatile bool* _l;
volatile bool* _r;
volatile bool* _f;
volatile int* _counter;
};
Nav_Switch::Nav_Switch (PinName up,PinName down,PinName left,PinName right,PinName fire,
volatile bool* u, volatile bool* d, volatile bool* l, volatile bool* r, volatile bool* f,
volatile int* counter):
_up(up), _down(down), _left(left), _right(right), _fire(fire),
_u(u), _d(d), _l(l), _r(r), _f(f),
_counter(counter)
{
_up.mode(PullUp); //needed if pullups not on board or a bare nav switch is used - delete otherwise
_down.mode(PullUp);
_left.mode(PullUp);
_right.mode(PullUp);
_fire.mode(PullUp);
wait(0.001); //delays just a bit for pullups to pull inputs high
_up.fall(this, &Nav_Switch::up);
_down.fall(this, &Nav_Switch::down);
_left.fall(this, &Nav_Switch::left);
_right.fall(this, &Nav_Switch::right);
_fire.fall(this, &Nav_Switch::fire);
}
inline void Nav_Switch::up()
{
(*_u) = true;
(*_counter) = ((*_counter) + 2 - 1) % 2;
}
inline void Nav_Switch::down()
{
(*_d) = true;
(*_counter) = ((*_counter) + 1) % 2;
}
inline void Nav_Switch::left()
{
(*_l) = true;
}
inline void Nav_Switch::right()
{
(*_r) = true;
}
inline void Nav_Switch::fire()
{
(*_f) = true;
}