desktop

Duda con error en codigo de Arduino Ide

Que tal colegas, tengo una duda respecto a un codigo que encontre en internet,es un temporizador programable que utiliza la libreria DS1307, el problema es que la tengo instalada y al momento de compilar el codigo me marca el siguiente error:

error.jpg

Investigue, pregunte y no eh podido resolver el problema y al parecer es mas comun de lo que pense, pero sinceramente soy nuevo en arduino, me dijeron que era porque no estaba declarado DS1307 pero no logro entender como se declara puesto que en el codigo ya esta incluido, tambien intente crear un call por asi decirlo reetiquetando la libreria DS1307 con otro nombre y tampoco me funciono, la verdad no se a que se debe el error y me gustaria saber como solucionarlo y porque representa un error, adjunto el codigo, saludos colegas.
Código:
#include <DS1307.h>
#include <Wire.h>
#include <EEPROM.h>
#include <LiquidCrystal.h>

#define MEMORY 100
#define RELAY 16
#define BUZZER 17

const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

char tempo[9] = "";
char data[9] = "";

int DataTime[7];

byte TimeActiveDevice[2], TimeDeactiveDevice[2];

byte SegAnt = 0, SegAtual = 0;

byte ReadKeyPad(void);
void AdjustTime(void);
void ActivationHour(void);
void DeactivationHour(void);

void setup()
{
      Serial.begin(9600);
      DS1307.begin();
    
      //Config pins to control columns of the matrix keyboard
      for(int key = 8; key < 12; key++)
      {
        pinMode(key, OUTPUT);
      }

      //Config pins to read lines of the matrix keyboard
      for(int key = 12; key < 16; key++)
      {
        pinMode(key, INPUT);
      }

      for(int key = 8; key < 12; key++)
      {
        digitalWrite(key, LOW);
      }

      lcd.begin(16,2);

      TimeActiveDevice[0] = EEPROM.read(1);
      TimeActiveDevice[1] = EEPROM.read(2);
      TimeDeactiveDevice[0] = EEPROM.read(3);
      TimeDeactiveDevice[1] = EEPROM.read(4);

      pinMode(RELAY, OUTPUT);
      pinMode(BUZZER, OUTPUT);
    
      digitalWrite(RELAY, HIGH);
  
}

void loop()
{
    if(EEPROM.read(MEMORY) != 73)
    {
      AdjustTime();
      lcd.clear();
      ActivationHour();
      lcd.clear();
      DeactivationHour();
      lcd.clear();

      EEPROM.write(MEMORY, 73);
    
      TimeActiveDevice[0] = EEPROM.read(1);
      TimeActiveDevice[1] = EEPROM.read(2);
    
      TimeDeactiveDevice[0] = EEPROM.read(3);
      TimeDeactiveDevice[1] = EEPROM.read(4);
    }
 
    DS1307.getDate(DataTime); 
    SegAtual = DataTime[6];

    if(ReadKeyPad() == 10)
    {
      AdjustTime();
      lcd.clear();
      ActivationHour();
      lcd.clear();
    }
  
    if(abs(SegAtual - SegAnt) >= 1)
    {
    
      sprintf(tempo, "%02d:%02d:%02d", DataTime[4], DataTime[5], DataTime[6]);
      sprintf(data, "%02d/%02d/%02d", DataTime[2], DataTime[1], DataTime[0]);
 
      lcd.setCursor(4,1);
      lcd.print(tempo);
      lcd.setCursor(4,0);
      lcd.print(data);
      SegAnt = SegAtual;
    }

    //Active and Deactive the device according to the time
    if(DataTime[4] == TimeActiveDevice[0] && DataTime[5] == TimeActiveDevice[1])
    {
      digitalWrite(RELAY, LOW);
    }

    if(DataTime[4] == TimeDeactiveDevice[0] && DataTime[5] == TimeDeactiveDevice[1])
    {
      digitalWrite(RELAY, HIGH);
    }
}

