Modulo relogio RTC para ligar led em hora marcada.

Ola pessoal, bom dia.
Alguém tem algum link ou dica para usar o modulo RTC para ligar um led em horário especifico ?
Grato.

Exibições: 5999

Responder esta

Respostas a este tópico

Olá,

No meu canal creio que pode achar algo.

https://www.youtube.com/watch?v=uBk6ES9nbkg

Abs.

Vou supor que você esta tentando ligar um Arduino UNO e um modulo RTC 1307, neste caso a conexão com arduino é igual na imagem abaixo

Rtc module schematic.jpg

Em anexo um modificação de um código que uso num alimentador de aquário que uso 

Tentei deixar o código o mais detalhado e simples possível. Qualquer duvida estamos ai!

http://labdegaragem.com/forum/topics/como-sincronizar-rtc-com-o-pc

Anexos

Obrigado.
A ligação esta ok, testei com Serial Monitor.
Agora vo ver suas dicas !

Jorge aqui vai o codigo o colega Marcos aqui do Lab me ajudou.

Segue no meu ta pra acionar um dos rele do modulo rele serial da robocore: Adapta ai pro Teu LED.

String str=rtc.getTimeStr();
String str2="17:30:00";
if (str==str2){
relays.SetRelay(1, SERIAL_RELAY_ON, 1);
rele1==true;
}

Legenda:

string str = essa variavel vai grava a hora vinda do rtc numa String.

String Str2="17:30:00" É uma variavel onde vamos colocar a hora que quereremos que aconteça algo.

Foi feito um if comparando as duas variáveis e se tudo for igual acontece de fazer o que tu precisa. 

Seu código me ajudou muito, obg. Mas como eu faria para comparar um intervalo de tempo. Exemplo: de 18:00:00 até 22:00:00 ele deve executar uma tarefa. criar intervalos de tempo.

Gean, quando você for comparar duas variáveis é possivel utilizar "= < > || &"

ou seja, igual a  X, <maior que X, > ou menor que X, o "|| significa "ou" 

para exemplificar o uso normalmente eu faço assim por achar mais entendivel  

if ((((now.hour() == 6) || (now.hour() == 18))  && (now.minute() == 20) && (now.second() <= 2))) { // Se hora for igual a 6 ou igual a 18 horas e minuto igual a 20 e segundos igual a menos 2seg liga led

digitalWrite(LED, HIGH);
delay (1000); // seria o tempo necessário para a dose correta de ração
Serial.println("ligou LED");
digitalWrite(LED, LOW);
delay(2000);

}

no seu caso ficaria assim

iif ((now.hour() >= 18) && (now.hour() =<22)  { // Se hora for maior ou igual a 18 e  menor ou igual a 22 horas  liga led

digitalWrite(LED, HIGH);
Serial.println("ligou LED");

}

else{ // senão desliga o LED
digitalWrite(LED, LOW);
}

ai no seu caso vc pode substituir as horas por String igual a o exemplo do Eduardo

Obrigado Tiago Alexandre. Vou testar. Tô querendo fazer um controle de acesso a um portão onde a pessoa digita uma senha e se tiver dentro do horário permitido, o portão abre. Vou usar  RTC + LCD e relé. O portão já é automático.

Gean, bacana o projeto, mas só faça como o Murta disse, use o DS3231 no lugar do DS1307, pois o DS1307 vai atrasando ou adiantando com o passar dos dias dependendo do cristal que ele usa, tenho um projeto com ds1307 que chega a atrasar horas por semana.

Obg pela dica Tiago Alexandre. Eu tenho o RTC DS3231 mesmo. Vou comprar o teclado e começar  o projeto.

Ola.
Muito obrigado !!
Irei estudar sobre isso também !!
Grato !
No meu programa eu usomo rtc pra muita coisa, se quiser dar uma estudada tbm... o void SimuladorDePresenca encaixa pra voce...
http://labdegaragem.com/forum/topics/sistema-de-monitoramento-remot...

Ola Jorge tive um projeto parecido com o seu, acho que este código ira te ajudar:

int hora = 0;
int minuto = 0;
int segundo = 0;

void loop(){

// Obtem a data e hora correntes e armazena em tstamp

DateTime tstamp = rtc.now();
hora = (tstamp.hour());
minuto = (tstamp.minute());
segundo = (tstamp.second());

if (hora == 14 && minuto == 30 && segundo == 00) {
digitalWrite(13,HIGH);
 }

}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço