/*
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 = 600U;
unsigned long quatroS = 800U;
unsigned long cincoS = 1000U;
unsigned long trintaS = 3000U;
unsigned long duasH = 2000U;
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
}
//-----------------------------------------------------------
byte funcTime(byte flag, unsigned long waytTime, bool LED) {
if (millis() - contaTempo > waytTime) {
contaTempo = millis();
digitalWrite(ledPin, LED);
flag++;
//Serial.println(waytTime);
}
return flag;
}
//------------------------------------------------------------
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 = 6;
if (millis() - contaTempo > duasH) { // reinicia depois de 2horas
contaTempo = millis();
digitalWrite(ledPin, HIGH);
count1 = 0;
flag1 = 1;
}
}
if (flag1 == 1) {
flag1 = funcTime(flag1, cincoS, LOW); // Apaga apos 5s
}
if (flag1 == 2) {
flag1 = funcTime(flag1, doisS, HIGH); // Acende apos 2s
}
if (flag1 == 3) {
flag1 = funcTime(flag1, cincoS, LOW); // apaga apos 5s
}
if (flag1 == 4) {
flag1 = funcTime(flag1, quatroS, HIGH); // Acende apos 4s
}
if (flag1 == 5) {
count1++;
flag1 = 1;
}
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 = 6;
if (millis() - contaTempo > duasH) { // reinicia depois de 2horas
contaTempo = millis();
digitalWrite(ledPin, HIGH);
count2 = 0;
flag2 = 1;
}
}
if (flag2 == 1) {
Serial.println(flag2);
flag2 = funcTime(flag2, cincoS, LOW);
}
if (flag2 == 2) {
flag2 = funcTime(flag2, doisS, HIGH);
}
if (flag2 == 3) {
flag2 = funcTime(flag2, cincoS, LOW);
}
if (flag2 == 4) {
flag2 = funcTime(flag2, quatroS, HIGH);
}
if (flag2 == 5) {
//flag2 = 1;
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;
delay(trintaS);
Serial.println("Termina 30S");
digitalWrite(ledPin, LOW);
}
}
}