SB_HW_3-2

Dependencies:   SLCD mbed

Fork of lightsense_kl46z_PWM_simple by Stanley Cohen

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); 
    }
}