Marco Zecchini
/
Example_interrupt_button_timer
Interrupt on user button press and timer exaple usage
main.cpp@2:2a43e5048e22, 2019-02-23 (annotated)
- 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?
User | Revision | Line number | New 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 | */ |