Go Down

Topic: Tutorial - Reloj RTC I2C con Arduino (Read 18 times) previous topic - next topic

fjramirez


  hola compañeros e estado trabajando en el RTC de arduinoo,
usando el tutorial funciona muy bien el problema es al tratar de darle condiciones
de tiempo al arduino no me responde  aqui tengo el codigo no se que me falta..



#include <Wire.h>   // Incluye la librería Wire
#include "RTClib.h" // Incluye la librería RTClib
RTC_DS1307 RTC; // Crea el objeto RTC
int hora =0;
int minuto =0;
int segundo =0;

void setup () {
Serial.begin(9600); // Establece la velocidad de datos del puerto serie
Wire.begin(); // Establece la velocidad de datos del bus I2C
RTC.begin(); // Establece la velocidad de datos del RTC
}
void loop () {
DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC

Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
delay(5000); // La información se actualiza cada 1 seg.
hora=(now.hour(),DEC);
minuto=(now.minute(),DEC);
segundo=(now.second(),DEC);

if (hora >=7);
{
  digitalWrite(5,HIGH);

if (hora >=17);
digitalWrite(5,LOW);
}
}



si me pudieran ayudar

muchas gracias..!!!


Puede que esto te sea de utilidad http://forum.arduino.cc/index.php?topic=254415.0
;)

Derty-2

fjramirez

Quote

// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
#include <Wire.h>
#include "RTClib.h"
#include "RTC_DS1307.h"
#define DS1307_I2C_ADDRESS 0x68
int hora = 0;
int minuto = 0;
int segundo = 0;

RTC_DS1307 RTC;

void setup () {
   
    Serial.begin(9600);
    Wire.begin();
    RTC.begin();
    pinMode (5, OUTPUT);
    //RTC.adjust(DateTime(2014, 7, 3, 12, 42, 20));// quitar "//" poner fecha año, mes, dia, hora.. y luego volver a grabar sketch//
  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");   
  }
}

void loop () {
    DateTime now = RTC.now();

    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(' ');
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
   
    hora = (now.hour(),DEC);
    minuto = (now.minute(),DEC);
    segundo = (now.second(),DEC);

    if (hora >=7);
        {
        digitalWrite(5,HIGH);

        if (hora >=17);
        digitalWrite(5,LOW);
         }
}

holaxic

Hola buenas noches a todos, soy nuevo en este foro y doy gracias por todos los comentarios que dais. Pero he revisado varios dias el foro y no encuentro lo q me sucede con mi mega i RTD I2C. El sistema funciona perfectamente la hora y el dia, pero el problema que hay es que se adelanta . ( unos 7 seg cada 12 horas ). He cambiado varias veces la pila y siempre el adelanto es igual. En esta compra compre 2 unidades y las dos hacen el mismo efecto. En uno de ellos cambie el cristal de cuarzo per hace el mismo efecto. Hay alguien que le ha pasado algo similar?.
Muchas gracias un saludo.

fjramirez


Hola buenas noches a todos, soy nuevo en este foro y doy gracias por todos los comentarios que dais. Pero he revisado varios dias el foro y no encuentro lo q me sucede con mi mega i RTD I2C. El sistema funciona perfectamente la hora y el dia, pero el problema que hay es que se adelanta . ( unos 7 seg cada 12 horas ). He cambiado varias veces la pila y siempre el adelanto es igual. En esta compra compre 2 unidades y las dos hacen el mismo efecto. En uno de ellos cambie el cristal de cuarzo per hace el mismo efecto. Hay alguien que le ha pasado algo similar?.
Muchas gracias un saludo.


Solo se adelanta 7 segundos??? O cada 12 horas aproximadamente se adelanta 7 segundos? Ten en cuenta que los relojes por muy precisos que sean siempre tienen un error. Es cierto que 7 segundos cada 12 horas es mucho.

Si por el contrario solo se adelanta 7 segundos en las primeras 12 horas, y luego se mantiene, puede ser debido a que el reloj se debe estabilizar. Cuando inicias el reloj lo hace a una temperatura diferente que cuando lleva tiempo funcionando. Este pequeño cambio de temperatura puede ser suficiente para que el reloj sufra una pequeña desviación en su frecuencia.

Haciendo pruebas con el modulo del que se habla en este post, he notado un pequeño atraso, pero era debido al tiempo que tarda la IDE de Arduino, en crear el .hex y cargarlo en la placa (Recordamos que el código usa la fecha de creación del .hex para establecer la hora) Por lo demás, ningún problema, lo hemos probado días y semanas encendido y todo perfecto.

Go Up