Blinky example with two pushbuttons

Dependencies:   mbed

Fork of mbed_blinky_low_power by Silicon Labs

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?

UserRevisionLine numberNew 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 }