Craig Evans
/
1620_App_Board_PWM
PWM
Fork of 1620_App_Board_Pots by
main.cpp@1:30d1c1087477, 2017-02-28 (annotated)
- Committer:
- eencae
- Date:
- Tue Feb 28 20:00:48 2017 +0000
- Revision:
- 1:30d1c1087477
- Parent:
- 0:74d086537907
Initial commit.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
eencae | 0:74d086537907 | 1 | /* ELEC1620 Application Board Example |
eencae | 0:74d086537907 | 2 | |
eencae | 1:30d1c1087477 | 3 | PWM |
eencae | 0:74d086537907 | 4 | |
eencae | 0:74d086537907 | 5 | (c) Dr Craig A. Evans, University of Leeds, Feb 2017 |
eencae | 0:74d086537907 | 6 | |
eencae | 0:74d086537907 | 7 | */ |
eencae | 0:74d086537907 | 8 | |
eencae | 0:74d086537907 | 9 | #include "mbed.h" |
eencae | 0:74d086537907 | 10 | |
eencae | 1:30d1c1087477 | 11 | PwmOut red_led(p24); |
eencae | 1:30d1c1087477 | 12 | PwmOut green_led(p23); |
eencae | 1:30d1c1087477 | 13 | PwmOut blue_led(p22); |
eencae | 0:74d086537907 | 14 | |
eencae | 1:30d1c1087477 | 15 | int main() |
eencae | 1:30d1c1087477 | 16 | { |
eencae | 1:30d1c1087477 | 17 | float frequency = 100.0f; // 100 Hz |
eencae | 1:30d1c1087477 | 18 | red_led.period(1.0f/frequency); // set the period of the waveform |
eencae | 1:30d1c1087477 | 19 | // all PWM channels share the same period so only need to set for one |
eencae | 1:30d1c1087477 | 20 | |
eencae | 0:74d086537907 | 21 | while(1) { |
eencae | 1:30d1c1087477 | 22 | |
eencae | 1:30d1c1087477 | 23 | // loop through 0 to 100% duty cycle in steps of 10% for each LED |
eencae | 1:30d1c1087477 | 24 | |
eencae | 1:30d1c1087477 | 25 | // each for loop has 10 iterations |
eencae | 1:30d1c1087477 | 26 | for (float dc1 = 0.0 ; dc1 <= 1.0 ; dc1 += 0.1) { |
eencae | 1:30d1c1087477 | 27 | // they are 'nested' and so we have |
eencae | 1:30d1c1087477 | 28 | for (float dc2 = 0.0 ; dc2 <= 1.0 ; dc2 += 0.1) { |
eencae | 1:30d1c1087477 | 29 | // 10 x 10 x 10 = 1000 iterations (colours) in total |
eencae | 1:30d1c1087477 | 30 | for (float dc3 = 0.0 ; dc3 <= 1.0 ; dc3 += 0.1) { |
eencae | 1:30d1c1087477 | 31 | |
eencae | 1:30d1c1087477 | 32 | red_led.write(dc1); // fade LED |
eencae | 1:30d1c1087477 | 33 | green_led.write(dc2); // fade LED |
eencae | 1:30d1c1087477 | 34 | blue_led.write(dc3); // fade LED |
eencae | 1:30d1c1087477 | 35 | |
eencae | 1:30d1c1087477 | 36 | //red_led = dc1; // equivalent syntax |
eencae | 1:30d1c1087477 | 37 | |
eencae | 1:30d1c1087477 | 38 | wait_ms(20); // small delay |
eencae | 1:30d1c1087477 | 39 | } |
eencae | 1:30d1c1087477 | 40 | |
eencae | 1:30d1c1087477 | 41 | } |
eencae | 1:30d1c1087477 | 42 | } |
eencae | 0:74d086537907 | 43 | } |
eencae | 0:74d086537907 | 44 | } |