You can use multiple clicks event with one button. This library supports follow events, Single click, Double click, over 3 times click, Long press.

Dependents:   multiclick_test

Committer:
ohtsuka
Date:
Wed Jun 15 08:55:09 2016 +0000
Revision:
5:cb4d45f41e17
Parent:
4:8d6883cdc3c8
Child:
7:7d56935ba84d
fall??????????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ohtsuka 0:9c5c674dcaea 1 #include "mbed.h"
ohtsuka 0:9c5c674dcaea 2
ohtsuka 5:cb4d45f41e17 3 //#define DEBUG
ohtsuka 1:67d677ad73e7 4
ohtsuka 1:67d677ad73e7 5 #ifdef DEBUG
ohtsuka 1:67d677ad73e7 6 #define DBG_PRINT(...) printf(__VA_ARGS__)
ohtsuka 1:67d677ad73e7 7 #else
ohtsuka 1:67d677ad73e7 8 #define DBG_PRINT(...)
ohtsuka 1:67d677ad73e7 9 #endif
ohtsuka 1:67d677ad73e7 10
ohtsuka 0:9c5c674dcaea 11 class MultiClick
ohtsuka 0:9c5c674dcaea 12 {
ohtsuka 0:9c5c674dcaea 13 public:
ohtsuka 0:9c5c674dcaea 14 MultiClick(PinName pin);
ohtsuka 0:9c5c674dcaea 15 MultiClick(PinName pin, PinMode m);
ohtsuka 0:9c5c674dcaea 16 void attach_clicked(void (*function)(void));
ohtsuka 0:9c5c674dcaea 17 void attach_doubleclicked(void (*function)(void));
ohtsuka 0:9c5c674dcaea 18 void attach_n_clicked(void (*function)(int));
ohtsuka 3:c7f97bebf2f7 19 void attach_longpressed(void (*function)(void));
ohtsuka 0:9c5c674dcaea 20
ohtsuka 0:9c5c674dcaea 21 private:
ohtsuka 1:67d677ad73e7 22 void isr_pressed(void);
ohtsuka 5:cb4d45f41e17 23 void click_detect_timeout( void );
ohtsuka 5:cb4d45f41e17 24 void press_check_func( void );
ohtsuka 1:67d677ad73e7 25
ohtsuka 1:67d677ad73e7 26 Timer *_t;
ohtsuka 5:cb4d45f41e17 27 Ticker *_press_check;
ohtsuka 5:cb4d45f41e17 28 Timeout *_click_detect_timeout;
ohtsuka 0:9c5c674dcaea 29 InterruptIn *_iin;
ohtsuka 0:9c5c674dcaea 30 PinMode _mode;
ohtsuka 0:9c5c674dcaea 31
ohtsuka 5:cb4d45f41e17 32 int _shortpress_num;
ohtsuka 5:cb4d45f41e17 33 int _longpress_num;
ohtsuka 5:cb4d45f41e17 34
ohtsuka 5:cb4d45f41e17 35 int _press_check_interval_us;
ohtsuka 1:67d677ad73e7 36 int _click_interval_us;
ohtsuka 0:9c5c674dcaea 37 int _click_times;
ohtsuka 0:9c5c674dcaea 38
ohtsuka 5:cb4d45f41e17 39 int _pressed_count;
ohtsuka 3:c7f97bebf2f7 40 bool _longpressed;
ohtsuka 4:8d6883cdc3c8 41
ohtsuka 0:9c5c674dcaea 42 void (*_c_callback_clicked)(void);
ohtsuka 0:9c5c674dcaea 43 void (*_c_callback_doubleclicked)(void);
ohtsuka 0:9c5c674dcaea 44 void (*_c_callback_n_clicked)(int);
ohtsuka 3:c7f97bebf2f7 45 void (*_c_callback_longpressed)(void);
ohtsuka 0:9c5c674dcaea 46 };