Debounce_Library

Dependents:   EJ3_Cafetera EJ1

antirrebote.cpp

Committer:
Tom_87
Date:
2018-05-23
Revision:
1:8db2c2a203d9
Parent:
0:16d62113f1d5

File content as of revision 1:8db2c2a203d9:

#include "antirrebote.h"                           //Librería creada para la función del antirrebote en un pulsador

    //Declaración de los nombres de estados
enum{PULS_NA, PULS_FLC1, PULS_A, PULS_FLC2};

AntReb::~AntReb(){  //Destrucción del objeto
    }
AntReb::AntReb(){   //Construcción de objeto
    e_PULS = PULS_NA;   //Valor inical de la variable encargada de memorizar el estado anterior
    }

void AntReb::setPin(DigitalIn pin){ //Función del objeto "AntReb" para setear el pin del pulsador
    P_PULS = pin.read();    //Se le asigna el valor leído en la entrada seleccionada a una variable "P_PULS" (Pin Pulsador)
}

pinEstado_t AntReb::antiRebote(){   //Máquina de estados del objeto "AntReb" para crear el antirrebote
    pinEstado_t StateOut;   //Variable creada que será el valor de salida de la librería
   switch(e_PULS){
        default:
        case PULS_NA:
           StateOut = APAGADO;
           //Se toma el "0" como valor del pulsador presionado porque se lo estipula a una conexión PULL-UP
            if(P_PULS == 0) {
                e_PULS = PULS_FLC1; //Cambio de estado
                }
            break;
        case PULS_FLC1:
            StateOut = APAGADO;
            if(P_PULS == 0) {
                e_PULS = PULS_A; //Cambio de estado
                StateOut = ENCENDIDO;
            }else if(P_PULS == 1) {
                e_PULS = PULS_NA; //Cambio de estado
            }
            break;
        case PULS_A:
            StateOut = APAGADO;
            if(P_PULS == 1) {
                e_PULS = PULS_FLC2; //Cambio de estado
            }
            break;
        case PULS_FLC2:
            StateOut = APAGADO;
            if(P_PULS == 0) {
                e_PULS = PULS_A; //Cambio de estado
            }else if(P_PULS == 1) {
                e_PULS = PULS_NA; //Cambio de estado
            
            }
            break;
    }
    return StateOut;    //La función devuelve el valor de salida
}