ece 4180 lab 3

Dependencies:   mbed wave_player mbed-rtos 4DGL-uLCD-SE SDFileSystem X_NUCLEO_53L0A1 HC_SR04_Ultrasonic_Library

Committer:
emilywilson
Date:
Thu Feb 27 12:57:44 2020 +0000
Revision:
4:1ef667567942
add extra credit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emilywilson 4:1ef667567942 1 #include "mbed.h"
emilywilson 4:1ef667567942 2
emilywilson 4:1ef667567942 3 class Nav_Switch
emilywilson 4:1ef667567942 4 {
emilywilson 4:1ef667567942 5 public:
emilywilson 4:1ef667567942 6 Nav_Switch(PinName up,PinName down,PinName left,PinName right,PinName fire);
emilywilson 4:1ef667567942 7 int read();
emilywilson 4:1ef667567942 8 //boolean functions to test each switch
emilywilson 4:1ef667567942 9 bool up();
emilywilson 4:1ef667567942 10 bool down();
emilywilson 4:1ef667567942 11 bool left();
emilywilson 4:1ef667567942 12 bool right();
emilywilson 4:1ef667567942 13 bool fire();
emilywilson 4:1ef667567942 14 //automatic read on RHS
emilywilson 4:1ef667567942 15 operator int ();
emilywilson 4:1ef667567942 16 //index to any switch array style
emilywilson 4:1ef667567942 17 bool operator[](int index) {
emilywilson 4:1ef667567942 18 return _pins[index];
emilywilson 4:1ef667567942 19 };
emilywilson 4:1ef667567942 20 private:
emilywilson 4:1ef667567942 21 BusIn _pins;
emilywilson 4:1ef667567942 22
emilywilson 4:1ef667567942 23 };
emilywilson 4:1ef667567942 24 Nav_Switch::Nav_Switch (PinName up,PinName down,PinName left,PinName right,PinName fire):
emilywilson 4:1ef667567942 25 _pins(up, down, left, right, fire)
emilywilson 4:1ef667567942 26 {
emilywilson 4:1ef667567942 27 _pins.mode(PullUp); //needed if pullups not on board or a bare nav switch is used - delete otherwise
emilywilson 4:1ef667567942 28 wait(0.001); //delays just a bit for pullups to pull inputs high
emilywilson 4:1ef667567942 29 }
emilywilson 4:1ef667567942 30 inline bool Nav_Switch::up()
emilywilson 4:1ef667567942 31 {
emilywilson 4:1ef667567942 32 return !(_pins[0]);
emilywilson 4:1ef667567942 33 }
emilywilson 4:1ef667567942 34 inline bool Nav_Switch::down()
emilywilson 4:1ef667567942 35 {
emilywilson 4:1ef667567942 36 return !(_pins[1]);
emilywilson 4:1ef667567942 37 }
emilywilson 4:1ef667567942 38 inline bool Nav_Switch::left()
emilywilson 4:1ef667567942 39 {
emilywilson 4:1ef667567942 40 return !(_pins[2]);
emilywilson 4:1ef667567942 41 }
emilywilson 4:1ef667567942 42 inline bool Nav_Switch::right()
emilywilson 4:1ef667567942 43 {
emilywilson 4:1ef667567942 44 return !(_pins[3]);
emilywilson 4:1ef667567942 45 }
emilywilson 4:1ef667567942 46 inline bool Nav_Switch::fire()
emilywilson 4:1ef667567942 47 {
emilywilson 4:1ef667567942 48 return !(_pins[4]);
emilywilson 4:1ef667567942 49 }
emilywilson 4:1ef667567942 50 inline int Nav_Switch::read()
emilywilson 4:1ef667567942 51 {
emilywilson 4:1ef667567942 52 return _pins.read();
emilywilson 4:1ef667567942 53 }
emilywilson 4:1ef667567942 54 inline Nav_Switch::operator int ()
emilywilson 4:1ef667567942 55 {
emilywilson 4:1ef667567942 56 return _pins.read();
emilywilson 4:1ef667567942 57 }