Debounce an input pin.
Debounce.cpp@0:d73a3ab5ce11, 2015-03-28 (annotated)
- Committer:
- michaelruck
- Date:
- Sat Mar 28 18:36:46 2015 +0000
- Revision:
- 0:d73a3ab5ce11
- Child:
- 1:b80f4620fbbd
Debounce an input pin.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
michaelruck | 0:d73a3ab5ce11 | 1 | /* michael@ruck.com märz 2015 v0.1*/ |
michaelruck | 0:d73a3ab5ce11 | 2 | #include "Debounce.h" |
michaelruck | 0:d73a3ab5ce11 | 3 | #include "mbed.h" |
michaelruck | 0:d73a3ab5ce11 | 4 | |
michaelruck | 0:d73a3ab5ce11 | 5 | |
michaelruck | 0:d73a3ab5ce11 | 6 | Debounce::Debounce(PinName pin, uint16_t delay, PinMode pull) : _pin(pin) |
michaelruck | 0:d73a3ab5ce11 | 7 | { |
michaelruck | 0:d73a3ab5ce11 | 8 | _delay=delay; |
michaelruck | 0:d73a3ab5ce11 | 9 | _timer.start(); |
michaelruck | 0:d73a3ab5ce11 | 10 | _pin.mode(pull); |
michaelruck | 0:d73a3ab5ce11 | 11 | } |
michaelruck | 0:d73a3ab5ce11 | 12 | |
michaelruck | 0:d73a3ab5ce11 | 13 | uint8_t Debounce::read() |
michaelruck | 0:d73a3ab5ce11 | 14 | { |
michaelruck | 0:d73a3ab5ce11 | 15 | static uint8_t encbutton_state=1, encbutton_state_old, encbutton; |
michaelruck | 0:d73a3ab5ce11 | 16 | static int systime, systime_old; |
michaelruck | 0:d73a3ab5ce11 | 17 | |
michaelruck | 0:d73a3ab5ce11 | 18 | encbutton_state = _pin.read(); |
michaelruck | 0:d73a3ab5ce11 | 19 | systime=_timer.read_ms(); |
michaelruck | 0:d73a3ab5ce11 | 20 | if((encbutton_state != encbutton_state_old) && (systime > systime_old+_delay)) { |
michaelruck | 0:d73a3ab5ce11 | 21 | encbutton=encbutton_state; |
michaelruck | 0:d73a3ab5ce11 | 22 | systime_old=systime; |
michaelruck | 0:d73a3ab5ce11 | 23 | printf("Button=%i\r\n", encbutton); |
michaelruck | 0:d73a3ab5ce11 | 24 | } |
michaelruck | 0:d73a3ab5ce11 | 25 | encbutton_state_old=encbutton_state; |
michaelruck | 0:d73a3ab5ce11 | 26 | return encbutton; |
michaelruck | 0:d73a3ab5ce11 | 27 | } |