Gestione tempo e data (Libreria Time)

Ciao a tutti,
Ho necessità di lavorare con date e orari. Ho un po’ di confusione dove reperire l’ultima libreria rilasciata e compatibile con l’IDE 1.7.10.
Girellando sul web ho scaricato la libreria Time.h ma utilizzando lo sketch di esempio ottengo un errore di compilazione di seguito riportata:

TimeSerial.pde: In function ‘time_t requestSync()’:
TimeSerial.pde:79:29: error: ‘BYTE’ was not declared in this scope
Errore durante la compilazione

E’ un problema di dipendenze? Ho necessità di altre librerie?

Lo sketch di prova è il seguente

/* 
 * TimeSerial.pde
 * example code illustrating Time library set through serial port messages.
 *
 * Messages consist of the letter T followed by ten digit time (as seconds since Jan 1 1970)
 * you can send the text on the next line using Serial Monitor to set the clock to noon Jan 1 2010
 T1262347200  
 *
 * A Processing example sketch to automatically send the messages is inclided in the download
 */ 
 
#include <Time.h>  

#define TIME_MSG_LEN  11   // time sync to PC is HEADER followed by unix time_t as ten ascii digits
#define TIME_HEADER  'T'   // Header tag for serial time sync message
#define TIME_REQUEST  7    // ASCII bell character requests a time sync message 

void setup()  {
  Serial.begin(9600);
  setSyncProvider( requestSync);  //set function to call when sync required
  Serial.println("Waiting for sync message");
}

void loop(){    
  if(Serial.available() ) 
  {
    processSyncMessage();
  }
  if(timeStatus()!= timeNotSet)   
  {
    digitalWrite(13,timeStatus() == timeSet); // on if synced, off if needs refresh  
    digitalClockDisplay();  
  }
  delay(1000);
}

void digitalClockDisplay(){
  // digital clock display of the time
  Serial.print(hour());
  printDigits(minute());
  printDigits(second());
  Serial.print(" ");
  Serial.print(day());
  Serial.print(" ");
  Serial.print(month());
  Serial.print(" ");
  Serial.print(year()); 
  Serial.println(); 
}

void printDigits(int digits){
  // utility function for digital clock display: prints preceding colon and leading 0
  Serial.print(":");
  if(digits < 10)
    Serial.print('0');
  Serial.print(digits);
}

void processSyncMessage() {
  // if time sync available from serial port, update time and return true
  while(Serial.available() >=  TIME_MSG_LEN ){  // time message consists of a header and ten ascii digits
    char c = Serial.read() ; 
    Serial.print(c);  
    if( c == TIME_HEADER ) {       
      time_t pctime = 0;
      for(int i=0; i < TIME_MSG_LEN -1; i++){   
        c = Serial.read();          
        if( c >= '0' && c <= '9'){   
          pctime = (10 * pctime) + (c - '0') ; // convert digits to a number    
        }
      }   
      setTime(pctime);   // Sync Arduino clock to the time received on the serial port
    }  
  }
}

time_t requestSync()
{
  Serial.print(TIME_REQUEST,BYTE);  
  return 0; // the time will be sent later in response to serial mesg
}

Attualmente dispongo di un Arduino Uno senza possibilità di interfacciarmi a internet, né un modulo RTC, ma ho necessità in primis di apprendere l’utilizzo di base della libreria.

Dove posso trovare la libreria ufficiale e le eventuali dipendenze.

Scusatemi se sono un po’ confuso.

Grazie infinite.

Lorenzo

La IDE 1.7.10 é la versione che da Arduino.org. Chiedi da loro.

Ciao Uwe

Non esiste una libreria “ufficiale” e, a quanto pare, stai usando l’IDE di Arduino.org, per cui ti rimandiamo al loro forum. Sul “nostro” solitamente quella libreria non ha problemi.

Grazie mille, si vede che sono proprio novizio di arduino. Ma sono ancora più confuso. Come viene gestito il progetto dell'IDE e del suo versionamento e della compatibilità. Che differenze sussistono. Sigh!

Lorenzo

Grazie, installando IDE 1.6.10, da aruino.cc, e importando la libreria dal "library manager" funziona tutto correttamente.

Lorenzo