Aqui está um exemplo de uma classe em Arduino que lê um botão com debounce.
class Button {
private:
int buttonPin;
int debounceDelay;
int buttonState;
int lastButtonState;
long lastDebounceTime;
public:
Button(int pin, int delay) {
buttonPin = pin;
debounceDelay = delay;
pinMode(buttonPin, INPUT_PULLUP);
}
bool isPressed() {
int reading = digitalRead(buttonPin);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == LOW) {
return true;
}
}
}
lastButtonState = reading;
return false;
}
};
Este código cria uma classe chamada "Button" que pode ser usada para ler um botão conectado a um pino específico com debounce. A classe tem três variáveis de instância privadas: buttonPin, debounceDelay e buttonState, lastButtonState e lastDebounceTime. O construtor da classe é usado para inicializar essas variáveis, definindo o pino do botão e o tempo de debounce.
A função isPressed() é usada para ler o estado do botão. Ele verifica se houve alguma mudança no estado do botão e, se sim, armazena o tempo atual. Se o tempo desde a última mudança de estado for maior que o tempo de debounce, o estado atual do botão é armazenado e se o botão estiver pressionado, a função retorna true, caso contrário retorna false.
Aqui está um exemplo de como você poderia chamar a classe "Button" dentro de um programa Arduino:
#include <Button.h>
Button myButton(2, 50); // cria um objeto da classe Button no pino 2 e com delay de 50ms
void setup() {
// configuração inicial
}
void loop() {
if (myButton.isPressed()) {
// faça algo quando o botão for pressionado
}
}
Neste exemplo, estamos criando um objeto da classe "Button" chamado "myButton" no pino 2 e com delay de 50ms. Isso significa que o botão está conectado ao pino 2 e o tempo de debounce é de 50 milissegundos.
Na função loop() estamos verificando se o botão foi pressionado chamando a função isPressed(). Caso seja pressionado, as instruções dentro do if serão executadas.
Lembrando que é importante incluir o arquivo de cabeçalho da classe "#include
Equipe SuaDica