SBART_SSD341_HW_4-2

Dependencies:   SLCD mbed

Fork of blink_kl46z_button_LCD by Stanley Cohen

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?

UserRevisionLine numberNew 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 }