Colin Monroe
/
CKM_HW_4_2
Homework for week 4, modified from original program as per instructions - CKM
Diff: main.cpp
- Revision:
- 0:23505376c0c6
- Child:
- 1:4a283472ac8e
diff -r 000000000000 -r 23505376c0c6 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Sep 07 18:40:05 2016 +0000 @@ -0,0 +1,85 @@ +#include "mbed.h" +#include "SLCD.h" + +#define LEDON false +#define LEDOFF true +#define NUMBUTS 2 +#define LBUT PTC12 // port addresses for buttons +#define RBUT PTC3 +#define BLINKTIME 0.5 // in seconds //CKM: changed blinktime to 500 ms (0.5) from 0.3 (300 ms) +#define BUTTONTIME 0.2 +#define LCDCHARLEN 25 //CKM: changed character length to 25 for character array +#define NUMMESS 2 +#define LRED "RED" +#define LGREEN "GREN" +#define PRED "RED BUTTON PUSHED\r\n" //CKM: changed serial output #DEFINE to "RED BUTTON PUSHED" +#define PGREEN "GREEN BUTTON PUSHED\r\n" //CKM: changed serial output #DEFINE to "GREEN BUTTON PUSHED" +#define PROGNAME "blink_kl46z_buttton LCD v2\r\n" + +// slightly more interesting blinky 140814 sc +SLCD slcd; //define LCD display + +// Timer to elliminate wait() function +Timer LEDTimer; // for blinking LEDs +Timer ButtonTimer; // for reading button states + +bool ledState = LEDON; + +DigitalIn buttons[NUMBUTS] = {RBUT, LBUT}; +DigitalOut LEDs[NUMBUTS] = {LED_GREEN, LED_RED}; +Serial pc(USBTX, USBRX);// set up USB as communicationis to Host PC via USB connectons + +void allLEDsOff(){ + int i; + for (i=0; i<NUMBUTS; i++){ + LEDs[i] = LEDOFF; + } +} + +void LCDMess(char *lMess){ + slcd.Home(); + slcd.clear(); + slcd.printf(lMess); +} + +void initialize_global_vars(){ + pc.printf(PROGNAME); + // set up DAQ timers + ButtonTimer.start(); + ButtonTimer.reset(); + LEDTimer.start(); + LEDTimer.reset(); + allLEDsOff(); +} +// -------------------------------- + int main() { + int i; + int currentLED = 0; + char rMess[NUMMESS][LCDCHARLEN]={LGREEN, LRED}; // for LCD + char pMess[NUMMESS][LCDCHARLEN]={PRED, PGREEN}; // for pc serial port + + initialize_global_vars(); //keep things organized + LEDs[currentLED] = LEDON; + LCDMess(rMess[currentLED]); + pc.printf(pMess[currentLED]); +// End of setup + while(true) { + if (ButtonTimer > BUTTONTIME){ + for (i=0; i<NUMBUTS; i++){ // index will be 0 or 1 + if(!buttons[i]) { + allLEDsOff(); + LCDMess(rMess[i]); + pc.printf(pMess[i]); + currentLED = i; + } // if ! buttons + }// for loop to look at buttons + ButtonTimer.reset(); + } + if(LEDTimer.read() > BLINKTIME){ + LEDTimer.reset(); + ledState = !ledState; // Flip the general state + LEDs[currentLED] = ledState; + } + // Do other things here between times of reading and flashing + } +} \ No newline at end of file