problema con un codice per una stazione meteo

 #include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <idDHT11.h>
#include <Time.h>
#include <TimeLib.h>
#include <DS3232RTC.h>
#include <SFE_BMP180.h>
//le librerie sono state inizializate 

//inizializzo le varibili dei sensori
float temperatura,umidita;//DHT11

char status;
double T,P,P0,a, valore;//bmp180

LiquidCrystal_I2C lcd(0x27,20,4);
//definiamo i pin di collegamento del nostro display

SFE_BMP180 pressure;
/*dobbiamo creare una variabile per utilizare le funzioni della 
libreiria del sensore di pressione, la chiameremo pressure*/

int idDHT11pin = 2; 
//definiamo il pin per la comunicazione 

int idDHT11intNumber = 0;
void dht11_wrapper();
//deve essere dichiarato prima dell' inizializazione della libreria

idDHT11 DHT11(idDHT11pin,idDHT11intNumber,dht11_wrapper);
//inizializzazione della libreria

void dht11_wrapper() 
{
  DHT11.isrCallback();
//questo codice deve essere scritto per ottimizare l'utilizzo della libreria
}

void setup(void) 
{
  lcd.init(); 
  lcd.init();
  //diamo il numero di caratteri e righe del nostro display
  lcd.backlight();
   
   lcd.setCursor(5,0);
      lcd.print("Buongiorno,");
      lcd.setCursor(3,1);
      lcd.print("stazione Meteo");
      delay(1000);
      lcd.print(".");
      delay(1000);
      lcd.print(".");
      delay(1000);
      lcd.print(".");
      lcd.setCursor(3,3);
      delay(1000);
  
  if (pressure.begin())
  { 
    //controlliamo che sia possibile leggere i dati del nostro sensore e che quindi funzioni
    
    setSyncProvider(RTC.get);
    //funzione per ottenre l'orario dal sensore e verificarne il funzionamento
    
    if (timeStatus() != timeSet)
    { 
      //controlliamo che il nostro orologia abbia settao l'orario
      lcd.print("Non funzionante");
      lcd.init();
      lcd.setCursor(0,0);
      lcd.print("C'e'un problema,");
      lcd.setCursor(0,1);
      lcd.print("il componente e' il");
      lcd.setCursor(7,3);
      lcd.print("DS3232");
      while(1);
      //il sistema va in pausa finche dopo un riavvio non viene corretto l'errore
   
    }
   
      DHT11.acquire();
      //acquisiamo i dati
      
      while (DHT11.acquiring());
      //Aspettiamo finchè non acquisiamo dei dati dal DHT11
      
      int result = DHT11.getStatus();
      //prendiamo dal nostro sensore il suo status
      
      switch (result)
      {
        case IDDHTLIB_OK: 
        //il dht11 funziona; 
        break;
        default:
        lcd.print("Non funzionante");
        lcd.init();
        lcd.setCursor(0,0);
        lcd.print("C'e'un problema,");
        lcd.setCursor(0,1);
        lcd.print("il componente e' il");
        lcd.setCursor(7,3);
        lcd.print("DHT11");
        while(1);
        break; 
       }
       //ora controlliamo che il nostro sensore funzione
      
    
  }
  
  else
  {
   lcd.print("Non funzionante");
   lcd.init();
   lcd.print("c'è un problema al "); 
   lcd.setCursor(7,2);
   lcd.print("BMP180");
   while(1);
  }
  
  lcd.setCursor(5,3);
  lcd.print("Funzionante"); 
}

