Conflitto librerie ICMPPing e TimeLib.h

Questo è il codice, realizzato per fa lavorare insieme le solo due librerie.

libreria <ICMPPing.h> /* created 30 Sep 2010 by Blake Foster */
libreria <TimeLib.h> sconosciuta la data

#include <SPI.h>
#include <TimeLib.h> 
#include <Ethernet.h>
#include <EthernetUdp.h>
#include "utility/w5100.h"
#include <ICMPPing.h>

byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
byte ip[] = {192,168,1,2}; // IP scelto per la scheda ethernet
int Persona2,Persona1;
unsigned long TempoLetturaPresenza=0L;

int timeZone=1;     
EthernetUDP Udp;  
byte packetBuffer[48];  
time_t prevDisplay=0;
IPAddress timeServer(192, 168, 1, 1); 

String QuestaDATA;
unsigned long OrarioSincornizzato,DifferenzaMillis;

byte PrimoTelefono[] = {192,168,1,11};
byte SecondoTelefono[] = {192,168,1,12}; 



SOCKET pingSocket = 0;
char buffer [256];
ICMPPing ping(pingSocket, (uint16_t)random(0, 255));

 
unsigned long Tempo=0L;

void setup() 
{
   delay(5000);
  Ethernet.begin(mac, ip);
  Serial.begin(9600);
}



void loop()
{
  Persona1=0; Persona2=0;
  ICMPEchoReply echoReply = ping(PrimoTelefono, 1); if (echoReply.status == SUCCESS) {Persona2=1; SpegniAntifurto(); TempoLetturaPresenza=0L; }  
  ICMPEchoReply echoReply1 = ping(SecondoTelefono, 1);  if (echoReply1.status == SUCCESS) {Persona1=1; SpegniAntifurto(); TempoLetturaPresenza=0L; } 
  if(  ((millis()/1000L) > TempoLetturaPresenza) && (TempoLetturaPresenza>0L) ) {AccendiAntifurto();}
  if( (Persona1==0) && (Persona2==0) && ((millis()/1000L)>TempoLetturaPresenza)  )
    {
      Serial.println(F("RITARDO PER ATTIVAZIONE ANTIFURTO !!!"));
      TempoLetturaPresenza=((millis()/1000L)+15L);
    }
 delay(10000); //ritardo 10 secondi
AggiornaOra();
}



 
void AccendiAntifurto(){Serial.println(F("\n++++++++++++++++++++++++++++> ANTIFURTO INCLUSO DA ASSENZA  PHONE <+++++++++++++++++++++++++++++\n")); TempoLetturaPresenza=((millis()/1000L)+16L);}
void SpegniAntifurto() {Serial.println(F("\n----------------------------> ANTIFURTO ESCLUSO DA PRESENZA PHONE <-----------------------------\n"));}




void AggiornaOra()
{
  Serial.print(F("--> ")); Serial.print(dayShortStr(weekday()) );Serial.print(F(" "));Serial.print(QuestaDATA);Serial.println(F(" <--"));
  QuestaDATA="";
  setSyncProvider(getNtpTime);
  
  ///realizzo l'ora legale dall'ultima domenica di marzo all'ultima domenica di ottobre
  if (month() >= 4 && month() <= 9)  {timeZone=2;} else {timeZone=1;}
  if (month() == 10) { if( ( (weekday()==1) && ((day() + 7) > 31) && (hour()>2) ) || ( (weekday()> 1) && ((day() + 7) > 31) ) )  { timeZone=1;} else {timeZone=2;} }
  if (month() == 3)  { if( ( (weekday()==1) && ((day() + 7) > 31) && (hour()>1) ) || ( (weekday()> 1) && ((day() + 7) > 31) ) )  { timeZone=2;} }

  if ( day() < 10)    {QuestaDATA +="0";} QuestaDATA +=day();   QuestaDATA +="/";
  if ( month() < 10)  {QuestaDATA +="0";} QuestaDATA +=month(); QuestaDATA +="/";
  QuestaDATA +=year(); QuestaDATA +="..";
  if ( hour()   < 10) {QuestaDATA +="0";} QuestaDATA +=hour();   QuestaDATA +=":";
  if ( minute() < 10) {QuestaDATA +="0";} QuestaDATA +=minute(); QuestaDATA +=":";
  if ( second() < 10) {QuestaDATA +="0";} QuestaDATA +=second();

  OrarioSincornizzato= (hour()*60L*60L) ;
  OrarioSincornizzato = OrarioSincornizzato + (minute()*60L) ;
  OrarioSincornizzato = OrarioSincornizzato + second() ;
  DifferenzaMillis = (millis()/1000L); 

  Serial.print(F("--> "));Serial.print(dayShortStr(weekday()) );Serial.print(F(" "));Serial.print(QuestaDATA);Serial.print(F(" <-- DA INTERNET "));

}

time_t getNtpTime()
{
  while (Udp.parsePacket() > 0) ; 
  //Serial.print(F("---Rcihiesta NTP --->"));
  sendNTPpacket(timeServer);
  uint32_t beginWait=millis();
  while (millis() - beginWait < 1500) 
  {
    int SIZE=Udp.parsePacket();
    if (SIZE >=48) {
      //Serial.print(F("NTP Ricevuto "));
      Udp.read(packetBuffer, 48);  
      unsigned long secsSince1900;
      secsSince1900=(unsigned long)packetBuffer[40] << 24;
      secsSince1900 |=(unsigned long)packetBuffer[41] << 16;
      secsSince1900 |=(unsigned long)packetBuffer[42] << 8;
      secsSince1900 |=(unsigned long)packetBuffer[43];
      return secsSince1900 - 2208988800UL + timeZone * SECS_PER_HOUR;
    }
  }
  //Serial.print(F("Nessun NTP :-( "));
  return 0; 
}
void sendNTPpacket(IPAddress &address)
{
  // set all bytes in the buffer to 0
  memset(packetBuffer, 0, 48);
  packetBuffer[0]=0b11100011;  
  packetBuffer[1]=0;    
  packetBuffer[2]=6;     
  packetBuffer[3]=0xEC;  
  packetBuffer[12]=49;
  packetBuffer[13]=0x4E;
  packetBuffer[14]=49;
  packetBuffer[15]=52;
  Udp.beginPacket(address, 123);  //NTP requests are to port 123
  Udp.write(packetBuffer, 48);
  Udp.endPacket();
}