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.
main.cpp@0:cf65b0672fcd, 2010-11-30 (annotated)
- Committer:
- dminear
- Date:
- Tue Nov 30 15:05:44 2010 +0000
- Revision:
- 0:cf65b0672fcd
Initial release
Who changed what in which revision?
User | Revision | Line number | New 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 |