Tags:
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
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
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 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);
}
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por