#include int relay (52); DS1302 rtc(46, 47, 48); Time t; //parâmetros de horário que serão atualizados int horaAtual, minutoAtual; //parâmetros primeira alimentação int horaAlimentacao1, minutoAlimentacao1, demosComida1; //parâmetros segunda alimentação int horaAlimentacao2, minutoAlimentacao2, demosComida2; //parâmetros segunda alimentação int horaAlimentacao3, minutoAlimentacao3, demosComida3; //parâmetros segunda alimentação int horaAlimentacao4, minutoAlimentacao4, demosComida4; //parâmetros segunda alimentação int horaAlimentacao5, minutoAlimentacao5, demosComida5; //parâmetros segunda alimentação int horaAlimentacao6, minutoAlimentacao6, demosComida6; //parâmetros primeira alimentação int horaAlimentacao7 , minutoAlimentacao7, demosComida7; //parâmetros segunda alimentação int horaAlimentacao8, minutoAlimentacao8, demosComida8; //parâmetros segunda alimentação int horaAlimentacao9, minutoAlimentacao9, demosComida9; //parâmetros segunda alimentação int horaAlimentacao10, minutoAlimentacao10, demosComida10; //parâmetros segunda alimentação int horaAlimentacao11, minutoAlimentacao11, demosComida11; void setup() { rtc.halt(false); rtc.writeProtect(false); Serial.begin(115200); pinMode(52, OUTPUT); digitalWrite(52, LOW); //determina o pino do relé pinMode(52, OUTPUT); //determina o horário da primeira alimentação horaAlimentacao1 = 23; minutoAlimentacao1 = 00; //determina o horário da segunda alimentação horaAlimentacao2 = 05; minutoAlimentacao2 = 00; //determina o horário da segunda alimentação horaAlimentacao3 = 07; minutoAlimentacao3 = 00; //determina o horário da segunda alimentação horaAlimentacao4 = 8; minutoAlimentacao4 = 00; //determina o horário da segunda alimentação horaAlimentacao5 = 10; minutoAlimentacao5 = 00; //determina o horário da segunda alimentação horaAlimentacao6 = 11; minutoAlimentacao6 = 00; //determina o horário da primeira alimentação horaAlimentacao7 = 12; minutoAlimentacao7 = 00; //determina o horário da segunda alimentação horaAlimentacao8 = 13; minutoAlimentacao8 = 00; //determina o horário da segunda alimentação horaAlimentacao9 = 14; minutoAlimentacao9 = 00; //determina o horário da segunda alimentação horaAlimentacao10 = 16; minutoAlimentacao10 = 00; //determina o horário da segunda alimentação horaAlimentacao11 = 18; minutoAlimentacao11 = 00; //determina o status de alimentação. 0 equivale a não e 1 a sim demosComida1 = 0; demosComida2 = 0; demosComida3 = 0; demosComida4 = 0; demosComida5 = 0; demosComida6 = 0; demosComida7 = 0; demosComida8 = 0; demosComida9 = 0; demosComida10 = 0; demosComida11 = 0; //as linhas abaixo devem ser descomentadas para configurar o relógio interno. Descomente, carregue o código para o arduino, comente novamente e suba o código mais uma vez. //rtc.setDate(07,11,2020); // determina a data (dia, mes, ano) //rtc.setDOW(SATURDAY); // determina o dia da semana //rtc.setTime(19, 16, 30); // determina o horário (hora, minuto, segundo) // desliga o relé para começar. digitalWrite(52, LOW); } void loop() { //determina o horário atual t = rtc.getTime(); horaAtual = t.hour; minutoAtual = t.min; //verifica se é o horário da primeira alimentação if (horaAtual == horaAlimentacao1 && minutoAtual == minutoAlimentacao1 && demosComida1 == 0 ){ digitalWrite(52, HIGH); delay(1500); digitalWrite(52, LOW); demosComida1 = 1; //altera status da comida1 } //verifica se é o horário da segunda alimentação if (horaAtual == horaAlimentacao2 && minutoAtual == minutoAlimentacao2 && demosComida2 == 0 ){ digitalWrite(52, HIGH); delay(1500); digitalWrite(52, LOW); demosComida2 = 1; //altera status da comida2 } //verifica se é o horário da segunda alimentação if (horaAtual == horaAlimentacao3 && minutoAtual == minutoAlimentacao3 && demosComida3 == 0 ) { digitalWrite(52, HIGH); delay(1500); digitalWrite(52, LOW); demosComida3 = 1; //altera status da comida2 } //verifica se é o horário da segunda alimentação if (horaAtual == horaAlimentacao4 && minutoAtual == minutoAlimentacao4 && demosComida4 == 0 ) { digitalWrite(52, HIGH); delay(1500); digitalWrite(52, LOW); demosComida4 = 1; //altera status da comida2 } //verifica se é o horário da segunda alimentação if (horaAtual == horaAlimentacao5 && minutoAtual == minutoAlimentacao5 && demosComida5 == 0 ) { digitalWrite(52, HIGH); delay(1500); digitalWrite(52, LOW); demosComida5 = 1; //altera status da comida2 } //verifica se é o horário da segunda alimentação if (horaAtual == horaAlimentacao6 && minutoAtual == minutoAlimentacao6 && demosComida6 == 0 ) { digitalWrite(52, HIGH); delay(1500); digitalWrite(52, LOW); demosComida6 = 1; //altera status da comida2 } //verifica se é o horário da primeira alimentação if (horaAtual == horaAlimentacao7 && minutoAtual == minutoAlimentacao7 && demosComida7 == 0 ) { digitalWrite(52, HIGH); delay(1500); digitalWrite(52, LOW); demosComida7 = 1; //altera status da comida1 } //verifica se é o horário da segunda alimentação if (horaAtual == horaAlimentacao8 && minutoAtual == minutoAlimentacao8 && demosComida8 == 0 ) { digitalWrite(52, HIGH); delay(1500); digitalWrite(52, LOW); demosComida8 = 1; //altera status da comida2 } //verifica se é o horário da segunda alimentação if (horaAtual == horaAlimentacao9 && minutoAtual == minutoAlimentacao9 && demosComida9 == 0 ) { digitalWrite(52, HIGH); delay(1500); digitalWrite(52, LOW); demosComida9 = 1; //altera status da comida2 } //verifica se é o horário da segunda alimentação if (horaAtual == horaAlimentacao10 && minutoAtual == minutoAlimentacao10 && demosComida10 == 0 ) { digitalWrite(52, HIGH); delay(1500); digitalWrite(52, LOW); demosComida10 = 1; //altera status da comida2 } //verifica se é o horário da segunda alimentação if (horaAtual == horaAlimentacao11 && minutoAtual == minutoAlimentacao11 && demosComida11 == 0 ) { digitalWrite(52, HIGH); delay(1500); digitalWrite(52, LOW); demosComida11 = 1; //altera status da comida2 } //Imprime o horário da próxima alimentação if (demosComida1 == 0 || demosComida1 == 1 && demosComida2 == 0 ) { Serial.print("Horário atual: "); Serial.println(rtc.getTimeStr()); Serial.print("Próxima alimentação: "); Serial.print(horaAlimentacao1); Serial.print("h:"); Serial.print(minutoAlimentacao1); Serial.println("min"); Serial.println(" "); } if (demosComida1 == 1 && demosComida2 == 0){ Serial.print("Horário atual: "); Serial.println(rtc.getTimeStr()); Serial.print("Próxima alimentação: "); Serial.print(horaAlimentacao2); Serial.print("h:"); Serial.print(minutoAlimentacao2); Serial.println("min"); Serial.println(" "); } if (demosComida2 == 1 && demosComida3 == 0) { Serial.print("Horário atual: "); Serial.println(rtc.getTimeStr()); Serial.print("Próxima alimentação: "); Serial.print(horaAlimentacao3); Serial.print("h:"); Serial.print(minutoAlimentacao3); Serial.println("min"); Serial.println(" "); } if (demosComida3 == 1 && demosComida4 == 0) { Serial.print("Horário atual: "); Serial.println(rtc.getTimeStr()); Serial.print("Próxima alimentação: "); Serial.print(horaAlimentacao4); Serial.print("h:"); Serial.print(minutoAlimentacao4); Serial.println("min"); Serial.println(" "); } if (demosComida4 == 1 && demosComida5 == 0) { Serial.print("Horário atual: "); Serial.println(rtc.getTimeStr()); Serial.print("Próxima alimentação: "); Serial.print(horaAlimentacao5); Serial.print("h:"); Serial.print(minutoAlimentacao5); Serial.println("min"); Serial.println(" "); } if (demosComida5 == 1 && demosComida6 == 0) { Serial.print("Horário atual: "); Serial.println(rtc.getTimeStr()); Serial.print("Próxima alimentação: "); Serial.print(horaAlimentacao6); Serial.print("h:"); Serial.print(minutoAlimentacao6); Serial.println("min"); Serial.println(" "); } if (demosComida6 == 1 && demosComida7 == 0 ) { Serial.print("Horário atual: "); Serial.println(rtc.getTimeStr()); Serial.print("Próxima alimentação: "); Serial.print(horaAlimentacao7); Serial.print("h:"); Serial.print(minutoAlimentacao7); Serial.println("min"); Serial.println(" "); } if (demosComida7 == 1 && demosComida8 == 0) { Serial.print("Horário atual: "); Serial.println(rtc.getTimeStr()); Serial.print("Próxima alimentação: "); Serial.print(horaAlimentacao8); Serial.print("h:"); Serial.print(minutoAlimentacao8); Serial.println("min"); Serial.println(" "); } if (demosComida8 == 1 && demosComida9 == 0) { Serial.print("Horário atual: "); Serial.println(rtc.getTimeStr()); Serial.print("Próxima alimentação: "); Serial.print(horaAlimentacao9); Serial.print("h:"); Serial.print(minutoAlimentacao9); Serial.println("min"); Serial.println(" "); } if (demosComida9 == 1 && demosComida10 == 0) { Serial.print("Horário atual: "); Serial.println(rtc.getTimeStr()); Serial.print("Próxima alimentação: "); Serial.print(horaAlimentacao10); Serial.print("h:"); Serial.print(minutoAlimentacao10); Serial.println("min"); Serial.println(" "); } if (demosComida10 == 1 && demosComida11 == 0) { Serial.print("Horário atual: "); Serial.println(rtc.getTimeStr()); Serial.print("Próxima alimentação: "); Serial.print(horaAlimentacao11); Serial.print("h:"); Serial.print(minutoAlimentacao11); Serial.println("min"); Serial.println(" "); } if (demosComida11 == 1 && demosComida11 == 1) { Serial.print("Horário atual: "); Serial.println(rtc.getTimeStr()); Serial.print("Próxima alimentação: "); Serial.print(horaAlimentacao11); Serial.print("h:"); Serial.print(minutoAlimentacao11); Serial.println("min"); Serial.println(" "); } //meia noite reseta o status de comida do dia if (horaAtual == 0 && minutoAtual == 5){ demosComida1 = 0; demosComida2 = 0; demosComida3 = 0; demosComida4 = 0; demosComida5 = 0; demosComida6 = 0; demosComida7 = 0; demosComida8 = 0; demosComida9 = 0; demosComida10 = 0; demosComida11 = 0; } //atualiza monitor serial delay (1000); }