Ir ao conteúdo
  • Cadastre-se
andrito

Acende led com RTC no Arduino

Recommended Posts

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

Compartilhar este post


Link para o post
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.

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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.

Compartilhar este post


Link para o post
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!

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×