byte ReadKeyPad(void)
{ 
  byte teclado[4][4] = {
  {1,2,3,10},
  {4,5,6,11},
  {7,8,9,12},
  {14,0,15,13}};
  
    byte coluna[4] = {8,9,10,11};
    byte linha[4]  = {12,13,14,15};
    bool tecla;
  
    byte digito_tecla = 16;

    for(byte y = 0; y <= 3; y++)
    {
      digitalWrite(coluna[y], LOW);
    }
  
    for(byte y = 0; y <= 3; y++)
    {
    
      digitalWrite(coluna[y], HIGH);

        for(byte x = 0; x <= 3; x++)
        {
            tecla = digitalRead(linha[x]);
        
            if(tecla == 1)
            {
              digito_tecla = teclado[x][y];
            
                digitalWrite(BUZZER, HIGH);
                delay(100);
                digitalWrite(BUZZER, LOW);
            
              return digito_tecla;
            }           
        }

     digitalWrite(coluna[y], LOW);
    }

  
    return digito_tecla;
}

void AdjustTime()
{
   int times[6];
   int  DadosTempo[7];
   bool controle = 0;
   bool EstadoSobe = 0, EstadoDesce = 0;
   byte cont = 0;
   byte number = 0;
   int digitos[6];
   byte PosCursor = 0;
   byte t = 0;
   bool Validate = 0;
   char tempo[7] = "";
   char data[15] = "";
 
   DS1307.getDate(DadosTempo);
 
   sprintf(tempo, "%02d:%02dh", DadosTempo[4], DadosTempo[5]);
   sprintf(data, "%02d/%02d/%02d", DadosTempo[2], DadosTempo[1], DadosTempo[0]);
 
         times[4] = DadosTempo[4];
         times[5] = DadosTempo[5];
         times[3] = DadosTempo[3];
         times[2] = DadosTempo[2];
         times[1] = DadosTempo[1];
         times[0] = DadosTempo[0];
         times[6] = DadosTempo[6];
 
             digitos[0] = times[4]/10; //Armazena a Dezena das Horas
             digitos[1] = times[4]%10; //Armazena a Unidade das Horas
             digitos[2] = times[5]/10; //Armazena a Dezena dos Minutos
             digitos[3] = times[5]%10; //Armazena a Unidade dos Minutos
 
         do
         {
        
             lcd.setCursor(0,0);
             lcd.print("                ");
             lcd.setCursor(2,0);
             lcd.print("Adjust hour:");
          
             lcd.setCursor(0,1);
             lcd.print("                ");
             lcd.setCursor(5,1);
             lcd.print(tempo);
          
             PosCursor = 5;

             Validate = 0;
        
           do
           {
             number = ReadKeyPad();
             delay(100);           
          
             if( (number >= 0 && number <= 9) && (controle == 0) && (cont < 4) )
             {
               digitos[cont] = number;
               cont++;
               controle = 1;
               lcd.setCursor(PosCursor,1);
               lcd.print(number);             
               PosCursor++;
               if(cont == 2 || cont == 4)
               {
                 PosCursor = PosCursor + 1;
               }
             }
          
             if(number == 16 && controle == 1)
             {
               controle = 0;
             }
             if(number == 12)
             {
                 for(cont = 0; cont < 4; cont++)
                 {
                   digitos[cont] = 0;
                 }
               lcd.setCursor(0,1);
               lcd.print("                ");
               lcd.setCursor(5,1);
               lcd.print("00:00h");
               PosCursor = 5;
               cont = 0;
               for(int i = 4; i < 6; i++)
               {
                 times[i] = 0;
               }
             }
 
           }while(number != 13);
        
           times[4] = (digitos[0]*10) + digitos[1];
           times[5] = (digitos[2]*10) + digitos[3];
        
           if((times[4] < 0 || times[4] > 23) || (times[5] < 0 || times[5] > 59))
           {
             lcd.clear();
             lcd.setCursor(4,0);
             lcd.print("Invalid");
             lcd.setCursor(6,1);
             lcd.print("Hour");
          
             delay(2000);
             Validate = 1;
          
             lcd.clear();
             lcd.setCursor(0,0);
             lcd.print("                ");
             lcd.setCursor(1,0);
             lcd.print("Adjust Hours:");
             lcd.setCursor(0,1);
             lcd.print("                ");
             lcd.setCursor(5,1);
             lcd.print("00:00h");
             sprintf(tempo, "%02d:%02dh", 0, 0);
             PosCursor = 5;
             cont = 0;

             for(int i = 0; i < 4; i++)
             {
               digitos[i] = 0;
             } 
          
           }
         }while(Validate == 1);
          
             do
             {
 
               number = ReadKeyPad();
               delay(200);
 
             }while(number != 16);
/*----------------------------------------Date Configuration-----------------------------------------------*/
 
           PosCursor = 4;
        
           do
           {
             //Transformacao dos digitos da data para dezenas e unidades
             digitos[0] = times[2]/10; //Armazena a Dezena da Data
             digitos[1] = times[2]%10; //Armazena a Unidade da Data
          
             digitos[2] = times[1]/10; //Armazena a Dezena do Mes
             digitos[3] = times[1]%10; //Armazena a Unidade do Mes
          
             digitos[4] = times[0]/10; //Armazena a Dezena do Ano
             digitos[5] = times[0]%10; //Armazena a Unidade do Ano
          
             sprintf(data, "%02d/%02d/%02d", times[2], times[1], times[0]);
 
        
               lcd.setCursor(0,0);
               lcd.print("                ");
               lcd.setCursor(2,0);
               lcd.print("Adjust Date:");   
                  
               lcd.setCursor(0,1);
               lcd.print("                ");
               lcd.setCursor(4,1);
               lcd.print(data);
            
               PosCursor = 4;
               cont = 0;

               Validate = 0;
          
           do
           {
 
             number = ReadKeyPad();
             delay(100);
 
             if( (number >= 0 && number <= 9) && (controle == 0) && (cont < 6) )
             {
               digitos[cont] = number;
               cont++;
               controle = 1;           
               lcd.setCursor(PosCursor,1);
               lcd.print(number);             
               PosCursor++;
               if(cont == 2 || cont == 4)
               {
                 PosCursor = PosCursor + 1;
               }
             }
 
             if(number == 16 && controle == 1)
             {
               controle = 0;
             }
 
             if(number == 12)
             {
                 for(cont = 0; cont < 6; cont++)
                 {
                   digitos[cont] = 0;
                 }
               lcd.setCursor(0,1);
               lcd.print("                ");
               lcd.setCursor(4,1);
               lcd.print("00/00/00");
               PosCursor = 4;
               cont = 0;
             }
           }while(number != 13);
 
           times[2] = (digitos[0]*10) + digitos[1]; //Transformando os numeros lidos para data do mes em dois dígitos
           times[1] = (digitos[2]*10) + digitos[3]; //Transformando os numeros lidos para mes em dois dígitos
           times[0] = (digitos[4]*10) + digitos[5]; //Transformando os numeros lidos para ano em dois dígitos
 
           if((times[2] <= 0 || times[2] > 31) || (times[1] <= 0 || times[1] > 12) || times[0] <= 0)
           {
               lcd.clear();
               lcd.setCursor(4,0);
               lcd.print("Invalid");
               lcd.setCursor(6,1);
               lcd.print("Date");
               delay(2000);
               Validate = 1;
               lcd.clear();
               lcd.setCursor(0,0);
               lcd.print("                ");
               lcd.setCursor(2,0);
               lcd.print("Adjuste Date:");         
               lcd.setCursor(0,1);
               lcd.print("                ");
               lcd.setCursor(3,1);
               lcd.print("00/00/00");
               PosCursor = 5;
               cont = 0;
            
               for(byte i = 0; i < 3; i++)
               {
                 digitos[i] = 0;
               }

           }
         }while(Validate == 1);
         do
         {
           number = ReadKeyPad();
           delay(200);
         }while(number != 16);
 
           lcd.clear();
 
          DS1307.setDate(times[0],times[1],times[2],times[3],times[4],times[5],00);//year,month,date of month, day of week,hour,minutes,second
}

