Blinky example with two pushbuttons
Fork of mbed_blinky_low_power by
main.cpp@3:82208e3277e8, 2015-05-18 (annotated)
- Committer:
- Laplace
- Date:
- Mon May 18 10:06:54 2015 +0000
- Revision:
- 3:82208e3277e8
- Parent:
- 0:b0927d62ef70
Created a dual pushbutton blinky example.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
stevew817 | 0:b0927d62ef70 | 1 | #include "mbed.h" |
Laplace | 3:82208e3277e8 | 2 | |
Laplace | 3:82208e3277e8 | 3 | DigitalOut myled0(LED0); |
Laplace | 3:82208e3277e8 | 4 | DigitalOut myled1(LED1); |
Laplace | 3:82208e3277e8 | 5 | InterruptIn pb0(SW0); |
Laplace | 3:82208e3277e8 | 6 | InterruptIn pb1(SW1); |
Laplace | 3:82208e3277e8 | 7 | |
stevew817 | 0:b0927d62ef70 | 8 | LowPowerTicker toggleTicker; |
stevew817 | 0:b0927d62ef70 | 9 | |
Laplace | 3:82208e3277e8 | 10 | float new_freq = 0.2f; |
Laplace | 3:82208e3277e8 | 11 | bool ledblink = true; |
Laplace | 3:82208e3277e8 | 12 | |
Laplace | 3:82208e3277e8 | 13 | |
Laplace | 3:82208e3277e8 | 14 | // Callback for toggler |
stevew817 | 0:b0927d62ef70 | 15 | void ledToggler(void) { |
Laplace | 3:82208e3277e8 | 16 | myled0 = !myled0 * ledblink; |
Laplace | 3:82208e3277e8 | 17 | myled1 = !myled1 * (1-ledblink); |
Laplace | 3:82208e3277e8 | 18 | } |
Laplace | 3:82208e3277e8 | 19 | |
Laplace | 3:82208e3277e8 | 20 | // Callback for pushbutton interrupt |
Laplace | 3:82208e3277e8 | 21 | void pb0_handler() { |
Laplace | 3:82208e3277e8 | 22 | ledblink = !ledblink; |
Laplace | 3:82208e3277e8 | 23 | } |
Laplace | 3:82208e3277e8 | 24 | |
Laplace | 3:82208e3277e8 | 25 | void pb1_handler() { |
Laplace | 3:82208e3277e8 | 26 | if (ledblink) { |
Laplace | 3:82208e3277e8 | 27 | new_freq = new_freq/2; |
Laplace | 3:82208e3277e8 | 28 | } |
Laplace | 3:82208e3277e8 | 29 | else { |
Laplace | 3:82208e3277e8 | 30 | new_freq = new_freq*2; |
Laplace | 3:82208e3277e8 | 31 | } |
stevew817 | 0:b0927d62ef70 | 32 | } |
stevew817 | 0:b0927d62ef70 | 33 | |
stevew817 | 0:b0927d62ef70 | 34 | int main() { |
Laplace | 3:82208e3277e8 | 35 | float freq = 0.0f; |
Laplace | 3:82208e3277e8 | 36 | //Enable the PB-handler |
Laplace | 3:82208e3277e8 | 37 | pb0.rise(NULL); |
Laplace | 3:82208e3277e8 | 38 | pb0.fall(&pb0_handler); |
Laplace | 3:82208e3277e8 | 39 | |
Laplace | 3:82208e3277e8 | 40 | pb1.rise(NULL); |
Laplace | 3:82208e3277e8 | 41 | pb1.fall(&pb1_handler); |
Laplace | 3:82208e3277e8 | 42 | |
stevew817 | 0:b0927d62ef70 | 43 | while(1) { |
Laplace | 3:82208e3277e8 | 44 | if (freq != new_freq) { |
Laplace | 3:82208e3277e8 | 45 | toggleTicker.detach(); |
Laplace | 3:82208e3277e8 | 46 | toggleTicker.attach(&ledToggler, new_freq); |
Laplace | 3:82208e3277e8 | 47 | freq = new_freq; |
Laplace | 3:82208e3277e8 | 48 | } |
stevew817 | 0:b0927d62ef70 | 49 | sleep(); |
stevew817 | 0:b0927d62ef70 | 50 | } |
stevew817 | 0:b0927d62ef70 | 51 | } |