Dependencies:   MCP23S17 PinDetect mbed

Committer:
jderemer3
Date:
Wed Mar 01 16:36:55 2017 +0000
Revision:
0:9dc33481ce1b

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jderemer3 0:9dc33481ce1b 1 #include "mbed.h"
jderemer3 0:9dc33481ce1b 2
jderemer3 0:9dc33481ce1b 3 BusOut mbedleds(LED1,LED2,LED3,LED4);
jderemer3 0:9dc33481ce1b 4 //BusOut/In is faster than multiple DigitalOut/Ins
jderemer3 0:9dc33481ce1b 5
jderemer3 0:9dc33481ce1b 6 class Nav_Switch
jderemer3 0:9dc33481ce1b 7 {
jderemer3 0:9dc33481ce1b 8 public:
jderemer3 0:9dc33481ce1b 9 Nav_Switch(PinName up,PinName down,PinName left,PinName right,PinName fire);
jderemer3 0:9dc33481ce1b 10 int read();
jderemer3 0:9dc33481ce1b 11 //boolean functions to test each switch
jderemer3 0:9dc33481ce1b 12 bool up();
jderemer3 0:9dc33481ce1b 13 bool down();
jderemer3 0:9dc33481ce1b 14 bool left();
jderemer3 0:9dc33481ce1b 15 bool right();
jderemer3 0:9dc33481ce1b 16 bool fire();
jderemer3 0:9dc33481ce1b 17 //automatic read on RHS
jderemer3 0:9dc33481ce1b 18 operator int ();
jderemer3 0:9dc33481ce1b 19 //index to any switch array style
jderemer3 0:9dc33481ce1b 20 bool operator[](int index) {
jderemer3 0:9dc33481ce1b 21 return _pins[index];
jderemer3 0:9dc33481ce1b 22 };
jderemer3 0:9dc33481ce1b 23 private:
jderemer3 0:9dc33481ce1b 24 BusIn _pins;
jderemer3 0:9dc33481ce1b 25
jderemer3 0:9dc33481ce1b 26 };
jderemer3 0:9dc33481ce1b 27 Nav_Switch::Nav_Switch (PinName up,PinName down,PinName left,PinName right,PinName fire):
jderemer3 0:9dc33481ce1b 28 _pins(up, down, left, right, fire)
jderemer3 0:9dc33481ce1b 29 {
jderemer3 0:9dc33481ce1b 30 _pins.mode(PullUp); //needed if pullups not on board or a bare nav switch is used - delete otherwise
jderemer3 0:9dc33481ce1b 31 wait(0.001); //delays just a bit for pullups to pull inputs high
jderemer3 0:9dc33481ce1b 32 }
jderemer3 0:9dc33481ce1b 33 inline bool Nav_Switch::up()
jderemer3 0:9dc33481ce1b 34 {
jderemer3 0:9dc33481ce1b 35 return !(_pins[0]);
jderemer3 0:9dc33481ce1b 36 }
jderemer3 0:9dc33481ce1b 37 inline bool Nav_Switch::down()
jderemer3 0:9dc33481ce1b 38 {
jderemer3 0:9dc33481ce1b 39 return !(_pins[1]);
jderemer3 0:9dc33481ce1b 40 }
jderemer3 0:9dc33481ce1b 41 inline bool Nav_Switch::left()
jderemer3 0:9dc33481ce1b 42 {
jderemer3 0:9dc33481ce1b 43 return !(_pins[2]);
jderemer3 0:9dc33481ce1b 44 }
jderemer3 0:9dc33481ce1b 45 inline bool Nav_Switch::right()
jderemer3 0:9dc33481ce1b 46 {
jderemer3 0:9dc33481ce1b 47 return !(_pins[3]);
jderemer3 0:9dc33481ce1b 48 }
jderemer3 0:9dc33481ce1b 49 inline bool Nav_Switch::fire()
jderemer3 0:9dc33481ce1b 50 {
jderemer3 0:9dc33481ce1b 51 return !(_pins[4]);
jderemer3 0:9dc33481ce1b 52 }
jderemer3 0:9dc33481ce1b 53 inline int Nav_Switch::read()
jderemer3 0:9dc33481ce1b 54 {
jderemer3 0:9dc33481ce1b 55 return _pins.read();
jderemer3 0:9dc33481ce1b 56 }
jderemer3 0:9dc33481ce1b 57 inline Nav_Switch::operator int ()
jderemer3 0:9dc33481ce1b 58 {
jderemer3 0:9dc33481ce1b 59 return _pins.read();
jderemer3 0:9dc33481ce1b 60 }
jderemer3 0:9dc33481ce1b 61
jderemer3 0:9dc33481ce1b 62 //Nav_Switch myNav( p9, p6, p7, p5, p8); //pin order on Sparkfun breakout
jderemer3 0:9dc33481ce1b 63
jderemer3 0:9dc33481ce1b 64 //int main()
jderemer3 0:9dc33481ce1b 65 //{
jderemer3 0:9dc33481ce1b 66 // while(1) {
jderemer3 0:9dc33481ce1b 67 // //with pullups a button hit is a "0" - "~" inverts data to leds
jderemer3 0:9dc33481ce1b 68 // mbedleds = ~(myNav & 0x0F); //update leds with nav switch direction inputs
jderemer3 0:9dc33481ce1b 69 // if(myNav.fire()) mbedleds = 0x0F; //special all leds on case for fire (center button)
jderemer3 0:9dc33481ce1b 70 // //or use - if(myNav[4]==0) mbedleds = 0x0F; //can index a switch bit like this
jderemer3 0:9dc33481ce1b 71 // wait(0.02);
jderemer3 0:9dc33481ce1b 72 // }
jderemer3 0:9dc33481ce1b 73 //}