My first program to create a chase pattern with the on-board LEDs, but this uses the concept of a rotating phasor and pulse width modulation to dim the LEDs.

Dependencies:   mbed

Committer:
dminear
Date:
Tue Nov 30 15:05:44 2010 +0000
Revision:
0:cf65b0672fcd
Initial release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dminear 0:cf65b0672fcd 1 /* Chase pattern using a rotating phasor
dminear 0:cf65b0672fcd 2 * Dan Minear
dminear 0:cf65b0672fcd 3 * 2010-11-20
dminear 0:cf65b0672fcd 4 */
dminear 0:cf65b0672fcd 5
dminear 0:cf65b0672fcd 6 #include "mbed.h"
dminear 0:cf65b0672fcd 7 #include "math.h"
dminear 0:cf65b0672fcd 8
dminear 0:cf65b0672fcd 9 Serial pc(USBTX, USBRX); // tx, rx
dminear 0:cf65b0672fcd 10 PwmOut led1(LED1);
dminear 0:cf65b0672fcd 11 PwmOut led2(LED2);
dminear 0:cf65b0672fcd 12 PwmOut led3(LED3);
dminear 0:cf65b0672fcd 13 PwmOut led4(LED4);
dminear 0:cf65b0672fcd 14
dminear 0:cf65b0672fcd 15 float brightness = 0.0;
dminear 0:cf65b0672fcd 16 float factor = 0.01;
dminear 0:cf65b0672fcd 17
dminear 0:cf65b0672fcd 18 int main() {
dminear 0:cf65b0672fcd 19 pc.printf("\nPress 'u' or 'd'\n");
dminear 0:cf65b0672fcd 20 char c;
dminear 0:cf65b0672fcd 21 float angle = 0;
dminear 0:cf65b0672fcd 22 float factor = 0.01;
dminear 0:cf65b0672fcd 23
dminear 0:cf65b0672fcd 24 while(1) {
dminear 0:cf65b0672fcd 25 if (pc.readable()) {
dminear 0:cf65b0672fcd 26 c = pc.getc();
dminear 0:cf65b0672fcd 27 if (c == 'u') { factor += 0.01; }
dminear 0:cf65b0672fcd 28 if (c =='d') { factor -= 0.01; }
dminear 0:cf65b0672fcd 29 }
dminear 0:cf65b0672fcd 30 angle += factor;
dminear 0:cf65b0672fcd 31 if (angle > 2 * 3.14159 ) { angle = 0; }
dminear 0:cf65b0672fcd 32
dminear 0:cf65b0672fcd 33 led1 = (sin(angle) / 2)/2;
dminear 0:cf65b0672fcd 34 led2 = (sin(angle + 3.1416 / 4))/2;
dminear 0:cf65b0672fcd 35 led3 = (sin(angle + 3.1416 / 2))/2;
dminear 0:cf65b0672fcd 36 led4 = (sin(angle + 3.1416 * 3 / 4))/2;
dminear 0:cf65b0672fcd 37
dminear 0:cf65b0672fcd 38 wait(0.01);
dminear 0:cf65b0672fcd 39 }
dminear 0:cf65b0672fcd 40 }
dminear 0:cf65b0672fcd 41
dminear 0:cf65b0672fcd 42
dminear 0:cf65b0672fcd 43