Homework for week 4, modified from original program as per instructions - CKM

Dependencies:   SLCD mbed

Committer:
CKMonroe
Date:
Wed Sep 07 18:40:05 2016 +0000
Revision:
0:23505376c0c6
Child:
1:4a283472ac8e
Homework for week 4, modified to specification as per the assignment instructions- CKM

Who changed what in which revision?

UserRevisionLine numberNew contents of line
CKMonroe 0:23505376c0c6 1 #include "mbed.h"
CKMonroe 0:23505376c0c6 2 #include "SLCD.h"
CKMonroe 0:23505376c0c6 3
CKMonroe 0:23505376c0c6 4 #define LEDON false
CKMonroe 0:23505376c0c6 5 #define LEDOFF true
CKMonroe 0:23505376c0c6 6 #define NUMBUTS 2
CKMonroe 0:23505376c0c6 7 #define LBUT PTC12 // port addresses for buttons
CKMonroe 0:23505376c0c6 8 #define RBUT PTC3
CKMonroe 0:23505376c0c6 9 #define BLINKTIME 0.5 // in seconds //CKM: changed blinktime to 500 ms (0.5) from 0.3 (300 ms)
CKMonroe 0:23505376c0c6 10 #define BUTTONTIME 0.2
CKMonroe 0:23505376c0c6 11 #define LCDCHARLEN 25 //CKM: changed character length to 25 for character array
CKMonroe 0:23505376c0c6 12 #define NUMMESS 2
CKMonroe 0:23505376c0c6 13 #define LRED "RED"
CKMonroe 0:23505376c0c6 14 #define LGREEN "GREN"
CKMonroe 0:23505376c0c6 15 #define PRED "RED BUTTON PUSHED\r\n" //CKM: changed serial output #DEFINE to "RED BUTTON PUSHED"
CKMonroe 0:23505376c0c6 16 #define PGREEN "GREEN BUTTON PUSHED\r\n" //CKM: changed serial output #DEFINE to "GREEN BUTTON PUSHED"
CKMonroe 0:23505376c0c6 17 #define PROGNAME "blink_kl46z_buttton LCD v2\r\n"
CKMonroe 0:23505376c0c6 18
CKMonroe 0:23505376c0c6 19 // slightly more interesting blinky 140814 sc
CKMonroe 0:23505376c0c6 20 SLCD slcd; //define LCD display
CKMonroe 0:23505376c0c6 21
CKMonroe 0:23505376c0c6 22 // Timer to elliminate wait() function
CKMonroe 0:23505376c0c6 23 Timer LEDTimer; // for blinking LEDs
CKMonroe 0:23505376c0c6 24 Timer ButtonTimer; // for reading button states
CKMonroe 0:23505376c0c6 25
CKMonroe 0:23505376c0c6 26 bool ledState = LEDON;
CKMonroe 0:23505376c0c6 27
CKMonroe 0:23505376c0c6 28 DigitalIn buttons[NUMBUTS] = {RBUT, LBUT};
CKMonroe 0:23505376c0c6 29 DigitalOut LEDs[NUMBUTS] = {LED_GREEN, LED_RED};
CKMonroe 0:23505376c0c6 30 Serial pc(USBTX, USBRX);// set up USB as communicationis to Host PC via USB connectons
CKMonroe 0:23505376c0c6 31
CKMonroe 0:23505376c0c6 32 void allLEDsOff(){
CKMonroe 0:23505376c0c6 33 int i;
CKMonroe 0:23505376c0c6 34 for (i=0; i<NUMBUTS; i++){
CKMonroe 0:23505376c0c6 35 LEDs[i] = LEDOFF;
CKMonroe 0:23505376c0c6 36 }
CKMonroe 0:23505376c0c6 37 }
CKMonroe 0:23505376c0c6 38
CKMonroe 0:23505376c0c6 39 void LCDMess(char *lMess){
CKMonroe 0:23505376c0c6 40 slcd.Home();
CKMonroe 0:23505376c0c6 41 slcd.clear();
CKMonroe 0:23505376c0c6 42 slcd.printf(lMess);
CKMonroe 0:23505376c0c6 43 }
CKMonroe 0:23505376c0c6 44
CKMonroe 0:23505376c0c6 45 void initialize_global_vars(){
CKMonroe 0:23505376c0c6 46 pc.printf(PROGNAME);
CKMonroe 0:23505376c0c6 47 // set up DAQ timers
CKMonroe 0:23505376c0c6 48 ButtonTimer.start();
CKMonroe 0:23505376c0c6 49 ButtonTimer.reset();
CKMonroe 0:23505376c0c6 50 LEDTimer.start();
CKMonroe 0:23505376c0c6 51 LEDTimer.reset();
CKMonroe 0:23505376c0c6 52 allLEDsOff();
CKMonroe 0:23505376c0c6 53 }
CKMonroe 0:23505376c0c6 54 // --------------------------------
CKMonroe 0:23505376c0c6 55 int main() {
CKMonroe 0:23505376c0c6 56 int i;
CKMonroe 0:23505376c0c6 57 int currentLED = 0;
CKMonroe 0:23505376c0c6 58 char rMess[NUMMESS][LCDCHARLEN]={LGREEN, LRED}; // for LCD
CKMonroe 0:23505376c0c6 59 char pMess[NUMMESS][LCDCHARLEN]={PRED, PGREEN}; // for pc serial port
CKMonroe 0:23505376c0c6 60
CKMonroe 0:23505376c0c6 61 initialize_global_vars(); //keep things organized
CKMonroe 0:23505376c0c6 62 LEDs[currentLED] = LEDON;
CKMonroe 0:23505376c0c6 63 LCDMess(rMess[currentLED]);
CKMonroe 0:23505376c0c6 64 pc.printf(pMess[currentLED]);
CKMonroe 0:23505376c0c6 65 // End of setup
CKMonroe 0:23505376c0c6 66 while(true) {
CKMonroe 0:23505376c0c6 67 if (ButtonTimer > BUTTONTIME){
CKMonroe 0:23505376c0c6 68 for (i=0; i<NUMBUTS; i++){ // index will be 0 or 1
CKMonroe 0:23505376c0c6 69 if(!buttons[i]) {
CKMonroe 0:23505376c0c6 70 allLEDsOff();
CKMonroe 0:23505376c0c6 71 LCDMess(rMess[i]);
CKMonroe 0:23505376c0c6 72 pc.printf(pMess[i]);
CKMonroe 0:23505376c0c6 73 currentLED = i;
CKMonroe 0:23505376c0c6 74 } // if ! buttons
CKMonroe 0:23505376c0c6 75 }// for loop to look at buttons
CKMonroe 0:23505376c0c6 76 ButtonTimer.reset();
CKMonroe 0:23505376c0c6 77 }
CKMonroe 0:23505376c0c6 78 if(LEDTimer.read() > BLINKTIME){
CKMonroe 0:23505376c0c6 79 LEDTimer.reset();
CKMonroe 0:23505376c0c6 80 ledState = !ledState; // Flip the general state
CKMonroe 0:23505376c0c6 81 LEDs[currentLED] = ledState;
CKMonroe 0:23505376c0c6 82 }
CKMonroe 0:23505376c0c6 83 // Do other things here between times of reading and flashing
CKMonroe 0:23505376c0c6 84 }
CKMonroe 0:23505376c0c6 85 }