Pulsante e lcd

Ciao a tutti, adesso appena finito di crivere qui mi presentero nell’apposita sezione.
ho da un po di tempo arduino, e oggi stavo realizzando un progetto quando ho incontrato un problmema.
allora sto realizzando una semplice stazione meteo per la mia serra con il dht11 (che poi cambiero col dht22 per controllare se gela)
il problema è questo vorrei inserire un pulsante che mi permetta di cambiare 3 schermate del lcd 16x2
vorrei che la prima dica:

“schermata uno”

una riga temp e umidita e sotto min e max della temperatura

“schermata due”

una riga temp e umidita e sotto min e max del’umidita

“scheramata tre”

valori di un sensore che ancora non ho quindi potrei scrivere
in costruzione e poi riempirla in un secondo tempo.

Il problema che non so come far variare le ipotetiche schermate con la pressione del pulsante.

#include <DHT.h> //libreria sonda termo igrometro
#include <Wire.h> //libreria schermo
#include <LiquidCrystal_I2C.h> //Libreria per pilotare il display LCD
#include <EEPROM.h>
    
#define DHTPIN 8 // 8 è il pin di Arduino a cui collego il sensore di temperatura
#define DHTTYPE DHT11 // dht11 è il tipo di sensore che uso
DHT dht(DHTPIN, DHTTYPE);

LiquidCrystal_I2C lcd(0x27, 16, 2); //Inizializzazione della libreria con i pin del display LCD

    const int reset = 10;
    int statoreset = 0;
byte MIN;
byte MAX;
    // dichiarazione variabili


   
void setup() {
lcd.init();    //inizializza LCD
  
  lcd.setCursor(0, 0); //Sposto il cursore sulla prima riga (riga 0) e sulla prima colonna
  lcd.print("T:"); //Stampo il messaggio 'Temperatura:' sulla prima riga
  
  lcd.setCursor(9, 0); //Sposto il cursore sulla prima riga (riga 0) e sulla prima colonna
  lcd.print("U:");
  
  lcd.setCursor(0,1);
  lcd.print("MIN");
  lcd.setCursor(9,1);
  lcd.print("MAX");


    pinMode(reset, INPUT);
    digitalWrite(10, HIGH);
    MIN = EEPROM.read(1);
    MAX = EEPROM.read(2);
    // MIN e MAX assumono i due valori contenuti nella memoria EEPROM
    }
    
    
void loop() {
    int t = dht.readTemperature();
    int h = dht.readHumidity();
    
    if (t > MAX)
    {MAX = t;
    EEPROM.write(2, t);}
    // se la temperatura supera il dato MAX allora modifico il dato MAX
    // scrivo questo dato anche nella eeprom
    if (t < MIN)
    {MIN = t;
    EEPROM.write(1, t);}
    // se la temperatura è minore del dato MIN allora modifico il dato MIN
    // scrivo questo dato anche nella eeprom
    statoreset = digitalRead (reset);
    if( statoreset == LOW)
    {MIN = t;
    MAX = t;}
    // premendo il tasto reset porto MIN e MAX al valore di temp attuale
    lcd.setCursor(3, 0);
    lcd.print(t);
    lcd.print(" C"); //Stampo uno spazio e il carattere 'C' sul display
    lcd.setCursor(12, 0);
    lcd.print(h);
    lcd.print(" %"); //Stampo uno spazio e il carattere 'C' sul display
    lcd.setCursor(5, 1);
    lcd.print(MIN);
    lcd.setCursor(14, 1);
    lcd.print(MAX);
  
    
    lcd.setBacklight(10);
    
    
    // scrittura dati sul display
    delay(100);
    }

i commenti sono ancora da sistemare, sono solo degli appunti per il momento…

GRAZIE ANTICIPATAMENTE A TUTTI

Potresti usare un variabile che incrementi ogni volta che premi il pulsante ed azzerandola non appena supera il numero di schermate previsto.

Poi, testi il suo valore per far apparire la schermata corrente.

ciao, io utilizzo una variabile.

es:

premo il pulsante la prima volta---> la variabile assume valore 1--> se la viariabile ha valore 1 allora stampo su display "qualcosa".

se premo una seconda volta il pulsante la variabile assume valore 2--> se la variabile ha valore 2 stampo su display "qualcosa 2".

e così via fino all'ultima schermata che vuoi mettere. Quando arrivi all'ultima schermata la variabile assumerà il valore di partenza e il giro ricomincia.

Ci dovrebbe essere una libreria per creare menù su LCD ma non l'ho mai usata. Io per ora faccio come ti ho detto e funziona. Ciao

premo il pulsante la prima volta---> la variabile assume valore 1--> se la viariabile ha valore 1 allora stampo su display "qualcosa".

se premo una seconda volta il pulsante la variabile assume valore 2--> se la variabile ha valore 2 stampo su display "qualcosa 2".

e così via fino all'ultima schermata che vuoi mettere. Quando arrivi all'ultima schermata la variabile assumerà il valore di partenza e il giro ricomincia.

sembra una buona idea ... ma come si fa ? fino ad ora ho solo fatto cose semplici semplici =(

prova a fare una ricerca su google riguardo all'incremento di variabili con un pulsante. capito come si fa quello passi ad utilizzare l'LCD ;)

Ciao, in aggiunta a quanto già detto da @cyberhs e altri ti consiglio di memorizzare in una variabile anche l'ultima schermata che hai visualizzato in modo da non forzare l'aggiornamento dell'lcd ad ogni ciclo di loop, oltre che essere innutile è anche controproducente, a me mandava in crash lcd e programma se ad ogni ciclo aggiornavo le informazioni.