Ir ao conteúdo
  • Cadastre-se

Acende led com RTC no Arduino


Posts recomendados

Boa noite pessoal, sou novato com arduino, estou precisando programar ele para acender e apagar leds em horários específicos com um rtc e arduino uno.

se alguém puder me ajudar pois não estou conseguindo achar em qual variável ele armazena a hora para eu fazer um if da hora por ex: para ligar as 07:00 e desligar as 18:00

Em anexo, a biblioteca do rtc.

//Programa : Relogio com modulo RTC DS1307 //Carrega a biblioteca do RTC DS1307#include <DS1307.h> // Define o nome led para a porta 12 int led = 12;  //Modulo RTC DS1307 ligado as portas A4 e A5 do Arduino DS1307 rtc(A4, A5); void setup(){  //Aciona o relogio  rtc.halt(false);  //Define que a porta 12 é saida  pinMode(12,OUTPUT);      //As linhas abaixo setam a data e hora do modulo  //e podem ser comentada apos a primeira utilizacao  //rtc.setDOW(TERCA);      //Define o dia da semana   //rtc.setTime(19, 50, 0);     //Define o horario // rtc.setDate(16, 6, 2015);   //Define o dia, mes e ano     //Definicoes do pino SQW/Out  rtc.setSQWRate(SQW_RATE_1);  rtc.enableSQW(true);     Serial.begin(9600);} void loop(){  //Mostra as informações no Serial Monitor  Serial.print("Hora : ");  Serial.print(rtc.getTimeStr());  Serial.print(" ");  Serial.print("Data : ");  Serial.print(rtc.getDateStr(FORMAT_SHORT));  Serial.print(" ");  Serial.println(rtc.getDOWStr(FORMAT_SHORT)); 	{		    //No momento estou abrindo a porta 12 para piscar um led  //preciso fazer com que ele acenda as 07:00 e apague as 18:00    digitalWrite(led,HIGH);   delay (1000);   digitalWrite(led,LOW);}     //Aguarda 1 segundo e repete o processo  delay (1000);}

ds1307.rar

Link para o comentário
Compartilhar em outros sites

Utilize isso:

 

if(rtc.getTimeStr()==7 && digitalRead(led)==LOW){

   digitalWrite(led,HIGH);

}

 

if(rtc.getTimeStr()==18 && digitalRead(led)==HIGH){

   digitalWrite(led,LOW);

}

 

Pode colocar isto no lugar onde você faz pisca o led. Foi adicionado uma comparação com o status do led para que ele só aplique um pulso para alterar o estado do mesmo.

 

Espero ter ajudado.

Link para o comentário
Compartilhar em outros sites

Utilize isso:

if(rtc.getTimeStr()==7 && digitalRead(led)==LOW){

digitalWrite(led,HIGH);

}

if(rtc.getTimeStr()==18 && digitalRead(led)==HIGH){

digitalWrite(led,LOW);

}

Pode colocar isto no lugar onde você faz pisca o led. Foi adicionado uma comparação com o status do led para que ele só aplique um pulso para alterar o estado do mesmo.

Espero ter ajudado.

Obrigado, esse fds não vou estar em casa assim q testar inf c deu certo. valeu

Link para o comentário
Compartilhar em outros sites

dmhigor, deu o seguinte erro:

 

sketch_jun16a.ino: in function 'void loop()' :

sketch_jun16a:52: error: isso c++ forbids comparison between pointer and integer [-fpermissive]

sketch_jun16a:58: error: isso c++ forbids comparison between pointer and integer [-fpermissive]

sketch_jun16a:69 error: expected '}' at end of input

isso c++ forbids comparison between pointer and integer [-fpermissivel]

se puder dar uma olhada no que pode ser.

Obrigado por enquanto.

Link para o comentário
Compartilhar em outros sites

Ola dmhigor,

 

a hora é armazenada no seguinte formato xx:xx:xx

Consegui resolver assim

criei uma

 

String hora;

 

hora = rtc.getTimeStr();

 

if ((hora >= "07:00:00") && (hora <="18:00:00"))

{

Serial.println("Luz acesa");

digitalWrite(led,HIGH);

}

 

else

 

{

Serial.println("Não e hora de ligar a luz");

digitalWrite(led,LOW);

}

 

 

Obrigado, você clareou meu pensamento!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!