Problema con libreria para Reloj DS1307

Buenas a todos, tengo este reloj ya conectado, le pongo la libreria en le carpeta libraries que creo yo en documentos arduino, tal y como hice con la libreria de la pantalla I2C.

Pues bien, cierro el programa, uso la version 0023 (ya que con la nueva no me va el tema de la libreria de la pantalla), abro el programa de nuevo, le doy a añadir libreria y me aparece, pero el nombre se pone en naranjita como si no la reconociera, de manera que cuando le doy a compilar me da el siguiente error:

In file included from Alarma2.cpp:4: C:\Users\Zes\Documents\Arduino\libraries\RelojDS1307/RelojDS1307.h:13:21: error: Arduino.h: No such file or directory In file included from Alarma2.cpp:4: C:\Users\Zes\Documents\Arduino\libraries\RelojDS1307/RelojDS1307.h:46: error: 'boolean' does not name a type C:\Users\Zes\Documents\Arduino\libraries\RelojDS1307/RelojDS1307.h:47: error: 'boolean' does not name a type C:\Users\Zes\Documents\Arduino\libraries\RelojDS1307/RelojDS1307.h:50: error: 'byte' does not name a type C:\Users\Zes\Documents\Arduino\libraries\RelojDS1307/RelojDS1307.h:51: error: 'byte' does not name a type

A ver si alguien me puede hechar una mano...

Saludos

tiozes:
Buenas a todos, tengo este reloj ya conectado, le pongo la libreria en le carpeta libraries que creo yo en documentos arduino, tal y como hice con la libreria de la pantalla I2C.

Pues bien, cierro el programa, uso la version 0023 (ya que con la nueva no me va el tema de la libreria de la pantalla), abro el programa de nuevo, le doy a añadir libreria y me aparece, pero el nombre se pone en naranjita como si no la reconociera, de manera que cuando le doy a compilar me da el siguiente error:

In file included from Alarma2.cpp:4:
C:\Users\Zes\Documents\Arduino\libraries\RelojDS1307/RelojDS1307.h:13:21: error: Arduino.h: No such file or directory
In file included from Alarma2.cpp:4:
C:\Users\Zes\Documents\Arduino\libraries\RelojDS1307/RelojDS1307.h:46: error: ‘boolean’ does not name a type
C:\Users\Zes\Documents\Arduino\libraries\RelojDS1307/RelojDS1307.h:47: error: ‘boolean’ does not name a type
C:\Users\Zes\Documents\Arduino\libraries\RelojDS1307/RelojDS1307.h:50: error: ‘byte’ does not name a type
C:\Users\Zes\Documents\Arduino\libraries\RelojDS1307/RelojDS1307.h:51: error: ‘byte’ does not name a type

A ver si alguien me puede hechar una mano…

Saludos

podrías hacer lecturas y escrituras en los registros del DS1307 de manera directa en el mismo sketch con wire.h y te quitas de problemas con librerías. El código es tal que así:

/*  
 *  Consigue la hora de un DS1307 y la muestra mediante puerto serie
 *  Solo se usa la librería Wire.h
 */

#include <Wire.h>   // Esta es la libreria de comunicacion I2C
#define DS1307_I2C_ADDRESS 0x68

// Convierte números normales decimales a BCD (binario decimal codificado)
byte decToBcd(byte val)
{
  return ( (val/10*16) + (val%10) );
}

// Convierte BCD (binario decimal codificado) a números normales decimales 
byte bcdToDec(byte val)
{
  return ( (val/16*10) + (val%16) );
}

// 1) Sets the date and time on the ds1307
// 2) Starts the clock
// 3) Sets hour mode to 24 hour clock

