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:

/media/uploads/icserny/led_button.png

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?

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