Counts button bounces in a button press-release cycle by using InterruptIn class library. Results are printed out through UART0 (via OpenSDA).
Dependencies: mbed
07_button_bounce
Counts button bounces in a button press-release cycle by using InterruptIn class library. Results are printed out through UART0 (via OpenSDA).
Hardware requirements:
- FRDM-KL25Z board
- Pushbutton connected between D3 and GND
Wiring scheme:
main.cpp@0:b4a0a2e03ca2, 2015-12-10 (annotated)
- Committer:
- icserny
- Date:
- Thu Dec 10 12:53:11 2015 +0000
- Revision:
- 0:b4a0a2e03ca2
Counts button bounces in a button press-release cycle by using InterruptIn class library. Results are printed out through UART0 (via OpenSDA).
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
icserny | 0:b4a0a2e03ca2 | 1 | /** 07_button_bounce |
icserny | 0:b4a0a2e03ca2 | 2 | * |
icserny | 0:b4a0a2e03ca2 | 3 | * Counts button bounces in a button press-release cycle |
icserny | 0:b4a0a2e03ca2 | 4 | * by using InterruptIn class library. Results are printed |
icserny | 0:b4a0a2e03ca2 | 5 | * out through UART0 (via OpenSDA). |
icserny | 0:b4a0a2e03ca2 | 6 | * |
icserny | 0:b4a0a2e03ca2 | 7 | * Hardware requirements: |
icserny | 0:b4a0a2e03ca2 | 8 | * - FRDM-KL25Z board |
icserny | 0:b4a0a2e03ca2 | 9 | * - Pusbutton (tied between D3 and GND) |
icserny | 0:b4a0a2e03ca2 | 10 | */ |
icserny | 0:b4a0a2e03ca2 | 11 | |
icserny | 0:b4a0a2e03ca2 | 12 | #include "mbed.h" |
icserny | 0:b4a0a2e03ca2 | 13 | DigitalIn mybutton(D3,PullUp); // Pushbutton input |
icserny | 0:b4a0a2e03ca2 | 14 | InterruptIn button(D3); // Pusbutton interrupt |
icserny | 0:b4a0a2e03ca2 | 15 | Serial pc(USBTX,USBRX); // UART0 via OpenSDA |
icserny | 0:b4a0a2e03ca2 | 16 | volatile uint16_t counts; // counter variable |
icserny | 0:b4a0a2e03ca2 | 17 | |
icserny | 0:b4a0a2e03ca2 | 18 | void button_pressed() { |
icserny | 0:b4a0a2e03ca2 | 19 | counts++; // counts button presses |
icserny | 0:b4a0a2e03ca2 | 20 | } |
icserny | 0:b4a0a2e03ca2 | 21 | |
icserny | 0:b4a0a2e03ca2 | 22 | int main() { |
icserny | 0:b4a0a2e03ca2 | 23 | button.mode(PullUp); // Enable internal pullup |
icserny | 0:b4a0a2e03ca2 | 24 | button.fall(&button_pressed); // Attach function to falling edge |
icserny | 0:b4a0a2e03ca2 | 25 | while (true) { |
icserny | 0:b4a0a2e03ca2 | 26 | counts = 0; // Clear counter |
icserny | 0:b4a0a2e03ca2 | 27 | pc.printf("Press & release switch... \r\n"); |
icserny | 0:b4a0a2e03ca2 | 28 | while (mybutton); // Wait for button press |
icserny | 0:b4a0a2e03ca2 | 29 | wait_ms(20); // Debounce delay |
icserny | 0:b4a0a2e03ca2 | 30 | while (!mybutton); // Wait for button release |
icserny | 0:b4a0a2e03ca2 | 31 | wait_ms(20); // Debounce delay |
icserny | 0:b4a0a2e03ca2 | 32 | pc.printf("Button pressed %d times\r\n",counts); |
icserny | 0:b4a0a2e03ca2 | 33 | } |
icserny | 0:b4a0a2e03ca2 | 34 | } |