![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
SB_HW_3-2
Fork of lightsense_kl46z_PWM_simple by
main.cpp
- Committer:
- scohennm
- Date:
- 2014-09-05
- Revision:
- 2:c016448d89b2
- Parent:
- 1:51f8c2b04ce2
- Child:
- 3:64e28ee5719b
File content as of revision 2:c016448d89b2:
#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 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; int i=0; pc.printf(PROGNAME); greenColor.period_ms(PWMTIME); // set the frequency of the pulse train redColor.period_ms(PWMTIME); workingDelta = rampDirection[rampstate]; numSteps = (int)(1.0/workingDelta); while(true) { 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; rampstate = !rampstate; workingDelta = rampDirection[rampstate]; } wait_ms(PWMDWELL); } }