#include "neotimer.h"
Neotimer Delay = Neotimer(1000);
Neotimer Delay_bot = Neotimer(1);
Neotimer Delay_bot1 = Neotimer(10);
int Portas[] = {28,29,30,31,32,40}; //portas com botões
int Bot_in[] = {0,0,0,0,0,0}; //resultado dos botões quando apertados
int Bot_at[] = {0,0,0,0,0,0}; //histórico do ultimo estado em qua o botão esteve
void setup(){
Serial.begin(115200);
for (int Np = 0; Np <= 5; Np++){
pinMode(Portas[Np], INPUT); //define todas as portas como entrada
}
}
void loop (){
for (int Nb = 0; Nb <= 5; Nb++){
Bot_in[Nb] = digitalRead(Portas[Nb]); //verifica todas as portas se algum botão foi apertado
}
/*if (Bot_in[0] == HIGH){
if (Delay.repeat()){
Delay.set(1);
Serial.print(".");
} else if (Bot_in[0] == HIGH && Bot_at[0] == LOW){
Serial.print(".");
Delay.set(1000);
}
Bot_at[0] = Bot_in[0];
} */
if (Delay_bot1.repeat()){
if (Bot_in[0] == HIGH && Bot_at[0] == LOW){ //verifica se o botão foi apertado
Serial.print(".");
Delay.repeatReset(); //reseta a contagem de tempo para quando o botão pressionado por muito tempo
Bot_at[0] = HIGH; //altera o valor de Bot_at[0] para que a função não se repita
} else if (Bot_in[0] == HIGH){ //verifica se o mesmo botão ainda esta presionado
if (Bot_at[1] == 1 && Delay_bot.repeat()){ //verifica se o botão ficou pressionado por tempo suficiente para repetir ao comandos
Serial.print("A"); //repete os comandos varias vezes
}
} else { //caso o botão não estiver mais pressionado
Bot_at[1] = 0; //limpa o valor de Bot_at[1] para que os comandos não se repitam até a próxima vez que o botão for pressionado por muito tempo
}
Bot_at[0] = Bot_in[0];
if (Bot_in[2] == HIGH && Bot_at[2] == LOW){ //verifica se o botão foi apertado
Serial.print(",");
Delay.repeatReset(); //reseta a contagem de tempo para quando o botão pressionado por muito tempo
Bot_at[2] = HIGH; //altera o valor de Bot_at[0] para que a função não se repita
} else if (Bot_in[2] == HIGH){ //verifica se o mesmo botão ainda esta presionado
if (Bot_at[3] == 1 && Delay_bot.repeat()){ //verifica se o botão ficou pressionado por tempo suficiente para repetir os comandos
Serial.print("B"); //repete os comandos varias vezes
}
} else { //caso o botão não estiver mais pressionado
Bot_at[3] = 0; //limpa o valor de Bot_at[1] para que os comandos não se repitam até a próxima vez que o botão for pressionado por muito tempo
}
Bot_at[2] = Bot_in[2];
}
if (Delay.repeat(1)){ //aguarda o tempo de 1 segundo após o botão ser pressionado
Bot_at[1] = 1; // guarda o valor 1 para que os comandos se repitam várias vezes até que o botão seja solto
Bot_at[3] = 1;
}
}