![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Homework
Fork of blink_kl46z_button_LCD by
main.cpp@4:90ea2e6fdad8, 2016-09-12 (annotated)
- Committer:
- kennylujan42
- Date:
- Mon Sep 12 05:28:43 2016 +0000
- Revision:
- 4:90ea2e6fdad8
- Parent:
- 3:fc189dd7ac64
KLUJA_SSD_341_HW_4.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 |
kennylujan42 | 4:90ea2e6fdad8 | 6 | #define BUTDOWN false |
kennylujan42 | 4:90ea2e6fdad8 | 7 | #define BUTUP true |
scohennm | 1:2688f68df85d | 8 | #define NUMBUTS 2 |
scohennm | 3:fc189dd7ac64 | 9 | #define LBUT PTC12 // port addresses for buttons |
scohennm | 1:2688f68df85d | 10 | #define RBUT PTC3 |
kennylujan42 | 4:90ea2e6fdad8 | 11 | #define BLINKTIME 0.05 // in seconds |
kennylujan42 | 4:90ea2e6fdad8 | 12 | #define BUTTONTIME 0.02 |
scohennm | 2:b49e5adf84df | 13 | #define LCDCHARLEN 10 |
scohennm | 2:b49e5adf84df | 14 | #define NUMMESS 2 |
scohennm | 2:b49e5adf84df | 15 | #define LRED "RED" |
kennylujan42 | 4:90ea2e6fdad8 | 16 | #define LGREEN "GREEN" |
scohennm | 2:b49e5adf84df | 17 | #define PRED "RED\r\n" |
scohennm | 2:b49e5adf84df | 18 | #define PGREEN "GREEN\r\n" |
kennylujan42 | 4:90ea2e6fdad8 | 19 | #define REDMESS "RED LED is ON\r\n" |
kennylujan42 | 4:90ea2e6fdad8 | 20 | #define GREENMESS "GREEN LED is ON\r\n"p |
scohennm | 3:fc189dd7ac64 | 21 | #define PROGNAME "blink_kl46z_buttton LCD v2\r\n" |
scohennm | 0:e23fffd4b9a7 | 22 | |
scohennm | 0:e23fffd4b9a7 | 23 | // slightly more interesting blinky 140814 sc |
kennylujan42 | 4:90ea2e6fdad8 | 24 | SLCD slcd; //define LCD display as a variaable |
kennylujan42 | 4:90ea2e6fdad8 | 25 | |
kennylujan42 | 4:90ea2e6fdad8 | 26 | |
scohennm | 0:e23fffd4b9a7 | 27 | |
kennylujan42 | 4:90ea2e6fdad8 | 28 | int ledState = LEDON; |
kennylujan42 | 4:90ea2e6fdad8 | 29 | int buttonStates[NUMBUTS] = {BUTDOWN, BUTUP}; |
kennylujan42 | 4:90ea2e6fdad8 | 30 | DigitalIn buttons[NUMBUTS] = {RBUT, LBUT}; |
kennylujan42 | 4:90ea2e6fdad8 | 31 | DigitalOut LEDs[NUMBUTS] = {LED_GREEN, LED_RED}; |
kennylujan42 | 4:90ea2e6fdad8 | 32 | |
kennylujan42 | 4:90ea2e6fdad8 | 33 | //needed port |
kennylujan42 | 4:90ea2e6fdad8 | 34 | Serial pc(USBTX, USBRX); |
kennylujan42 | 4:90ea2e6fdad8 | 35 | |
kennylujan42 | 4:90ea2e6fdad8 | 36 | // |
scohennm | 3:fc189dd7ac64 | 37 | // Timer to elliminate wait() function |
scohennm | 3:fc189dd7ac64 | 38 | Timer LEDTimer; // for blinking LEDs |
scohennm | 3:fc189dd7ac64 | 39 | Timer ButtonTimer; // for reading button states |
scohennm | 1:2688f68df85d | 40 | |
kennylujan42 | 4:90ea2e6fdad8 | 41 | void LCDMess(char *lMess){ |
kennylujan42 | 4:90ea2e6fdad8 | 42 | slcd.Home(); |
kennylujan42 | 4:90ea2e6fdad8 | 43 | slcd.clear(); |
kennylujan42 | 4:90ea2e6fdad8 | 44 | slcd.printf(lMess); |
kennylujan42 | 4:90ea2e6fdad8 | 45 | } |
scohennm | 3:fc189dd7ac64 | 46 | void allLEDsOff(){ |
scohennm | 3:fc189dd7ac64 | 47 | int i; |
scohennm | 3:fc189dd7ac64 | 48 | for (i=0; i<NUMBUTS; i++){ |
scohennm | 3:fc189dd7ac64 | 49 | LEDs[i] = LEDOFF; |
scohennm | 3:fc189dd7ac64 | 50 | } |
scohennm | 3:fc189dd7ac64 | 51 | } |
kennylujan42 | 4:90ea2e6fdad8 | 52 | int main(){ |
kennylujan42 | 4:90ea2e6fdad8 | 53 | |
scohennm | 1:2688f68df85d | 54 | int i; |
scohennm | 1:2688f68df85d | 55 | int currentLED = 0; |
kennylujan42 | 4:90ea2e6fdad8 | 56 | char rMess[NUMMESS][LCDCHARLEN]={LGREEN, LRED}; |
kennylujan42 | 4:90ea2e6fdad8 | 57 | char pMess[NUMMESS][LCDCHARLEN]={PRED,PGREEN}; |
kennylujan42 | 4:90ea2e6fdad8 | 58 | |
scohennm | 3:fc189dd7ac64 | 59 | |
kennylujan42 | 4:90ea2e6fdad8 | 60 | LEDs[currentLED] = LEDON; |
scohennm | 2:b49e5adf84df | 61 | LCDMess(rMess[currentLED]); |
kennylujan42 | 4:90ea2e6fdad8 | 62 | |
scohennm | 0:e23fffd4b9a7 | 63 | while(true) { |
scohennm | 3:fc189dd7ac64 | 64 | if (ButtonTimer > BUTTONTIME){ |
scohennm | 3:fc189dd7ac64 | 65 | for (i=0; i<NUMBUTS; i++){ // index will be 0 or 1 |
scohennm | 3:fc189dd7ac64 | 66 | if(!buttons[i]) { |
scohennm | 3:fc189dd7ac64 | 67 | allLEDsOff(); |
scohennm | 3:fc189dd7ac64 | 68 | LCDMess(rMess[i]); |
scohennm | 3:fc189dd7ac64 | 69 | currentLED = i; |
kennylujan42 | 4:90ea2e6fdad8 | 70 | } |
kennylujan42 | 4:90ea2e6fdad8 | 71 | } |
scohennm | 1:2688f68df85d | 72 | } |
kennylujan42 | 4:90ea2e6fdad8 | 73 | while(true){ |
kennylujan42 | 4:90ea2e6fdad8 | 74 | for (i=0; i<NUMBUTS; i++){ |
kennylujan42 | 4:90ea2e6fdad8 | 75 | LEDs[i] = LEDOFF; |
kennylujan42 | 4:90ea2e6fdad8 | 76 | if(!buttons[i]) { |
kennylujan42 | 4:90ea2e6fdad8 | 77 | LCDMess(rMess[i]); |
kennylujan42 | 4:90ea2e6fdad8 | 78 | |
kennylujan42 | 4:90ea2e6fdad8 | 79 | currentLED = i; |
kennylujan42 | 4:90ea2e6fdad8 | 80 | } |
kennylujan42 | 4:90ea2e6fdad8 | 81 | } |
kennylujan42 | 4:90ea2e6fdad8 | 82 | ledState = !ledState; |
kennylujan42 | 4:90ea2e6fdad8 | 83 | LEDs[currentLED] = ledState; |
kennylujan42 | 4:90ea2e6fdad8 | 84 | wait(BLINKTIME); |
kennylujan42 | 4:90ea2e6fdad8 | 85 | } |
kennylujan42 | 4:90ea2e6fdad8 | 86 | } |
kennylujan42 | 4:90ea2e6fdad8 | 87 | } |