void setDateDs1307(byte second,        // 0-59
                   byte minute,        // 0-59
                   byte hour,          // 1-23
                   byte dayOfWeek,     // 1-7
                   byte dayOfMonth,    // 1-28/29/30/31
                   byte month,         // 1-12
                   byte year)          // 0-99
{
   Wire.beginTransmission(DS1307_I2C_ADDRESS);
   Wire.send(0);
   Wire.send(decToBcd(second));    
   Wire.send(decToBcd(minute));
   Wire.send(decToBcd(hour));      
   Wire.send(decToBcd(dayOfWeek));
   Wire.send(decToBcd(dayOfMonth));
   Wire.send(decToBcd(month));
   Wire.send(decToBcd(year));
   Wire.endTransmission();
}

// Establece la fecha y la hora del reloj
void getDateDs1307(byte *second,
          byte *minute,
          byte *hour,
          byte *dayOfWeek,
          byte *dayOfMonth,
          byte *month,
          byte *year)
{
  // Resetea el registro puntero
  Wire.beginTransmission(DS1307_I2C_ADDRESS);
  Wire.send(0);
  Wire.endTransmission();

  Wire.requestFrom(DS1307_I2C_ADDRESS, 7);

  // Alguno de estos necesitan enmascarar porque ciertos bits son bits de control    

  *second     = bcdToDec(Wire.receive() & 0x7f);
  *minute     = bcdToDec(Wire.receive());
  *hour       = bcdToDec(Wire.receive() & 0x3f);  
  *dayOfWeek  = bcdToDec(Wire.receive());
  *dayOfMonth = bcdToDec(Wire.receive());
  *month      = bcdToDec(Wire.receive());
  *year       = bcdToDec(Wire.receive());
}

void setup()
{
  byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
  Wire.begin();
  Serial.begin(9600);

  
 
  // la primera vez debemos poner en hora, active esta parte y luego vuelva a quitarla
  /*second = 40;
  minute = 42;
  hour = 1;
  dayOfWeek = 5;
  dayOfMonth = 3;
  month = 2;
  year = 12;
  
  setDateDs1307(second, minute, hour, dayOfWeek, dayOfMonth, month, year); */
   
}

void loop()
{
  byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;

  getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);  

  Serial.print("20");
    if (year < 10) Serial.print("0");
  Serial.print(year, DEC);
  Serial.print("/");
    if (month < 10) Serial.print("0");
  Serial.print(month, DEC);  
  Serial.print("/");   
    if (dayOfMonth < 10) Serial.print("0");
  Serial.print(dayOfMonth, DEC); 
  Serial.print("  ");
    if (hour < 10) Serial.print("0");
  Serial.print(hour, DEC);
  Serial.print(":");  
    if (minute < 10) Serial.print("0");
  Serial.print(minute, DEC);
  Serial.print(":");
    if (second < 10) Serial.print("0");
  Serial.print(second, DEC);  
  Serial.print("  Dia de la semana:");  
  Serial.println(dayOfWeek, DEC);
    switch (dayOfWeek) 
    {
    case 1:
      Serial.println("  Lunes"); 
      break;
    case 2:
      Serial.println("  Martes"); 
      break;
    case 3:
      Serial.println("  Miercoles"); 
      break;
    case 4:
      Serial.println("  Jueves"); 
      break;
    case 5:
      Serial.println("  Viernes"); 
      break;
    case 6:
      Serial.println("  Sabado"); 
      break;
    case 7:
      Serial.println("  Domingo"); 
      break;
   }

  delay(1000); //Pausa durante 1 segundo
}

Es solo un sencillo ejemplo poco optimizado, pero ahí tienes los métodos que necesitas.

Un saludo.

ok, muchas gracias, no sabia que se podia hacer de esta manera, lo he modificado un poco y muestra la fecha en el lcd aunque mal xq no lo he adaptado bien.

A ver si soy capaz de dejarlo fino.

Saludoss :D

Y hay alguna diferencia de usar las librerias o hacerlo de esta otra forma? Es mas facil y ocupa menos memoria o algo sin usar la libreria??