HW_5.2

Dependencies:   SLCD mbed

Fork of lightsense_kl46z_basic by Stanley Cohen

Committer:
scohennm
Date:
Fri Sep 12 19:46:15 2014 +0000
Revision:
5:817aa144563d
Parent:
4:bd42ab18979b
Child:
6:710e18c552f5
Cleaned up timer redundancy

Who changed what in which revision?

UserRevisionLine numberNew contents of line
scohennm 0:e23fffd4b9a7 1 #include "mbed.h"
scohennm 1:51f8c2b04ce2 2 #include "SLCD.h"
scohennm 1:51f8c2b04ce2 3
scohennm 3:64e28ee5719b 4
scohennm 1:51f8c2b04ce2 5 // An example of C++ abuse 140904 sc
scohennm 1:51f8c2b04ce2 6 //#define PRINTDEBUG
scohennm 1:51f8c2b04ce2 7 #define PROGNAME "blink_kl46z_states v1\n\r"
scohennm 0:e23fffd4b9a7 8 #define LEDON false
scohennm 0:e23fffd4b9a7 9 #define LEDOFF true
scohennm 5:817aa144563d 10 #define LEDTMESS "TRUE"
scohennm 5:817aa144563d 11 #define LEDFMESS "FALS"
scohennm 5:817aa144563d 12 #define BLINKDWELL 400 // milliseconds
scohennm 1:51f8c2b04ce2 13 #define DFDELTA 0.01
scohennm 1:51f8c2b04ce2 14 #define PWMTIME 1 // ms (kHz
scohennm 1:51f8c2b04ce2 15 #define LCDLEN 10
scohennm 1:51f8c2b04ce2 16 #define NUMSTATES 2
scohennm 5:817aa144563d 17 #define NEWBLINK 1
scohennm 3:64e28ee5719b 18 #define IDLESTATE 0
scohennm 0:e23fffd4b9a7 19
scohennm 5:817aa144563d 20 char logicalString [NUMSTATES][LCDLEN] = {LEDFMESS, LEDTMESS};
scohennm 4:bd42ab18979b 21 SLCD slcd; //define LCD display globally define
scohennm 1:51f8c2b04ce2 22 Serial pc(USBTX, USBRX);
scohennm 1:51f8c2b04ce2 23
scohennm 1:51f8c2b04ce2 24 void LCDMess(char *lMess){
scohennm 1:51f8c2b04ce2 25 slcd.Home();
scohennm 1:51f8c2b04ce2 26 slcd.clear();
scohennm 1:51f8c2b04ce2 27 slcd.printf(lMess);
scohennm 1:51f8c2b04ce2 28 }
scohennm 0:e23fffd4b9a7 29
scohennm 0:e23fffd4b9a7 30 int main() {
scohennm 5:817aa144563d 31 DigitalOut greenColor(LED_GREEN);
scohennm 5:817aa144563d 32 DigitalOut redColor(LED_RED);
scohennm 1:51f8c2b04ce2 33 char lcdData[LCDLEN];
scohennm 4:bd42ab18979b 34 Timer LEDTimer; // time till next PWM values is to change.
scohennm 5:817aa144563d 35 int PGMState = IDLESTATE; // work till timer transitions
scohennm 5:817aa144563d 36 int ledState = LEDON;
scohennm 5:817aa144563d 37
scohennm 4:bd42ab18979b 38
scohennm 5:817aa144563d 39 int timeToChangeDF = BLINKDWELL;
scohennm 3:64e28ee5719b 40 // set up timer for next step of Duty Factor timing
scohennm 3:64e28ee5719b 41 LEDTimer.start();
scohennm 3:64e28ee5719b 42 LEDTimer.reset();
scohennm 1:51f8c2b04ce2 43 pc.printf(PROGNAME);
scohennm 1:51f8c2b04ce2 44
scohennm 3:64e28ee5719b 45
scohennm 4:bd42ab18979b 46
scohennm 0:e23fffd4b9a7 47 while(true) {
scohennm 5:817aa144563d 48 switch (PGMState){
scohennm 4:bd42ab18979b 49 case IDLESTATE: {
scohennm 4:bd42ab18979b 50 if (LEDTimer.read_ms() > timeToChangeDF){ // check for timer time out transtion
scohennm 5:817aa144563d 51 PGMState = NEWBLINK;
scohennm 4:bd42ab18979b 52 }
scohennm 4:bd42ab18979b 53 break;
scohennm 4:bd42ab18979b 54 }
scohennm 5:817aa144563d 55 case NEWBLINK: {
scohennm 5:817aa144563d 56 ledState = !ledState;
scohennm 5:817aa144563d 57 redColor = ledState;
scohennm 5:817aa144563d 58 greenColor = !ledState;
scohennm 5:817aa144563d 59 sprintf(lcdData,logicalString[ledState]);
scohennm 5:817aa144563d 60 LCDMess(lcdData);
scohennm 4:bd42ab18979b 61 LEDTimer.reset(); // reset the timer
scohennm 5:817aa144563d 62 PGMState = IDLESTATE; // go idle state
scohennm 4:bd42ab18979b 63 break;
scohennm 4:bd42ab18979b 64 }
scohennm 4:bd42ab18979b 65 } // end state machine
scohennm 4:bd42ab18979b 66
scohennm 1:51f8c2b04ce2 67 #ifdef PRINTDEBUG
scohennm 1:51f8c2b04ce2 68 pc.printf("i= %d dutyfactor = %5.4f workingDelta %5.4f \n\r", i, dutyFactor, workingDelta);
scohennm 1:51f8c2b04ce2 69 #endif
scohennm 4:bd42ab18979b 70 }// emd while
scohennm 4:bd42ab18979b 71 }