Stanley Cohen
/
blink_kl46z_ploop
KL46Z example for NMHU AAA clas
Fork of blink_kl46z by
main.cpp@1:d7c915e8a270, 2014-09-08 (annotated)
- 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?
User | Revision | Line number | New 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 | } |