KL46Z example for NMHU AAA clas

Dependencies:   SLCD mbed

Fork of blink_kl46z by Stanley Cohen

Committer:
scohennm
Date:
Mon Sep 08 19:42:06 2014 +0000
Revision:
1:d7c915e8a270
Parent:
0:e23fffd4b9a7
KL46Z using the loop for ramping LED PWM

Who changed what in which revision?

UserRevisionLine numberNew contents of line
scohennm 0:e23fffd4b9a7 1 #include "mbed.h"
scohennm 1:d7c915e8a270 2 #include "SLCD.h"
scohennm 1:d7c915e8a270 3
scohennm 0:e23fffd4b9a7 4 #define LEDON false
scohennm 0:e23fffd4b9a7 5 #define LEDOFF true
scohennm 1:d7c915e8a270 6 #define PWMDWELL 50 // milliseconds
scohennm 1:d7c915e8a270 7 #define DFDELTA 0.01
scohennm 1:d7c915e8a270 8 #define PWMTIME 1 // ms (kHxz
scohennm 1:d7c915e8a270 9 #define LCDLEN 10
scohennm 0:e23fffd4b9a7 10
scohennm 0:e23fffd4b9a7 11 // slightly more interesting blinky 140814 sc
scohennm 1:d7c915e8a270 12 // Change to use PWM
scohennm 0:e23fffd4b9a7 13
scohennm 1:d7c915e8a270 14 float dutyFactor = 0.0;
scohennm 1:d7c915e8a270 15 PwmOut greenColor(LED_GREEN);
scohennm 1:d7c915e8a270 16 PwmOut redColor(LED_RED);
scohennm 1:d7c915e8a270 17 SLCD slcd; //define LCD display
scohennm 1:d7c915e8a270 18
scohennm 1:d7c915e8a270 19 void LCDMess(char *lMess){
scohennm 1:d7c915e8a270 20 slcd.Home();
scohennm 1:d7c915e8a270 21 slcd.clear();
scohennm 1:d7c915e8a270 22 slcd.printf(lMess);
scohennm 1:d7c915e8a270 23 }
scohennm 0:e23fffd4b9a7 24
scohennm 0:e23fffd4b9a7 25 int main() {
scohennm 1:d7c915e8a270 26 char lcdData[LCDLEN];
scohennm 1:d7c915e8a270 27 greenColor.period_ms(PWMTIME); // set the frequency of the pulse train
scohennm 1:d7c915e8a270 28 redColor.period_ms(PWMTIME);
scohennm 1:d7c915e8a270 29 float workingDelta = DFDELTA;
scohennm 1:d7c915e8a270 30 int numSteps;
scohennm 1:d7c915e8a270 31 int i;
scohennm 1:d7c915e8a270 32
scohennm 1:d7c915e8a270 33 numSteps = (int)(1.0/DFDELTA);
scohennm 0:e23fffd4b9a7 34 while(true) {
scohennm 1:d7c915e8a270 35 for (i = 0; i < numSteps; i++){
scohennm 1:d7c915e8a270 36 redColor.write(dutyFactor);
scohennm 1:d7c915e8a270 37 greenColor.write(1.0 - dutyFactor);
scohennm 1:d7c915e8a270 38 dutyFactor += workingDelta;
scohennm 1:d7c915e8a270 39 // if(dutyFactor >= 1.0) workingDelta = -workingDelta;
scohennm 1:d7c915e8a270 40 // if(dutyFactor < DFDELTA) workingDelta = DFDELTA; // could be done another way
scohennm 1:d7c915e8a270 41 sprintf (lcdData,"%4.3f",dutyFactor);
scohennm 1:d7c915e8a270 42 LCDMess(lcdData);
scohennm 1:d7c915e8a270 43 wait_ms(PWMDWELL);
scohennm 1:d7c915e8a270 44 }
scohennm 1:d7c915e8a270 45 workingDelta = -workingDelta;
scohennm 0:e23fffd4b9a7 46 }
scohennm 0:e23fffd4b9a7 47 }