void ActivationHour(void)
{
   int times[6];
   int  DadosTempo[7];
   bool controle = 0;
   bool EstadoSobe = 0, EstadoDesce = 0;
   byte cont = 0;
   byte number = 0;
   int digitos[6];
   byte PosCursor = 0;
   bool Validate = 0;
   lcd.clear();
 
         for(byte i = 0; i < 6; i++)
         {
           digitos[i] = 0;
         }
      
         do
         {
             lcd.setCursor(0,0);
             lcd.print("                ");
             lcd.setCursor(0,0);
             lcd.print("Activation Hour:");
          
             lcd.setCursor(0,1);
             lcd.print("                ");
             lcd.setCursor(5,1);
             lcd.print("00:00h");
          
             PosCursor = 5;

             Validate = 0;
          
           do
           {
             number = ReadKeyPad();
             delay(100);
          
             if( (number >= 0 && number <= 9) && (controle == 0) && (cont < 4) )
             {
            
               digitos[cont] = number;
               cont++;
               controle = 1;
               lcd.setCursor(PosCursor,1);
               lcd.print(number);             
               PosCursor++;
            
               if(cont == 2 || cont == 4)
               {
                 PosCursor = PosCursor + 1;
               }
            
             }
          
             if(number == 16 && controle == 1)
             {
               controle = 0;
             }
          
             if(number == 12)
             {
                 for(cont = 0; cont < 4; cont++)
                 {
                   digitos[cont] = 0;
                 }

               lcd.setCursor(0,1);
               lcd.print("                ");
               lcd.setCursor(5,1);
               lcd.print("00:00h");
               PosCursor = 5;
               cont = 0;
            
               for(int i = 4; i < 6; i++)
               {
                 digitos[i] = 0;
               }
             }
           }while(number != 13);
        
           times[4] = (digitos[0]*10) + digitos[1];
           times[5] = (digitos[2]*10) + digitos[3];
        
           if((times[4] < 0 || times[4] > 23) || (times[5] < 0 || times[5] > 59))
           {
             lcd.clear();
             lcd.setCursor(4,0);
             lcd.print("Invalid");
             lcd.setCursor(6,1);
             lcd.print("Hour");
             delay(2000);
             Validate = 1;

             lcd.clear();
             lcd.setCursor(0,0);
             lcd.print("                ");
             lcd.setCursor(1,0);
             lcd.print("Activation Hour:");
             lcd.setCursor(0,1);
             lcd.print("                ");
             lcd.setCursor(5,1);

             lcd.print("00:00h");
             sprintf(tempo, "%02d:%02dh", 0, 0);

             PosCursor = 5;
             cont = 0;

             for(cont = 0; cont < 4; cont++)
             {
               digitos[cont] = 0;
             }
 
           }
         }while(Validate == 1);

           EEPROM.write(1, times[4]);
           EEPROM.write(2, times[5]);

             do
             {
               number = ReadKeyPad();
               delay(200);
             }while(number != 16);
}

