led light on and off using light sensor
Fork of lightsense_kl46z_basic by
main.cpp
- Committer:
- scohennm
- Date:
- 2014-09-09
- Revision:
- 3:64e28ee5719b
- Parent:
- 2:c016448d89b2
- Child:
- 4:bd42ab18979b
File content as of revision 3:64e28ee5719b:
#include "mbed.h" #include "SLCD.h" // An example of C++ abuse 140904 sc //#define PRINTDEBUG #define PROGNAME "blink_kl46z_states v1\n\r" #define LEDON false #define LEDOFF true #define PWMDWELL 50 // milliseconds #define DFDELTA 0.01 #define PWMTIME 1 // ms (kHz #define LCDLEN 10 #define RMPUP true #define RMPDWN false #define NUMSTATES 2 #define NEWDUTYFACTOR 1 #define IDLESTATE 0 float dutyFactor = 0.0; PwmOut greenColor(LED_GREEN); PwmOut redColor(LED_RED); SLCD slcd; //define LCD display float rampDirection[NUMSTATES] = {-DFDELTA, DFDELTA}; Serial pc(USBTX, USBRX); void LCDMess(char *lMess){ slcd.Home(); slcd.clear(); slcd.printf(lMess); } int main() { char lcdData[LCDLEN]; int rampstate = RMPUP; int numSteps; float workingDelta; Timer LEDTimer; int timeToChangeDF = PWMDWELL; int i=0; // set up timer for next step of Duty Factor timing LEDTimer.start(); LEDTimer.reset(); pc.printf(PROGNAME); greenColor.period_ms(PWMTIME); // set the frequency of the pulse train redColor.period_ms(PWMTIME); // so there is no flickering workingDelta = rampDirection[rampstate]; numSteps = (int)(1.0/workingDelta); while(true) { if (LEDTimer.read_ms() > timeToChangeDF) { i++; redColor.write(dutyFactor); greenColor.write(1.0 - dutyFactor); dutyFactor += workingDelta; sprintf (lcdData,"%4.3f",dutyFactor); LCDMess(lcdData); #ifdef PRINTDEBUG pc.printf("i= %d dutyfactor = %5.4f workingDelta %5.4f \n\r", i, dutyFactor, workingDelta); #endif if (!(i % numSteps)){ i=0; LEDTimer.reset(); rampstate = !rampstate; workingDelta = rampDirection[rampstate]; } } } }