#include <RTClib.h>
#include <LiquidCrystal.h>
#include <dht.h>
dht DHT;
// Define as conexões e cria o objeto para acesso
const int rs = 8, en = 9, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
const int backLight = 10;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
int cont = 0; // Contador para os diferentes modos de operação
int hora = 0; // Armazena a hora atual
int minu = 0; // Armazena o minuto atual
int set = 16; // Setpoint da temperatura
int ho = 0; // Hora de início
int mi = 0; // Minuto de início
int hot = 2; // Hora de término
int mit = 0; // Minuto de término
int ls1 = 0; // Estado do sensor LS1
int ls2 = 0; // Estado do sensor LS2
int ls3 = 0; // Estado do sensor LS3
int ls4 = 0; // Estado do sensor LS4
int al1 = 1; // Estado do alarme 1
int al2 = 1; // Estado do alarme 2
int al3 = 1; // Estado do alarme 3
int al4 = 1; // Estado do alarme 4
int al1aux = 1; // Estado do alarme 1
int al2aux = 1; // Estado do alarme 2
int al3aux = 1; // Estado do alarme 3
int al4aux = 1;
int sala = 0; // Indica a sala onde o alarme foi acionado
int alarme = 0; // Estado do alarme geral
int alativa = 0;
int ala = 0;
int del = 0;
int del2 = 10;
int tempoluz = 2000; // Tempo de luz em milissegundos
int tempol = 5; // Tempo de luz em segundos
int ultimotemp = 0; // Armazena o último tempo
int debounceDelay = 70; // Tempo de debounce para os botões
bool flag = 0; // Flag para controle do estado do sistema
int senha[4] = {0,0,0,0};
int senhaaux[4] = {0,0,0,0};
unsigned long time_16 = 0; // Tempo de ativação do sensor 16
unsigned long time_17 = 0; // Tempo de ativação do sensor 17
unsigned long time_18 = 0; // Tempo de ativação do sensor 18
unsigned long time_19 = 0; // Tempo de ativação do sensor 19
int buttonState;
RTC_DS1307 rtc;
#define DHT22_PIN 2
char daysOfTheWeek[7][12] = {"Dom ", "Seg ", "Ter ", "Qua ", "Qui ", "Sex ", "Sab "};
void setup () {
pinMode(0, INPUT);
pinMode(10, INPUT);
pinMode(11, INPUT);
pinMode(1, INPUT);
pinMode(3, OUTPUT);
pinMode(23, INPUT);
pinMode(25, INPUT);
pinMode(27, INPUT);
pinMode(29, INPUT);
pinMode(A0, INPUT);
pinMode(A1, INPUT);
pinMode(A2, INPUT);
pinMode(A3, INPUT);
pinMode(A4, INPUT);
pinMode(16, OUTPUT);
pinMode(17, OUTPUT);
pinMode(18, OUTPUT);
pinMode(19, OUTPUT);
Serial.begin(115200);
lcd.begin(16, 2);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
}
void loop () {
DateTime now = rtc.now();
DHT.read22(2);
/* os cases são todas as telas que utilizo os botões esquerdo e direito servem para navegação
entre elas up e down para incrementar e decrementar, quando a caso é de ativar e desativar
use o botão up*/
switch (cont){
case 0:{
lcd.setCursor(0, 0);
lcd.print(now.day() < 10 ? "0": "");
lcd.print(now.day(), DEC);
lcd.print('/');
lcd.print(now.month() < 10 ? "0": "");
lcd.print(now.month(), DEC);
lcd.print('/');
lcd.print(now.year(), DEC);
lcd.setCursor(0, 1);
lcd.print(now.hour() < 10 ? "0" : "");
lcd.print(now.hour(), DEC);
lcd.print(':');
lcd.print(now.minute() < 10 ? "0" : "");
lcd.print(now.minute(), DEC);
lcd.print(':');
lcd.print(now.second() < 10 ? "0" : "");
lcd.print(now.second(), DEC);
lcd.setCursor(11, 0);
lcd.print(DHT.temperature, 1);
lcd.setCursor(11,1);
lcd.print(set < 10 ? "0" : "");
lcd.print(set);
lcd.setCursor(14,1);
lcd.print("C");
break;
}
case 1:{
if (digitalRead(A0) == 1) {
set = (set + 1);
delay(100);
}
if (digitalRead(A3) == 1) {
set = (set - 1);
delay(100);
if(set < 16) {
set = 16;
}
}
lcd.setCursor(0, 0);
lcd.print("Set point:");
lcd.setCursor(7, 1);
lcd.print(set < 10 ? "0" : "");
lcd.print(set);
lcd.setCursor(10,1);
lcd.print("C");
break;
}
case 2:{
if(digitalRead(A0) == 1){
ho = (ho + 1) % 24;
delay(100);
}
if(digitalRead(A3) == 1){
ho = (ho - 1) % 24;
delay(100);
if(ho < 0){
ho = 23;
}
}
lcd.setCursor(0,0);
lcd.print("Horario de Inici");
lcd.setCursor(0,1);
lcd.print(">");
lcd.print(ho < 10 ? "0" : "");
lcd.print(ho);
lcd.print(':');
lcd.print(mi < 10 ? "0" : "");
lcd.print(mi);
break;
}
case 3:{
if(digitalRead(A0) == 1){
mi = (mi + 1) % 60;
delay(100);
}
if(digitalRead(A3) == 1){
mi = (mi - 1) % 60;
delay(100);
if(mi < 0){
mi = 59;
}
}
lcd.setCursor(0,0);
lcd.print("Horario de Inici");
lcd.setCursor(1,1);
lcd.print(ho < 10 ? "0" : "");
lcd.print(ho);
lcd.print(':');
lcd.print(mi < 10 ? "0" : "");
lcd.print(mi);
lcd.print("<");
break;
}
case 4:{
if(digitalRead(A0) == 1)
{
hot = (hot + 1) % 24;
delay(100);
}
if(digitalRead(A3) == 1){
hot = (hot - 1) % 24;
delay(100);
if(hot < 0){
hot = 23;
}
}
lcd.setCursor(0,0);
lcd.print("Horario de Termi");
lcd.setCursor(0,1);
lcd.print(">");
lcd.print(hot < 10 ? "0" : "");
lcd.print(hot);
lcd.print(':');
lcd.print(mit < 10 ? "0" : "");
lcd.print(mit);
break;
}
case 5:{
if(digitalRead(A0) == 1)
{
mit = (mit + 1) % 60;
delay(100);
}
if(digitalRead(A3) == 1){
mit = (mit - 1) % 60;
delay(100);
if(mit < 0){
mit = 59;
}
}
lcd.setCursor(0,0);
lcd.print("Horario de Termi");
lcd.setCursor(1,1);
lcd.print(hot < 10 ? "0" : ""); // Adiciona zero à esquerda se necessário
lcd.print(hot);
lcd.print(':');
lcd.print(mit < 10 ? "0" : "");
lcd.print(mit);
lcd.print("<");
break;
}
case 6:{
lcd.setCursor(0,0);
lcd.print("LS1:");
lcd.print(ls1);
lcd.setCursor(0,1);
lcd.print("LS2:");
lcd.print(ls2);
if(digitalRead(A0) == 1)
{
ls1++;
if(ls1 > 1){
ls1 = 0;}
lcd.setCursor(4,0);
delay(100);
}
if(digitalRead(A3) == 1){
ls2++;
if(ls2 > 1){
ls2 = 0;}
lcd.setCursor(4,1);
delay(100);
}
break;
}
case 7:{
lcd.setCursor(0,0);
lcd.print("LS3:");
lcd.print(ls3);
lcd.setCursor(0,1);
lcd.print("LS4:");
lcd.print(ls4);
if(digitalRead(A0) == 1)
{
ls3++;
if(ls3 > 1){
ls3 = 0;}
delay(100);
}
if(digitalRead(A3) == 1){
ls4++;
if(ls4 > 1){
ls4 = 0;}
delay(100);
}
break;
}
case 8:{
lcd.setCursor(0,0);
lcd.print("tempo de luz:");
lcd.print(tempol < 10 ? "0" : ""); // Adiciona zero à esquerda se necessário
lcd.print(tempol);
if(digitalRead(A0) == 1)
{
tempol++;
delay(100);
}
if(digitalRead(A3) == 1)
{
tempol--;
delay(100);
if(tempol < 5){
tempol = 5;
}
}
break;
}
case 9:{
//dica para o alberto do futuro
//adiciona um novo if que testa o estado do alarme desativo e ativo para fazer a troca <3
lcd.setCursor(0,0);
lcd.print("alarme ativado");
lcd.setCursor(0,1);
lcd.print(alarme);
if(digitalRead(A0) == 1)
{
alarme++;
if(alarme > 1){
alarme = 0;
}
delay(100);
if(alarme == 1){
lcd.clear();
cont = 30;
del = 30;
del2 = 33;
}
if(alarme == 0){
lcd.clear();
cont = 30;
del = 30;
del2 = 33;
}
}
break;
}
case 10:{
lcd.setCursor(0,0);
lcd.print("Mudar senha?");
if(digitalRead(A4) == 1)
{
del = 11;
del2 = 14;
cont = 11;
delay(1000);
}
break;
}
case 11:{
lcd.setCursor(0,0);
lcd.print("INSIRA SEN:");
lcd.print(senha[0]);
lcd.print(senha[1]);
lcd.print(senha[2]);
lcd.print(senha[3]);
lcd.setCursor(11,1);
lcd.print("^");
if(digitalRead(A0) == 1)
{
senha[0]++;
if(senha[0] > 9){
senha[0] = 0;}
delay(100);
}
if(digitalRead(A3) == 1){
senha[0]--;
if(senha[0] < 0){
senha[0] = 9;}
delay(100);
}
break;
}
case 12:{
lcd.setCursor(0,0);
lcd.print("INSIRA SEN:");
lcd.print(senha[0]);
lcd.print(senha[1]);
lcd.print(senha[2]);
lcd.print(senha[3]);
lcd.setCursor(12,1);
lcd.print("^");
if(digitalRead(A0) == 1)
{
senha[1]++;
if(senha[1] > 9){
senha[1] = 0;}
delay(100);
}
if(digitalRead(A3) == 1){
senha[1]--;
if(senha[1] < 0){
senha[1] = 9;}
delay(100);
}
break;
}
case 13:{
lcd.setCursor(0,0);
lcd.print("INSIRA SEN:");
lcd.print(senha[0]);
lcd.print(senha[1]);
lcd.print(senha[2]);
lcd.print(senha[3]);
lcd.setCursor(13,1);
lcd.print("^");
if(digitalRead(A0) == 1)
{
senha[2]++;
if(senha[2] > 9){
senha[2] = 0;}
delay(100);
}
if(digitalRead(A3) == 1){
senha[2]--;
if(senha[2] < 0){
senha[2] = 9;}
delay(100);
}
break;
}
case 14:{
lcd.setCursor(0,0);
lcd.print("INSIRA SEN:");
lcd.print(senha[0]);
lcd.print(senha[1]);
lcd.print(senha[2]);
lcd.print(senha[3]);
lcd.setCursor(14,1);
lcd.print("^");
if(digitalRead(A0) == 1)
{
senha[3]++;
if(senha[3] > 9){
senha[3] = 0;}
delay(100);
}
if(digitalRead(A3) == 1){
senha[3]--;
if(senha[3] < 0){
senha[3] = 9;}
delay(100);
}
break;
}
case 30:{
lcd.setCursor(0,0);
lcd.print("INSIRA SEN:");
lcd.print(senha[0]);
lcd.print(senha[1]);
lcd.print(senha[2]);
lcd.print(senha[3]);
lcd.setCursor(11,1);
lcd.print("^");
if(digitalRead(A0) == 1)
{
senha[0]++;
if(senha[0] > 9){
senha[0] = 0;}
delay(100);
}
if(digitalRead(A3) == 1){
senha[0]--;
if(senha[0] < 0){
senha[0] = 9;}
delay(100);
}
break;
}
case 31:{
lcd.setCursor(0,0);
lcd.print("INSIRA SEN:");
lcd.print(senha[0]);
lcd.print(senha[1]);
lcd.print(senha[2]);
lcd.print(senha[3]);
lcd.setCursor(12,1);
lcd.print("^");
if(digitalRead(A0) == 1)
{
senha[1]++;
if(senha[1] > 9){
senha[1] = 0;}
delay(100);
}
if(digitalRead(A3) == 1){
senha[1]--;
if(senha[1] < 0){
senha[1] = 9;}
delay(100);
}
break;
}
case 32:{
lcd.setCursor(0,0);
lcd.print("INSIRA SEN:");
lcd.print(senha[0]);
lcd.print(senha[1]);
lcd.print(senha[2]);
lcd.print(senha[3]);
lcd.setCursor(13,1);
lcd.print("^");
if(digitalRead(A0) == 1)
{
senha[2]++;
if(senha[2] > 9){
senha[2] = 0;}
delay(100);
}
if(digitalRead(A3) == 1){
senha[2]--;
if(senha[2] < 0){
senha[2] = 9;}
delay(100);
}
break;
}
case 33:{
lcd.setCursor(0,0);
lcd.print("INSIRA SEN:");
lcd.print(senha[0]);
lcd.print(senha[1]);
lcd.print(senha[2]);
lcd.print(senha[3]);
lcd.setCursor(14,1);
lcd.print("^");
if(digitalRead(A0) == 1)
{
senha[3]++;
if(senha[3] > 9){
senha[3] = 0;}
delay(100);
}
if(digitalRead(A3) == 1){
senha[3]--;
if(senha[3] < 0){
senha[3] = 9;}
delay(100);
}
break;
}
case 34:{
lcd.setCursor(0,0);
lcd.print("AL1:");
lcd.print(al1);
lcd.setCursor(0,1);
lcd.print("AL2:");
lcd.print(al2);
if(digitalRead(A0) == 1)
{
al1++;
if(al1 > 1){
al1 = 0;}
delay(100);
}
if(digitalRead(A3) == 1){
al2++;
if(al2 > 1){
al2 = 0;}
delay(100);
}
break;
}
case 35:{
lcd.setCursor(0,0);
lcd.print("AL3:");
lcd.print(al3);
lcd.setCursor(0,1);
lcd.print("AL4:");
lcd.print(al4);
if(digitalRead(A0) == 1)
{
al3++;
if(al3 > 1){
al3 = 0;}
delay(100);
}
if(digitalRead(A3) == 1){
al4++;
if(al4 > 1){
al4 = 0;}
delay(100);
}
break;
}
case 36:{
lcd.setCursor(0,0);
lcd.print("CONFIRMADO?");
lcd.setCursor(0,1);
lcd.print("A4 - press");
if(digitalRead(A4) == 1)
{
delay(10000);
lcd.clear();
del = 0;
del2 = 10;
cont = 9;
al1aux = al1;
al2aux = al2;
al3aux = al3;
al4aux = al4;
}
break;
}
case 40:{
lcd.setCursor(0,0);
lcd.print("ALARME ATIVADO ");
digitalWrite(14, 1);
lcd.setCursor(0,1);
lcd.print("SALA:");
lcd.print(sala);
lcd.print(" ");
delay(6000);
lcd.clear();
del = 41;
del2= 44;
cont = 41;
break;
}
case 41:{
lcd.setCursor(0,0);
lcd.print("INSIRA SEN:");
lcd.print(senha[0]);
lcd.print(senha[1]);
lcd.print(senha[2]);
lcd.print(senha[3]);
lcd.setCursor(11,1);
lcd.print("^");
if(digitalRead(A0) == 1)
{
senha[0]++;
if(senha[0] > 9){
senha[0] = 0;}
delay(100);
}
if(digitalRead(A3) == 1){
senha[0]--;
if(senha[0] < 0){
senha[0] = 9;}
delay(100);
}
break;
}
case 42:{
lcd.setCursor(0,0);
lcd.print("INSIRA SEN:");
lcd.print(senha[0]);
lcd.print(senha[1]);
lcd.print(senha[2]);
lcd.print(senha[3]);
lcd.setCursor(12,1);
lcd.print("^");
if(digitalRead(A0) == 1)
{
senha[1]++;
if(senha[1] > 9){
senha[1] = 0;}
delay(100);
}
if(digitalRead(A3) == 1){
senha[1]--;
if(senha[1] < 0){
senha[1] = 9;}
delay(100);
}
break;
}
case 43:{
lcd.setCursor(0,0);
lcd.print("INSIRA SEN:");
lcd.print(senha[0]);
lcd.print(senha[1]);
lcd.print(senha[2]);
lcd.print(senha[3]);
lcd.setCursor(13,1);
lcd.print("^");
if(digitalRead(A0) == 1)
{
senha[2]++;
if(senha[2] > 9){
senha[2] = 0;}
delay(100);
}
if(digitalRead(A3) == 1){
senha[2]--;
if(senha[2] < 0){
senha[2] = 9;}
delay(100);
}
break;
}
case 44:{
lcd.setCursor(0,0);
lcd.print("INSIRA SEN:");
lcd.print(senha[0]);
lcd.print(senha[1]);
lcd.print(senha[2]);
lcd.print(senha[3]);
lcd.setCursor(14,1);
lcd.print("^");
if(digitalRead(A0) == 1)
{
senha[3]++;
if(senha[3] > 9){
senha[3] = 0;}
delay(100);
}
if(digitalRead(A3) == 1){
senha[3]--;
if(senha[3] < 0){
senha[3] = 9;}
delay(100);
}
break;
}
case 50:{
lcd.setCursor(0,0);
lcd.print("Mudar senha:");
lcd.print(senha[0]);
lcd.print(senha[1]);
lcd.print(senha[2]);
lcd.print(senha[3]);
lcd.setCursor(12,1);
lcd.print("^");
if(digitalRead(A0) == 1)
{
senha[0]++;
if(senha[0] > 9){
senha[0] = 0;}
delay(100);
}
if(digitalRead(A3) == 1){
senha[0]--;
if(senha[0] < 9){
senha[0] = 9;}
delay(100);
}
break;
}
case 51:{
lcd.setCursor(0,0);
lcd.print("Mudar senha:");
lcd.print(senha[0]);
lcd.print(senha[1]);
lcd.print(senha[2]);
lcd.print(senha[3]);
lcd.setCursor(13,1);
lcd.print("^");
if(digitalRead(A0) == 1)
{
senha[1]++;
if(senha[1] > 9){
senha[1] = 0;}
delay(100);
}
if(digitalRead(A3) == 1){
senha[1]--;
if(senha[1] < 9){
senha[1] = 9;}
delay(100);
}
break;
}
case 52:{
lcd.setCursor(0,0);
lcd.print("Mudar senha:");
lcd.print(senha[0]);
lcd.print(senha[1]);
lcd.print(senha[2]);
lcd.print(senha[3]);
lcd.setCursor(14,1);
lcd.print("^");
if(digitalRead(A0) == 1)
{
senha[2]++;
if(senha[2] > 9){
senha[2] = 0;}
delay(100);
}
if(digitalRead(A3) == 1){
senha[2]--;
if(senha[2] < 9){
senha[2] = 9;}
delay(100);
}
break;
}
case 53:{
lcd.setCursor(0,0);
lcd.print("Mudar senha:");
lcd.print(senha[0]);
lcd.print(senha[1]);
lcd.print(senha[2]);
lcd.print(senha[3]);
lcd.setCursor(15,1);
lcd.print("^");
if(digitalRead(A0) == 1)
{
senha[3]++;
if(senha[3] > 9){
senha[3] = 0;}
delay(100);
}
if(digitalRead(A3) == 1){
senha[3]--;
if(senha[3] < 9){
senha[3] = 9;}
delay(100);
}
break;
}
case 54:{
lcd.setCursor(0,0);
lcd.print("CONFIRMA:");
if(digitalRead(A4) == 1)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("CONFIRMADO");
delay(2000);
del = 0;
del2 = 10;
cont = 0;
senhaaux[0] = senha[0];
senhaaux[1] = senha[1];
senhaaux[2] = senha[2];
senhaaux[3] = senha[3];
senha[0] = 0;
senha[1] = 0;
senha[2] = 0;
senha[3] = 0;
}
if(digitalRead(A3) == 1){
senha[3]--;
if(senha[3] < 9){
senha[3] = 9;}
delay(100);
}
break;
}
}
// mensagem pro alberto do futuro. duplica o if da qui de baixo e seta ele pro cont 40
// lenbra de achar um jeito de zerar a senha dps bem easy
if(digitalRead(A4) == 1)
{
if(cont == 11 || cont == 12 || cont == 13 || cont == 14){
if(senha[0] == senhaaux[0] && senha[1] == senhaaux[1] && senha[2] == senhaaux[2] && senha[3] == senhaaux[3])
{
lcd.clear();
del = 50;
del2 = 54;
cont = 50;
senha[0] = 0;
senha[1] = 0;
senha[2] = 0;
senha[3] = 0;
delay(1000);
}
else if(senha[0] != senhaaux[0] || senha[1] != senhaaux[1] || senha[2] != senhaaux[2] || senha[3] != senhaaux[3])
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Senha errada");
delay(1000);
cont = 11;
}
}
if(cont == 41 || cont == 42 || cont == 43 || cont == 44){
if(senha[0] == senhaaux[0] && senha[1] == senhaaux[1] && senha[2] == senhaaux[2] && senha[3] == senhaaux[3])
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Alarme off");
delay(1000);
del = 0;
del2 = 10;
cont = 0;
alarme = 0;
senha[0] = 0;
senha[1] = 0;
senha[2] = 0;
senha[3] = 0;
digitalWrite(14, 0);
}
else if(senha[0] != senhaaux[0] || senha[1] != senhaaux[1] || senha[2] != senhaaux[2] || senha[3] != senhaaux[3])
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Senha errada");
delay(1000);
cont = 41;
}
}
if(cont == 30 || cont == 31 || cont == 32 || cont == 33){
if(senha[0] == senhaaux[0] && senha[1] == senhaaux[1] && senha[2] == senhaaux[2] && senha[3] == senhaaux[3])
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Acesso lib");
del = 34;
del2 = 36;
cont = 34;
senha[0] = 0;
senha[1] = 0;
senha[2] = 0;
senha[3] = 0;
delay(1000);
lcd.clear();
if(alarme == 0){
lcd.clear();
cont = 9;
del = 0;
del2 = 10;
}
}
else if(senha[0] != senhaaux[0] || senha[1] != senhaaux[1] || senha[2] != senhaaux[2] || senha[3] != senhaaux[3])
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Acesso neg");
del = 0;
del2 = 10;
cont = 9;
alarme--;
if(alarme < 0){
alarme = 1;
}
delay(750);
senha[0] = 0;
senha[1] = 0;
senha[2] = 0;
senha[3] = 0;
lcd.clear();
}
}
}
// Incrementa o contador e limpa o LCD quando o botão A1 é pressionado
if (digitalRead(A1) == 1) {
cont++;
lcd.clear();
if (cont > del2) {
cont = del;
}
delay(100);
}
// Decrementa o contador e limpa o LCD quando o botão A2 é pressionado
if (digitalRead(A2) == 1) {
cont--;
lcd.clear();
if (cont < del) {
cont = del2;
}
delay(100);
}
// Verifica se a hora atual está dentro do intervalo definido pelo usuário
if (now.hour() > ho || (now.hour() == ho && now.minute() >= mi)) {
if (now.hour() < hot || (now.hour() == hot && now.minute() <= mit)) {
flag = 1;
// Liga o relé se a temperatura está acima do setpoint
if (DHT.temperature > set) {
digitalWrite(3, HIGH);
} else {
digitalWrite(3, LOW);
//flag = 0;
}
} else {
digitalWrite(3, LOW);
flag = 0;
}
} else {
digitalWrite(3, LOW);
flag = 0;
}
// Liga os LEDs se os sensores LS estão ativos e dentro do horário
if (flag == 1) {
if (digitalRead(23) == 1 && ls1 == 1) {
digitalWrite(16, 1);
time_16 = millis();
}
if (digitalRead(25) == 1 && ls2 == 1) {
digitalWrite(17, 1);
time_17 = millis();
}
if (digitalRead(27) == 1 && ls3 == 1) {
digitalWrite(18, 1);
time_18 = millis();
}
if (digitalRead(29) == 1 && ls4 == 1) {
digitalWrite(19, 1);
time_19 = millis();
}
}
// Desliga os LEDs após o tempo definido por tempoluz
tempoluz = tempol * 1000 - 5000;
if (millis() - time_16 >= tempoluz) {
digitalWrite(16, 0);
}
if (millis() - time_17 >= tempoluz) {
digitalWrite(17, 0);
}
if (millis() - time_18 >= tempoluz) {
digitalWrite(18, 0);
}
if (millis() - time_19 >= tempoluz) {
digitalWrite(19, 0);
}
// Verifica o alarme se a flag está em zero e alarme está ativo
if (flag == 0 && alarme == 1) {
if (digitalRead(23) == 1 && al1aux == 1) {
cont = 40;
sala = 1;
}
if (digitalRead(25) == 1 && al2aux == 1) {
cont = 40;
sala = 2;
}
if (digitalRead(27) == 1 && al3aux == 1) {
cont = 40;
sala = 3;
}
if (digitalRead(29) == 1 && al4aux == 1) {
cont = 40;
sala = 4;
}
}
}