void DeactivationHour(void)
{

    int times[6];
    int  DadosTempo[7];
    bool controle = 0;
    bool EstadoSobe = 0, EstadoDesce = 0;
    byte cont = 0;
    byte number = 0;
    int digitos[6];
    byte PosCursor = 0;
    bool Validate = 0;

    lcd.clear();

          for(byte i = 0; i < 6; i++)
          {
            digitos[i] = 0;
          }
 
          do
          {
              lcd.setCursor(0,0);
              lcd.print("                ");
              lcd.setCursor(1,0);
              lcd.print("Shutdown Hour:");
            
              lcd.setCursor(0,1);
              lcd.print("                ");
              lcd.setCursor(5,1);
              lcd.print("00:00h");
            
              PosCursor = 5;

              Validate = 0;
          
            do
            {
              number = ReadKeyPad();
              delay(100);
            
              if( (number >= 0 && number <= 9) && (controle == 0) && (cont < 4) )
              {
                digitos[cont] = number;
                cont++;
                controle = 1;
              
                lcd.setCursor(PosCursor,1);
        
                lcd.print(number);             
                PosCursor++;
              
                if(cont == 2 || cont == 4)
                {
                  PosCursor = PosCursor + 1;
                }
              }
            
              if(number == 16 && controle == 1)
              {
                controle = 0;
              }
            
              if(number == 12)
              {
                  for(cont = 0; cont < 4; cont++)
                  {
                    digitos[cont] = 0;
                  }
              
                lcd.setCursor(0,1);
                lcd.print("                ");
                lcd.setCursor(5,1);
                lcd.print("00:00h");
                PosCursor = 5;
                cont = 0;
              
                for(int i = 4; i < 6; i++)
                {
                  times[i] = 0;
                }
              }
            
            }while(number != 13);

            times[4] = (digitos[0]*10) + digitos[1];
            times[5] = (digitos[2]*10) + digitos[3];

            EEPROM.write(3, times[4]);
            EEPROM.write(4, times[5]);

            Serial.println(times[4]);
            Serial.println(times[5]);
          
            if((times[4] < 0 || times[4] > 23) || (times[5] < 0 || times[5] > 59))
            {
              lcd.clear();
              lcd.setCursor(4,0);
              lcd.print("Invalid");
              lcd.setCursor(6,1);
              lcd.print("Hour");
              delay(2000);
              Validate = 1;
            
              lcd.clear();
            
              lcd.setCursor(0,0);
              lcd.print("                ");
              lcd.setCursor(1,0);
              lcd.print("Shutdown Hour:");
              lcd.setCursor(0,1);
              lcd.print("                ");
              lcd.setCursor(5,1);
              lcd.print("00:00h");
            
              sprintf(tempo, "%02d:%02dh", 0, 0);
            
              PosCursor = 5;           
              cont = 0;

              for(cont = 0; cont < 4; cont++)
              {
               digitos[cont] = 0;
              }
            }
        
          }while(Validate == 1);

              do
              {
                number = ReadKeyPad();
                delay(200);
              }while(number != 16);
}
 
