switch case

buona sera a tutti.
sto facendo uno switch caseper un lcd 4x20.
per andare al case 1 e 2 valuto due variabili.
quandole variabili sono vere, come riesco a poter accedere al case 3 e 4 usando un pulsante che scorre le 2 variabili e poi torna a quella vera tra 1 e 2

boolean minni = digitalRead(8) ;           
  if (minni == LOW && old_minni == HIGH) {  
lcd_page = 3;
lcd_page = 4;

if (pippo) {
lcd_page = 1;
}
if (pluto) {
lcd_page = 2;
}

Non ho ben capito il tuo problema.
Parli di voler accedere a due case di uno switch che nel codice non è presente. Di cosa hai realmente bisogno?

mi serviva sapere come chiamare
lcd_page = 3 e lcd_page = 4 con un pulsante
anche se
le 2 if che valutano lcd_page = 4 o lcd_page = 3 una di esse sia vera

Dipende se il pulsante ti serve "a stati" o meno ma comunque: se ho capito bene dalla lettura di un pulsante vuoi chiamare lcd_page = 3 e lcd_page = 4 indipendentemente da pippo e pluto.

if (minni == HIGH) {
lcd_page = 3;
lcd_page = 4;
}

Ho capito bene?

si, hai capito bene , il pulsante mi serve a stati quindi cosi
1 pressione lcd_page = 3;
2 pressione lcd_page = 4;
3 pressione o lcd_page1 0 lcd_page 2

Per fare ciò da te richiesto devi usare 3 differenti pulsanti e 3 differenti ingressi digitali oppure 3 differenti pulsanti ed un solo ingresso analogico (nel caso avessi una disponibilità di pin ridotta).

ok, vedo di limitarlo solo a 1 cosi forse mi salvo
il codice e' cosi corretto? 1 pagina in piu' e solo 1 pulsante
if (minni == HIGH) {
lcd_page = 3;

Non mi è ben chiaro cos'è lcd_page = 3, ma comunque se alla pressione del tasto devi chiamare questo lcd_page = 3, allora si è corretto

lcd_page = 3 e ’ la 3 pagina dello switch case , la chiamo e deve ignorare gli if pippo e pluto

Copia tutto il codice per intero perché in questo modo non riesco a capire a che switch case fai riferimento e non son certo se ti ho risposto correttamente per quello di cui hai bisogno

 if (P_LCD == LOW && old_lcd == HIGH) {   
   
   
    lcd_page = 4; 
  
  }
  old_lcd =P_LCD;

if (millis() - dopo < 3000 ) {//se dopo e' superiore a 3000
    //disp = true;                  //scrivo altro
    if (data.conf_acc) {
      lcd_page = 1;
      
    }
    if (!data.conf_acc) {
      lcd_page = 2;
      
    }
  }

  if (millis() - dopo > 3000) {//se dopo e' superiore a 3000
    old_tot = 0;
    lcd_page = 3;
  }
  switch (lcd_page) {
    case 1: {
 }
        break;

    } case 2: { //Design of page 2

   
      }
      break;

    case 3: {   //Design of page 3
}
break;
 case 4: {   //Design of page 3
}
      break;
  }
}//switch end

Non hai ancora incluso tutto il codice.
Non si capisce, ad esempio, a cosa sono inizializzate P_LCD, old_lcd, disp.
Inoltre cosa intendi con quei commenti //design of page 2/3.
Infine che librerie stai usando?

alla fine ho risolto cosi
e solo il pezzo per scegliere il numero di lcd_page
sono tutte bool tranne dopo, che tiene il tempo, e p che e’ un int

 boolean P_LCD  = digitalRead(LCD) ;             //cosi evita i
 if (!P_LCD && stato == 0) {
    p = p + 1;
    stato =  1;
  }
  else if (P_LCD) {
    stato =  0;
  }
 if (millis() - dopo < 3000 ) {//se dopo e' superiore a 3000
    //disp = true;                  //scrivo altro
    if (data.conf_acc && p == 0) {
      lcd_page = 1;
 }
    if (!data.conf_acc && p == 0) {
      lcd_page = 2;
 }
  }
if (millis() - dopo > 3000 && p == 0) {//se dopo e' superiore a 3000
    old_tot = 0;
    lcd_page = 3;
  }
  if (p == 1) {   //rimbalzi del
    lcd_page = 4;
  }
  
 if (p== 5) {
  p = 0;
  }

ho modificato il codice e mi funziona correttamente, e sono riuscito ad mettere piu' pagine, mi ci sono picchiato ma ci sono riuscito!!!
c'e' quanche miglioria da fare
??