Debounce_Library

Dependents:   EJ3_Cafetera EJ1

Committer:
Tom_87
Date:
Tue Jun 12 17:11:31 2018 +0000
Revision:
3:df73a4aa4ff8
Parent:
0:16d62113f1d5
Programa para cotrolar titileo d un led con un pulsador

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Tom_87 0:16d62113f1d5 1 #include "antirrebote.h"
Tom_87 0:16d62113f1d5 2
Tom_87 3:df73a4aa4ff8 3 enum {PRESS=0, NO_PRESS=1, S_NO_PRESS, S_DETECT_PULS, S_DEB1, S_PRESS, S_RETENTION, S_DEB2, DEB_TIME = 20};
Tom_87 0:16d62113f1d5 4
Tom_87 3:df73a4aa4ff8 5 AntReb::~AntReb()
Tom_87 3:df73a4aa4ff8 6 {
Tom_87 3:df73a4aa4ff8 7 }
Tom_87 3:df73a4aa4ff8 8 AntReb::AntReb()
Tom_87 3:df73a4aa4ff8 9 {
Tom_87 3:df73a4aa4ff8 10 state = S_NO_PRESS;
Tom_87 3:df73a4aa4ff8 11 deb_time = DEB_TIME;
Tom_87 3:df73a4aa4ff8 12 hab=0;
Tom_87 3:df73a4aa4ff8 13 out=0;
Tom_87 3:df73a4aa4ff8 14 }
Tom_87 0:16d62113f1d5 15
Tom_87 0:16d62113f1d5 16 void AntReb::setPin(DigitalIn pin)
Tom_87 0:16d62113f1d5 17 {
Tom_87 3:df73a4aa4ff8 18 Pulsador = pin.read();
Tom_87 3:df73a4aa4ff8 19 }
Tom_87 3:df73a4aa4ff8 20 void AntReb::DebTime()
Tom_87 3:df73a4aa4ff8 21 {
Tom_87 3:df73a4aa4ff8 22 if(deb_time>0)
Tom_87 3:df73a4aa4ff8 23 deb_time--;
Tom_87 3:df73a4aa4ff8 24 else
Tom_87 3:df73a4aa4ff8 25 deb_time = DEB_TIME;
Tom_87 0:16d62113f1d5 26 }
Tom_87 0:16d62113f1d5 27
Tom_87 3:df73a4aa4ff8 28 pinEstado_t AntReb::antiRebote()
Tom_87 3:df73a4aa4ff8 29 {
Tom_87 0:16d62113f1d5 30
Tom_87 3:df73a4aa4ff8 31 switch(state) {
Tom_87 3:df73a4aa4ff8 32 case S_NO_PRESS:
Tom_87 0:16d62113f1d5 33 default:
Tom_87 3:df73a4aa4ff8 34 if (Pulsador == PRESS) {
Tom_87 3:df73a4aa4ff8 35 state = S_DETECT_PULS;
Tom_87 3:df73a4aa4ff8 36 }
Tom_87 3:df73a4aa4ff8 37 break;
Tom_87 3:df73a4aa4ff8 38
Tom_87 3:df73a4aa4ff8 39 case S_DETECT_PULS:
Tom_87 3:df73a4aa4ff8 40 if (Pulsador == PRESS && deb_time < 20){
Tom_87 3:df73a4aa4ff8 41 hab=1;
Tom_87 3:df73a4aa4ff8 42 state = S_DEB1;
Tom_87 3:df73a4aa4ff8 43 } else if(Pulsador == NO_PRESS)
Tom_87 3:df73a4aa4ff8 44 state = S_NO_PRESS;
Tom_87 0:16d62113f1d5 45 break;
Tom_87 3:df73a4aa4ff8 46
Tom_87 3:df73a4aa4ff8 47 case S_DEB1:
Tom_87 3:df73a4aa4ff8 48 if (deb_time == 0 && hab == 1) {
Tom_87 3:df73a4aa4ff8 49 state = S_PRESS;
Tom_87 3:df73a4aa4ff8 50 hab=0;
Tom_87 3:df73a4aa4ff8 51
Tom_87 0:16d62113f1d5 52 }
Tom_87 0:16d62113f1d5 53 break;
Tom_87 3:df73a4aa4ff8 54
Tom_87 3:df73a4aa4ff8 55 case S_PRESS:
Tom_87 3:df73a4aa4ff8 56 out = 1;
Tom_87 3:df73a4aa4ff8 57 state= S_RETENTION;
Tom_87 0:16d62113f1d5 58 break;
Tom_87 3:df73a4aa4ff8 59
Tom_87 3:df73a4aa4ff8 60 case S_RETENTION:
Tom_87 3:df73a4aa4ff8 61 out = 0;
Tom_87 3:df73a4aa4ff8 62 if (Pulsador == NO_PRESS)
Tom_87 3:df73a4aa4ff8 63 state = S_DEB2;
Tom_87 3:df73a4aa4ff8 64 break;
Tom_87 3:df73a4aa4ff8 65
Tom_87 3:df73a4aa4ff8 66 case S_DEB2:
Tom_87 3:df73a4aa4ff8 67 if (deb_time == 20)
Tom_87 3:df73a4aa4ff8 68 hab=1;
Tom_87 3:df73a4aa4ff8 69 else if (deb_time == 0 && hab == 1) {
Tom_87 3:df73a4aa4ff8 70 state = S_NO_PRESS;
Tom_87 3:df73a4aa4ff8 71 hab=0;
Tom_87 0:16d62113f1d5 72 }
Tom_87 0:16d62113f1d5 73 break;
Tom_87 0:16d62113f1d5 74 }
Tom_87 3:df73a4aa4ff8 75 return out;
Tom_87 0:16d62113f1d5 76 }
Tom_87 0:16d62113f1d5 77