Última edición:
Efectivamente, como ya te han dicho, no lo declaras.
Para usar un objeto hay que incluir el código y además declarar el objeto.

Así que si tienes la librería para controlar leds rgb, pongamos por ejemplo
Primero harías
Include ledsrgb.h

Y luego declarativas cada uno de los leds rgb que quisieras usar con por ejemplo los pines a los que está conectado

Ledrgb primerled(1,4,7)
Ledrgb segundoled(3,8,11)
Ledrgb tercerled(13,9,6)

Y después de eso podrías usar los métodos de esa librería...
Primerled.enciende(rojo)
Segundoled.eciende(cyan)
...


En tu caso no has creado el objeto al que luego llamas pero que no existe.

Te falta algo como

DS1307 elnombrequeyolepongoamireloj(parámetros, seguramente la dirección i²c y algo más)

Ahora ya puedes llamar por "elnombrequeyolepongoa..."

En tu caso parece que le tienes que poner también DS1307 ya que luego lo llamas así.
DS1307.setime(xxxxxx) y cosas parecidas es como le llamas, pero no lo has creado. O yo no lo veo en el código.

No basta cargar el .h porque como en el caso de los leds puedes tener varios objetos de lo mismo, podrías tener dos DS1307 uno con la hora en Rusia y otro con la hora en París, por ejemplo, y tendrías que declara dos objetos.
 
Atrás
Arriba