void loop(void) 
{
    //per correggere eventuali errori effetuiamo un calcolo sul valore medio
    for(int i=0; i<=5; i++)
    {
      pressure.getPressure(P,T);
      //ottentgo il valore di pressione
      valore=P+valore; 
    }
    //effetuo la media
    valore=valore/5;
   
    lcd.init();
    lcd.setCursor(5,0);
    lcd.print("Oggi sono le ");
    lcd.setCursor(1,2);
    digitalClockDisplay();  
    delay(5000);
    
    lcd.init();
    
    lcd.setCursor(1,0);
    digitalClockDisplay();
    

    //Ottengo i valori di temperatura e umidità 
    (temperatura = DHT11.getCelsius(), 2);//temperatura
    (umidita = DHT11.getHumidity(),2); //umidità
    
    if(temperatura<20.00)
    //verifichiamo che la temperatura sia inferiore a 20.00°
    {
      lcd.setCursor(0,2);
      lcd.print("Temperatura: ");
      lcd.print(temperatura ,2);
      lcd.setCursor(0,3);
      lcd.print("fa freddo oggi.");
    }
    
    if(temperatura>20.00 && temperatura<30.00)
    //verifichiamo che la temperatura sia compresa tra 20.00° e 25.00°
    {
      lcd.setCursor(0,2);
      lcd.print("Temperatura: ");
      lcd.print(temperatura, 2 );
      lcd.setCursor(0,3);
      lcd.print("Giornata tranquilla");
    }

    if(temperatura>30.00)
    //verifichiamo che la temperatura sia superiore a 25.00°
    {
      lcd.setCursor(0,1);
      lcd.print("Temperatura: ");
      lcd.print(temperatura, 2);
      lcd.setCursor(0,2);
      lcd.print("Giornata estiva,");
      lcd.setCursor(0,3);
      lcd.print("Spiaggia!!");
    }

    delay(5000);
    
    lcd.init();
    
    lcd.setCursor(1,0);
    digitalClockDisplay();
    
    if(umidita>60.00 && umidita<80.00)
    //verifichiamo che l'umidità sia compresa tra 60.00% e 80.00%
    {
      lcd.setCursor(0,2);
      lcd.print("Umidita': ");
      lcd.print(umidita, 2);
      lcd.print("%");
      lcd.setCursor(0,3);
      lcd.print("giornata nella norma");
    }
    
    if(umidita<60)
    //verifichiamo che l'umidtà  sia inferiore all' 60%
    {
      lcd.setCursor(0,2);
      lcd.print("Umidita': ");
      lcd.print(umidita, 2);
      lcd.print("%");
      lcd.setCursor(0,3);
      lcd.print("giornata secca");
    }
    
    if(umidita>80)
    //verifichiamo che l'umidtà  sia superiore all' 80%
    {
      lcd.setCursor(0,2);
      lcd.print("Umidita': ");
      lcd.print(umidita, 2);
      lcd.print("%");
      lcd.setCursor(0,3);
      lcd.print("giornata afosa");
    }

    delay(5000);

    lcd.init();
    lcd.setCursor(1,0);
    digitalClockDisplay();
    
    if(P<1011.25 && P>1000.00)
    {
      //controlliamo che la pressione sia inferiore a 1011.25 (che è la pressione assoluta teoria nella nostra posizione)
      lcd.setCursor(0,2);
      lcd.print("Pressione: ");
      lcd.print(valore, 2);
      lcd.print("mb");
      lcd.setCursor(0,3);
      lcd.print("giornata nuvolosa");
    }

    if(P>1011.25)
    {
      //controlliamo che la pressione sia superiore a 1011.25
      lcd.setCursor(0,2);
      lcd.print("Pressione: ");
      lcd.print(valore, 2);
      lcd.print("mb");
      lcd.setCursor(0,3);
      lcd.print("soleggiato oggi");
    }

    if(P<1000.00)
    {
      //controlliamo che la pressione sia inferiore a 1000.00
      lcd.setCursor(0,2);
      lcd.print("Pressione: ");
      lcd.print(valore, 2);
      lcd.print("mb");
      lcd.setCursor(3,3);
      lcd.print("piovera' ;(");
    }
    
    delay(5000);
    
}

void digitalClockDisplay(void)
{
    //stampa a video i vari valori
    lcd.print(hour());
    lcd.print(':');
    printDigits(minute());
    lcd.print('.');
    printDigits(second());
    lcd.print(' ');
    lcd.print(day());
    lcd.print('/');
    lcd.print(month());
    lcd.print('/');
    lcd.print(year());  
}

void printDigits(int digits)
{
    // funzione che serve per compensare il tempo di scrittura a video dei secondi
    if(digits < 10)
        lcd.print('0');
    lcd.print(digits);
}

come posso fare per salvare tutti i dati massimi in una giornata e minini sempre della stessa giornata?

Buongiorno,
essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

gpb01:
Buongiorno,
essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione … possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO … Grazie.

Guglielmo

io ho fatto questo codice ma se ci metto

 int max(int a[]){
  int max=a;
  for(int i=1;i<288;i++){
    if(max<a){
      max=a;
    }
  }
return max;

per ogni dato non mi funziona ed non mi ricordo come fare per i dati minori.
}

max() e min () sono funzioni/define di C, che non é carino usare per altri scopi
Inoltre devi fare un confronto elemento per elemento. Esempio

int massimo (int errey[], byte dimensione)
{
int risultato=0;
for (byte i=0;i<dimensione+1;i++)
{
if (errey[i]>risultato)
{
risultato=errey[i];
}
}
return (risultato);
}

Silente:
max() e min () sono funzioni/define di C, che non é carino usare per altri scopi
Inoltre devi fare un confronto elemento per elemento. Esempio

int massimo (int errey[], byte dimensione)

{
int risultato=0;
for (byte i=0;i<dimensione+1;i++)
{
if (errey[i]>risultato)
{
risultato=errey[i];
}
}
return (risultato);
}

a casa provo ad farlo partire