Para minhas elucubrações preciso que em determinada hora seja registrada a leitura

de um sensor.

Tentei várias alternativas mas não consegui.

O sketch era compilado mas nada era executado.

Para exemplificar veja duas tentativas (parte do sketch):

1 -Time t;

if(t>( 23,14,05))

{

do something............

2 - t = rtc.getTime();

if(t> (23,00,12))

{

do something

Obs. Me desculpem se escrevi bobagem. Estou começando a estudar

          o DS3231!

Exibições: 806

Responder esta

Respostas a este tópico

Bom dia. O que está acontecendo é que a condição do if nunca é verdadeira, creio eu pela estrutura dele. 

Se não m engano a função rtc.getTime() retorna uma String. Para comparar uma igualdade entre Strings funciona muito bem. Não tenho certeza se é preciso usar as operações lógicas '<' ou '>' para comparar strings. De toda forma eu aconselho você a criar funções e extrair os valores separadamente de horas, minutos e segundos, transformar em inteiros antes de fazer a comparação.

Espero ter ajudado.

RHAICMER,  Por favor veja o sketch abaixo que parece ter funcionado mas ao religar

começa novamente a contagem de tempo  (estou respondendo pelo Leo pois ele

não conseguiu acessar a página (?????????????????)

MUITO OBRIGADO
#include <DS3231.h>
DS3231 rtc(SDA, SCL);
Time t;
void setup()
{ Serial.begin(115200);
rtc.begin();
rtc.setTime(23, 14, 0);
}
void loop(){
t=rtc.getTime();
if(t.hour==23 && t.sec == 6){
Serial.println("sensor 1");
Serial.print(t.hour);
Serial.print (" horas ");
Serial.print(t.sec);
Serial.println(" segundos ");}
if(t.hour==23 && t.sec==9){
Serial.println("sensor 2");
Serial.print(t.hour);
Serial.print(" horas ");
Serial.print(t.sec);
Serial.println(" segundos "); }
delay(1000);
}

Bom dia LD,

O formato do seu if está equivocado.

Clique em : " Deseja carregar arquivos? " e depois em " Escolher arquivo" e anexe o arquivo com o seu
sketch.

Daí podemos dar uma olhada nele e sugerir correções.

RV

 mineirin RV; peço olhar o sketch abaixo.  Estou respondendo pelo Leo pois ele não conseguiu

acessar a página (???????????????????) ( está ao meu lado).

Não sei por que o RTC não mantém o horário (cada vez que ligo inicia a contagem do tempo)

MUITO OBRIGADO
#include <DS3231.h>
DS3231 rtc(SDA, SCL);
Time t;
void setup()
{ Serial.begin(115200);
rtc.begin();
rtc.setTime(23, 14, 0);
}
void loop(){
t=rtc.getTime();
if(t.hour==23 && t.sec == 6){
Serial.println("sensor 1");
Serial.print(t.hour);
Serial.print (" horas ");
Serial.print(t.sec);
Serial.println(" segundos ");}
if(t.hour==23 && t.sec==9){
Serial.println("sensor 2");
Serial.print(t.hour);
Serial.print(" horas ");
Serial.print(t.sec);
Serial.println(" segundos "); }
delay(1000);
}

Retire essa linha

rtc.setTime(23, 14, 0);

No seu caso, ela configura a hora todas as vezes que você ligar o Arduino.

Use apenas quando for necessário ajustar a hora

Puxa!!!!!!!!
Muito obrigado Flávio.
Alguns instantes antes de você postar eu li (vidadesilício) para
configurar rtc.setDateTime() e depois carregar novamente apagando a linha.
Como você disse.
Eu não sei como configurar neste caso (parece mais completo).
Você pode me ensinar? Ou me indicar links?No post não há detalhe.
Obrigado. abs

Desculpe-me Flávio

O sketch do portal citado não funcionou.

"o nome rtc.setDateTime não existe na classe DS3231"

Vou pesquisar e qquestionar.

Obrigado

Primeiramente, você deve saber que biblioteca você está usando, de onde você instalou, pois existem diversas implementações para usar DS3231, muitas vezes não segue um padrão em relação a chamada dos métodos. Logo um determinado método pode existir em uma biblioteca e em outra não.

Recomendo você usar a biblioteca da Adafruit

https://learn.adafruit.com/ds1307-real-time-clock-breakout-board-ki...

https://github.com/adafruit/RTClib

O Flávio tem razão.

Existem 500 libs para RTC.

Quando você vai usar uma lib, deve conhecer seus métodos e portanto tem que ter acesso ao manual ou ao código-fonte, senão fica difícill de usar.

A maioria das libs que você instala no Arduino sempre vêm acompanhadas de exemplos que ficam disponíveis no menu da IDE.

Pelo que vi em algumas libs, para testar a hora, procedemos assim:

RTC.getTime();
if (RTC.hour == ...)

Mas vc precisa saber qual lib usou.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço