Shane Barton
/
sbart_blinky_edit
SBART_SSD341_HW_4-2
Fork of blink_kl46z_button_LCD by
main.cpp@4:1490375a8766, 2016-09-11 (annotated)
- Committer:
- sbart
- Date:
- Sun Sep 11 02:35:35 2016 +0000
- Revision:
- 4:1490375a8766
- Parent:
- 3:fc189dd7ac64
SBART_SSD341_HW_4-2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
scohennm | 0:e23fffd4b9a7 | 1 | #include "mbed.h" |
scohennm | 2:b49e5adf84df | 2 | #include "SLCD.h" |
scohennm | 2:b49e5adf84df | 3 | |
scohennm | 0:e23fffd4b9a7 | 4 | #define LEDON false |
scohennm | 0:e23fffd4b9a7 | 5 | #define LEDOFF true |
scohennm | 1:2688f68df85d | 6 | #define NUMBUTS 2 |
scohennm | 3:fc189dd7ac64 | 7 | #define LBUT PTC12 // port addresses for buttons |
scohennm | 1:2688f68df85d | 8 | #define RBUT PTC3 |
sbart | 4:1490375a8766 | 9 | #define BLINKTIME 0.2// in seconds //SB - changed the LED blink time to 200 ms |
sbart | 4:1490375a8766 | 10 | #define OFFTIME 0.5 //SB - created off time and set it to 500 ms |
scohennm | 3:fc189dd7ac64 | 11 | #define BUTTONTIME 0.2 |
sbart | 4:1490375a8766 | 12 | #define LCDCHARLEN 25 //SB - Changed the character length allowed |
scohennm | 2:b49e5adf84df | 13 | #define NUMMESS 2 |
scohennm | 2:b49e5adf84df | 14 | #define LRED "RED" |
scohennm | 2:b49e5adf84df | 15 | #define LGREEN "GREN" |
sbart | 4:1490375a8766 | 16 | #define PRED "RED BUTTON PUSHED\r\n" //SB - entered new red button sentence |
sbart | 4:1490375a8766 | 17 | #define PGREEN "GREEN BUTTON PUSHED\r\n" //SB - entered new green button sentence |
sbart | 4:1490375a8766 | 18 | #define PROGNAME "sbart_blinky_edit\r\n" |
sbart | 4:1490375a8766 | 19 | |
sbart | 4:1490375a8766 | 20 | #include <string> |
sbart | 4:1490375a8766 | 21 | |
scohennm | 0:e23fffd4b9a7 | 22 | |
scohennm | 0:e23fffd4b9a7 | 23 | // slightly more interesting blinky 140814 sc |
scohennm | 2:b49e5adf84df | 24 | SLCD slcd; //define LCD display |
scohennm | 0:e23fffd4b9a7 | 25 | |
scohennm | 3:fc189dd7ac64 | 26 | // Timer to elliminate wait() function |
scohennm | 3:fc189dd7ac64 | 27 | Timer LEDTimer; // for blinking LEDs |
sbart | 4:1490375a8766 | 28 | Timer OffTimer; // for off state |
scohennm | 3:fc189dd7ac64 | 29 | Timer ButtonTimer; // for reading button states |
scohennm | 1:2688f68df85d | 30 | |
scohennm | 3:fc189dd7ac64 | 31 | bool ledState = LEDON; |
scohennm | 3:fc189dd7ac64 | 32 | |
scohennm | 1:2688f68df85d | 33 | DigitalIn buttons[NUMBUTS] = {RBUT, LBUT}; |
scohennm | 1:2688f68df85d | 34 | DigitalOut LEDs[NUMBUTS] = {LED_GREEN, LED_RED}; |
scohennm | 1:2688f68df85d | 35 | Serial pc(USBTX, USBRX);// set up USB as communicationis to Host PC via USB connectons |
scohennm | 0:e23fffd4b9a7 | 36 | |
scohennm | 3:fc189dd7ac64 | 37 | void allLEDsOff(){ |
scohennm | 3:fc189dd7ac64 | 38 | int i; |
scohennm | 3:fc189dd7ac64 | 39 | for (i=0; i<NUMBUTS; i++){ |
scohennm | 3:fc189dd7ac64 | 40 | LEDs[i] = LEDOFF; |
scohennm | 3:fc189dd7ac64 | 41 | } |
scohennm | 3:fc189dd7ac64 | 42 | } |
scohennm | 3:fc189dd7ac64 | 43 | |
scohennm | 2:b49e5adf84df | 44 | void LCDMess(char *lMess){ |
scohennm | 2:b49e5adf84df | 45 | slcd.Home(); |
scohennm | 2:b49e5adf84df | 46 | slcd.clear(); |
scohennm | 2:b49e5adf84df | 47 | slcd.printf(lMess); |
scohennm | 2:b49e5adf84df | 48 | } |
scohennm | 2:b49e5adf84df | 49 | |
scohennm | 3:fc189dd7ac64 | 50 | void initialize_global_vars(){ |
scohennm | 3:fc189dd7ac64 | 51 | pc.printf(PROGNAME); |
scohennm | 3:fc189dd7ac64 | 52 | // set up DAQ timers |
scohennm | 3:fc189dd7ac64 | 53 | ButtonTimer.start(); |
scohennm | 3:fc189dd7ac64 | 54 | ButtonTimer.reset(); |
scohennm | 3:fc189dd7ac64 | 55 | LEDTimer.start(); |
scohennm | 3:fc189dd7ac64 | 56 | LEDTimer.reset(); |
scohennm | 3:fc189dd7ac64 | 57 | allLEDsOff(); |
scohennm | 3:fc189dd7ac64 | 58 | } |
scohennm | 1:2688f68df85d | 59 | // -------------------------------- |
scohennm | 3:fc189dd7ac64 | 60 | int main() { |
scohennm | 1:2688f68df85d | 61 | int i; |
scohennm | 1:2688f68df85d | 62 | int currentLED = 0; |
scohennm | 3:fc189dd7ac64 | 63 | char rMess[NUMMESS][LCDCHARLEN]={LGREEN, LRED}; // for LCD |
sbart | 4:1490375a8766 | 64 | char pMess[NUMMESS][LCDCHARLEN]={PGREEN, PRED}; // for pc serial port |
scohennm | 3:fc189dd7ac64 | 65 | |
scohennm | 3:fc189dd7ac64 | 66 | initialize_global_vars(); //keep things organized |
scohennm | 3:fc189dd7ac64 | 67 | LEDs[currentLED] = LEDON; |
scohennm | 2:b49e5adf84df | 68 | LCDMess(rMess[currentLED]); |
scohennm | 2:b49e5adf84df | 69 | pc.printf(pMess[currentLED]); |
scohennm | 3:fc189dd7ac64 | 70 | // End of setup |
scohennm | 0:e23fffd4b9a7 | 71 | while(true) { |
scohennm | 3:fc189dd7ac64 | 72 | if (ButtonTimer > BUTTONTIME){ |
scohennm | 3:fc189dd7ac64 | 73 | for (i=0; i<NUMBUTS; i++){ // index will be 0 or 1 |
scohennm | 3:fc189dd7ac64 | 74 | if(!buttons[i]) { |
scohennm | 3:fc189dd7ac64 | 75 | allLEDsOff(); |
scohennm | 3:fc189dd7ac64 | 76 | LCDMess(rMess[i]); |
scohennm | 3:fc189dd7ac64 | 77 | pc.printf(pMess[i]); |
scohennm | 3:fc189dd7ac64 | 78 | currentLED = i; |
scohennm | 3:fc189dd7ac64 | 79 | } // if ! buttons |
scohennm | 3:fc189dd7ac64 | 80 | }// for loop to look at buttons |
scohennm | 3:fc189dd7ac64 | 81 | ButtonTimer.reset(); |
scohennm | 1:2688f68df85d | 82 | } |
scohennm | 3:fc189dd7ac64 | 83 | if(LEDTimer.read() > BLINKTIME){ |
scohennm | 3:fc189dd7ac64 | 84 | ledState = !ledState; // Flip the general state |
scohennm | 3:fc189dd7ac64 | 85 | LEDs[currentLED] = ledState; |
sbart | 4:1490375a8766 | 86 | wait(OFFTIME); //SB - Wait for the off time to pass.. |
sbart | 4:1490375a8766 | 87 | LEDTimer.reset(); //SB - then reset |
sbart | 4:1490375a8766 | 88 | |
scohennm | 3:fc189dd7ac64 | 89 | } |
scohennm | 3:fc189dd7ac64 | 90 | // Do other things here between times of reading and flashing |
scohennm | 0:e23fffd4b9a7 | 91 | } |
scohennm | 0:e23fffd4b9a7 | 92 | } |