/******************************************************************************************
Nome: Wictória Silva Passos
Disciplina: Microcontroladores e Microprocessados
Professor: Prof. Paulo
Instituição: FATEC Santo André - Mecatronica Industrial
Data: 29/09/2023
Descrição do programa: Programa de teste do efeito bounce no botão e como resolve-lo,
utilizando a linguagem C++ e o ESP32.
Versão: 1.0 - 28/09/2023
******************************************************************************************/
//Definição dos apelidos no programa
#define btn_with_bounce 32
#define led_1 19
//Inicialização das variáveis globais utilizadas no programa
int estado_btn_ant_bounce, estado_btn_atual_bounce;
unsigned long int tempo_bouncing = 100; //valor do bouncing em milisegundos
unsigned long int tempo_ultimo_bouncing; //tipo de variável que aumenta a precisão da base de cálculo
//Execução das configurações do hardware
void setup() {
Serial.begin(115200);
pinMode(btn_with_bounce, INPUT);
pinMode(led_1, OUTPUT);
delay(10); //tempo para conclusão das operções de inicialização
estado_btn_ant_bounce = digitalRead(btn_with_bounce); //leitura do estado passado do botão
}
void loop() {
estado_btn_atual_bounce = digitalRead(btn_with_bounce); //leitura do estado atual do botão
if(estado_btn_atual_bounce != estado_btn_ant_bounce){ //Teste para detectar o bounce
if(millis() - tempo_ultimo_bouncing >= tempo_bouncing){ // Se verdadeiro, o botão foi pressionado e não foi uma variação
tempo_ultimo_bouncing = millis();
estado_btn_ant_bounce = estado_btn_atual_bounce;
Serial.println("O BOTÃO FOI PRESSIONADO!");
digitalWrite(led_1,!digitalRead(led_1));
}
}
estado_btn_ant_bounce = estado_btn_atual_bounce; //Atualiza a variável para o valor obtido
}