non je n'ai rien programé de tel car un de mes fichier log fait pour une journée environ 40Ko du coup comme j'ai une carte de 8Go
8x10^9/40x10^3= 200000jours soit envion 548 ans du coup je neme prend pas la tete! XD
mon code est le suivant brut de brut :
void terrarium::DattaLog(Heure*H, Date*D)
{
#ifdef DEBUG_SERIAL
Serial.println(F("dattalog en cours..."));
#endif
long fin;
boolean fichierok;
Heure timeOn ,timeOff;
sprintf(Buff_16, "%02i:%02i:%02i", H->h, H->m, H->s);//impresion heure
if (objetExiste(LUMFLUO)==true){
if (m_fluo->getMode(EPHE)==1)
{
m_fluo->getHeurOnOff(&timeOn, &timeOff);
}
else
{
m_fluo->getHeurOnOffM(&timeOn, &timeOff);
}
}else if(objetExiste(CHAUF)==true){
if (m_fluo->getMode(EPHE)==1)
{
m_chauf->getHeurOnOff(&timeOn, &timeOff);
}
else
{
m_chauf->getHeurOnOffM(&timeOn, &timeOff);
}
}
sprintf(Buff_Nom_Fichier, "%s/DATLOG", m_name);
if (SD.exists(Buff_Nom_Fichier)!=true)
{
sprintf(Buff_Nom_Fichier, "%s/DATLOG", m_name);
SD.mkdir(Buff_Nom_Fichier);
};
sprintf(Buff_Nom_Fichier, "%s/DATLOG/%02i%02i%04i.txt", m_name,D->j, D->m, D->a);
fichierok= SD.exists(Buff_Nom_Fichier);
fichier =SD.open(Buff_Nom_Fichier, FILE_WRITE);
if(fichier==true)
{
if (fichierok==false)
{
fichier.print(F("Fichier du : "));
fichier.print(D->j);
fichier.print(F("/"));
fichier.print(D->m);
fichier.print(F("/"));
fichier.println(D->a);
fichier.print(F("heure de lever : "));
fichier.print(timeOn.h);
fichier.print(F("H"));
fichier.println(timeOn.m);
fichier.print(F("heure de coucher : "));
fichier.print(timeOff.h);
fichier.print(F("H"));
fichier.println(timeOff.m);
fichier.print(F("Duree d'eclairage : "));
fichier.print(timeOff.h-timeOn.h);
fichier.print(F("h"));
fichier.print(timeOff.m-timeOn.m);
fichier.print(F("m"));
fichier.println(F("les donnees sont au format suivant : "));
fichier.print(F("hh:mm:ss;"));
if(m_fluo!=0)
{
fichier.print(F("Temperature fluo;"));
}
if(m_uvChauf!=0)
{
fichier.print(F("Temperature uvChauf;"));
}
if(m_chauf!=0)
{
fichier.print(F("Temperature Chauf;"));
}
fichier.println(F("humidite Piece "));
fichier.println();
fichier.print(Buff_16);
fichier.print(F(";"));
if(m_fluo!=0)
{
fichier.print(m_fluo->getTemp());
fichier.print(F(";"));
}
if(m_uvChauf!=0)
{
fichier.print(m_uvChauf->getTemp());
fichier.print(F(";"));
}
if(m_chauf!=0)
{
fichier.print(m_chauf->getTemp());
fichier.print(F(";"));
}
fichier.println(m_hum);
};
if (fichierok==true)
{
fin=fichier.size();
fichier.seek(fin+1L);
fichier.print(Buff_16);
fichier.print(F(";"));
if(m_fluo!=0)
{
fichier.print(m_fluo->getTemp());
fichier.print(F(";"));
}
if(m_uvChauf!=0)
{
fichier.print(m_uvChauf->getTemp());
fichier.print(F(";"));
}
if(m_chauf!=0)
{
fichier.print(m_chauf->getTemp());
fichier.print(F(";"));
}
fichier.println(m_hum);
};
};
fichier.close();
#ifdef DEBUG_SERIAL
Serial.println(F("dattalog terminer!"));
#endif
}
bon c'est du brut comme il est dans ma lib, pour info :
Date et heure ont des structure de int
exemple :
typedef struct Date Date;
struct Date
{
int j;//jour
int m;//mois
int a;//annee
};
typedef struct Heure Heure;
struct Heure
{
int h;//heure
int m;//Minute
int s;//seconde
};
enfin tu as dedans des fonction qui verifi la presence d'un objet type LUMFLUO pour lumiere Fluo exemple:
objetExiste(LUMFLUO)==true
verifie que mon pointeur sur objet et diferent de 0 , bref tu fait ton trie si c'est pas claire n'hesite pas!