Lab that has to do with basic IO on mbed.

Dependencies:   DebounceIn mbed PinDetect

Committer:
Jesse Baker
Date:
Thu Jan 21 11:42:33 2016 -0500
Revision:
45:6f60aac74257
Parent:
44:30abfd5d24f2
Child:
46:7775a1ff6915
JB commented out George main, de-commented Jesse main, testing 5-way switch code

Who changed what in which revision?

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