/*
BOTAO 01 - A qualquer tempo, quando pressionado, reseta tudo
e inicia um looping da seguinte sequencia no LED:
"2 pulsos x 3 a cada duas horas"
repete 3X (acende por 5s, apaga por 2s, acende por 5s, apaga por 4s)
aguarda 2 horas e repete isso...
BOTAO 02 - A qualquer tempo, quando pressionado, reseta
tudo e inicia um looping da seguinte sequencia no LED:
repete 3X (acende por 5s, apaga por 2s, acende por 5s,
apaga por 2s, acende por 5s e apaga por 4s)
aguarda 2 horas e repete isso...
BOTAO 03 - A qualquer tempo, quando pressionado,
reseta tudo, acende o LED por 20s e para.
*/
/*
Ao apertar o botao 01, tem que ligar o led 2 vezes em
uma sequencia de 3 x a cada duas horas...
até que outro botão seja acionado...
botao 01 (pulsado On)
repete 3X isso:
Led On 5s
led Off 2s
led On 5s
led Off 4S
Aguarda duas horas (7200000ms) e repete 3x essa sequencia...Looping infinito, até que algum outro botão seja pulsado (pelo menos é issa solução que eu preciso entregar)
*/
const int button1Pin = 2; // Pino do Botão 1
const int button2Pin = 3; // Pino do Botão 2
const int button3Pin = 4; // Pino do Botão 3
const int ledPin = 13; // Pino do LED
bool isButton1Pressed = false;
bool isButton2Pressed = false;
bool isButton3Pressed = false;
unsigned long contaTempo = 0;
unsigned long doisS = 2000U;
unsigned long quatroS = 4000U;
unsigned long cincoS = 5000U;
unsigned long trintaS = 30000U;
unsigned long duasH = 72000U;
byte flag1 = 0;
byte flag2 = 0;
int count1 = 0;
int count2 = 0;
//------------------------------------------------------------
void setup() {
Serial.begin(115200);
pinMode(button1Pin, INPUT_PULLUP); // Configura o botão como entrada com pull-up
pinMode(button2Pin, INPUT_PULLUP);
pinMode(button3Pin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT); // Configura o LED como saída
}
//------------------------------------------------------------
void loop() {
if (digitalRead(button1Pin) == LOW) {
delay(50); // Debounce
if (digitalRead(button1Pin) == LOW) {
contaTempo = millis();
digitalWrite(ledPin, HIGH);
flag1 = 1;
flag2 = 0;
count2 = 0;
Serial.println("Entrando bot1");
}
}
if (count1 >= 2) {
digitalWrite(ledPin, LOW);
flag1 = 5;
if (millis() - contaTempo > duasH) { // reinicia depois de 2horas
contaTempo = millis();
digitalWrite(ledPin, HIGH);
count1 = 0;
flag1 = 1;
}
}
if (flag1 == 1) {
if (millis() - contaTempo > cincoS) { // Fica acesso 5s e apaga
contaTempo = millis();
digitalWrite(ledPin, LOW);
flag1 = 2;
}
}
if (flag1 == 2) {
if (millis() - contaTempo > doisS) { // Fica apagado 2s e acende
digitalWrite(ledPin, HIGH);
contaTempo = millis();
flag1 = 3;
}
}
if (flag1 == 3) {
if (millis() - contaTempo > cincoS) { // Fica acesso 5s e apaga
digitalWrite(ledPin, LOW);
contaTempo = millis();
flag1 = 4;
}
}
if (flag1 == 4) {
if (millis() - contaTempo > quatroS) { // Fica apagado 4s e acende e retorna 2x
contaTempo = millis();
digitalWrite(ledPin, HIGH);
flag1 = 1;
Serial.print("count1 "); Serial.println(count1);
count1++;
}
}
if (digitalRead(button2Pin) == LOW) {
delay(50); // Debounce
if (digitalRead(button2Pin) == LOW) {
Serial.println("Entrando bot2");
contaTempo = millis();
digitalWrite(ledPin, HIGH);
flag2 = 1;
flag1 = 0;
count1 = 0;
}
}
if (count2 >= 3) {
digitalWrite(ledPin, LOW);
flag2 = 5;
if (millis() - contaTempo > duasH) { // reinicia depois de 2horas
contaTempo = millis();
digitalWrite(ledPin, HIGH);
count2 = 0;
flag2 = 1;
}
}
if (flag2 == 1) {
if (millis() - contaTempo > cincoS) { // Fica acesso 5s e apaga
contaTempo = millis();
digitalWrite(ledPin, LOW);
flag2 = 2;
}
}
if (flag2 == 2) {
if (millis() - contaTempo > doisS) { // Fica apagado 2s e acende
digitalWrite(ledPin, HIGH);
contaTempo = millis();
flag2 = 3;
}
}
if (flag2 == 3) {
if (millis() - contaTempo > cincoS) { // Fica acesso 5s e apaga
digitalWrite(ledPin, LOW);
contaTempo = millis();
flag2 = 4;
}
} if (flag2 == 4) {
if (millis() - contaTempo > quatroS) { // Fica apagado 4s e acende e retorna 2x
contaTempo = millis();
digitalWrite(ledPin, HIGH);
flag2 = 1;
Serial.print("count2 "); Serial.println(count2);
count2++;
}
}
if (digitalRead(button3Pin) == LOW) {
delay(30); // Debounce
if (digitalRead(button3Pin) == LOW) {
Serial.println("Entrando bot3");
digitalWrite(ledPin, HIGH);
flag1 = 0;
flag2 = 0;
count1 = 0;
count2 = 0;
Serial.println("trintaS");
delay(trintaS);
digitalWrite(ledPin, LOW);
}
}
}