Interrupt on user button press and timer exaple usage

Dependencies:   mbed

Committer:
marcozecchini
Date:
Sat Feb 23 11:52:22 2019 +0000
Revision:
2:2a43e5048e22
Parent:
1:2e6e3436fc61
Final commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
marcozecchini 0:2ca55e55f55d 1 #include "mbed.h"
marcozecchini 0:2ca55e55f55d 2 /*
marcozecchini 0:2ca55e55f55d 3 * Button with interrupt example
marcozecchini 0:2ca55e55f55d 4 */
marcozecchini 2:2a43e5048e22 5
marcozecchini 0:2ca55e55f55d 6 InterruptIn mybutton(USER_BUTTON);
marcozecchini 0:2ca55e55f55d 7 DigitalOut myled(LED1);
marcozecchini 2:2a43e5048e22 8 Timer t;
marcozecchini 0:2ca55e55f55d 9
marcozecchini 1:2e6e3436fc61 10 float delay = 5.0; // 1 sec
marcozecchini 0:2ca55e55f55d 11
marcozecchini 0:2ca55e55f55d 12 void pressed()
marcozecchini 0:2ca55e55f55d 13 {
marcozecchini 2:2a43e5048e22 14 t.stop();
marcozecchini 2:2a43e5048e22 15 printf("You pressed after %f seconds\n", t.read());
marcozecchini 1:2e6e3436fc61 16 if (delay == 5.0)
marcozecchini 0:2ca55e55f55d 17 delay = 0.2; // 200 ms
marcozecchini 0:2ca55e55f55d 18 else
marcozecchini 1:2e6e3436fc61 19 delay = 5.0; // 1 sec
marcozecchini 2:2a43e5048e22 20 t.reset();
marcozecchini 2:2a43e5048e22 21 t.start();
marcozecchini 0:2ca55e55f55d 22 }
marcozecchini 0:2ca55e55f55d 23
marcozecchini 0:2ca55e55f55d 24 int main()
marcozecchini 2:2a43e5048e22 25 {
marcozecchini 2:2a43e5048e22 26 t.start();
marcozecchini 0:2ca55e55f55d 27 mybutton.fall(&pressed);
marcozecchini 0:2ca55e55f55d 28 while (1) {
marcozecchini 2:2a43e5048e22 29 myled = !myled; //toggle the led
marcozecchini 0:2ca55e55f55d 30 wait(delay);
marcozecchini 0:2ca55e55f55d 31 }
marcozecchini 0:2ca55e55f55d 32 }
marcozecchini 2:2a43e5048e22 33
marcozecchini 2:2a43e5048e22 34 /*
marcozecchini 2:2a43e5048e22 35 * Timeout version
marcozecchini 2:2a43e5048e22 36 */
marcozecchini 2:2a43e5048e22 37 /*
marcozecchini 2:2a43e5048e22 38
marcozecchini 2:2a43e5048e22 39 DigitalOut led1(LED1);
marcozecchini 2:2a43e5048e22 40 DigitalOut led2(LED2);
marcozecchini 2:2a43e5048e22 41 Timeout timeout;
marcozecchini 2:2a43e5048e22 42
marcozecchini 2:2a43e5048e22 43 void flip()
marcozecchini 2:2a43e5048e22 44 {
marcozecchini 2:2a43e5048e22 45 led2 = !led2;
marcozecchini 2:2a43e5048e22 46 }
marcozecchini 2:2a43e5048e22 47
marcozecchini 2:2a43e5048e22 48 int main()
marcozecchini 2:2a43e5048e22 49 {
marcozecchini 2:2a43e5048e22 50 led2 = 1;
marcozecchini 2:2a43e5048e22 51 timeout.attach(&flip, 2.0); // setup flipper to call flip after 2 seconds
marcozecchini 2:2a43e5048e22 52
marcozecchini 2:2a43e5048e22 53 // spin in a main loop. flipper will interrupt it to call flip
marcozecchini 2:2a43e5048e22 54 while(1) {
marcozecchini 2:2a43e5048e22 55 led1 = !led1;
marcozecchini 2:2a43e5048e22 56 wait(0.2);
marcozecchini 2:2a43e5048e22 57 }
marcozecchini 2:2a43e5048e22 58 }
marcozecchini 2:2a43e5048e22 59 */