switch case e interferenza serial print

seraaaa
è possibile che lo switch case in automatico scriva il numero di case nel monitor seriale?
allego uno stralcio

void loop() {

  if (cont_pagina== 0) {  Serial.println("display di default");  scrivi_su_led(); }

  switch (cont_pagina) 
  {
   case 1:     
  //  Serial.print("indirizzo attuale");
  //  Serial.println(indirizzo);                 
  //scrivi_su_led();
  // enter_state=digitalRead(enter);
  //  if (enter_state != enter_laststate )  {  if (enter_state==HIGH)  _indirizzo(); Serial.print("indirizzo nuovo"); leggi_indirizzo();   }   break;

  case 2:    
    lc.clearDisplay(0);
    Serial.println(cont_pagina);
    lc.setDigit(0,1, cont_pagina ,false);  
    break;

  case 3:    
    lc.clearDisplay(0);
    Serial.println(cont_pagina);
    lc.setDigit(0,1,cont_pagina,false);  
    break;

  case 4:    
    Serial.println(cont_pagina);
    lc.clearDisplay(0);     
    lc.setDigit(0,1,cont_pagina,false);  
    break;

  case 5:    
    Serial.println(cont_pagina); 
    lc.clearDisplay(0);     
    lc.setDigit(0,1,cont_pagina,false);  
    break;

  default:

mettendo come commento "case 1:" sul serial monitor non appare piu il numero di case
voi che dite?

switch non scriverá niente in automatico.
Perché non stampi la variabile cont_pagina prima del switch?
Ciao Uwe

Occhio perché così come lo hai commentato, sia per case 1: che per case 2: esegue comunque il codice del case 2: ... manca difatti una break per interrompere il case 1:

Guglielmo

no nel primo case alla fine c'è il break...
perchè questo codice speravo di cusarlo come menu ma non credo possa andar bene

Nell'attuale codice che hai postato non c'è il break :stuck_out_tongue:

case 1:     
  //  Serial.print("indirizzo attuale");
  //  Serial.println(indirizzo);                 
  //scrivi_su_led();
  // enter_state=digitalRead(enter);
  //  if (enter_state != enter_laststate )  {  if (enter_state==HIGH)  _indirizzo(); Serial.print("indirizzo nuovo"); leggi_indirizzo();   }   break;

Il break è in fondo ad una linea commentata, quindi è ignorato.
Ah, altra cosa: non prendere il vizio di scrivere più istruzioni su una stessa riga. Il codice diventa illeggibile.
Ogni istruzione va su una riga.

aspi:
no nel primo case alla fine c'è il break...
...

Ohi ...

   case 1:     
  //  Serial.print("indirizzo attuale");
  //  Serial.println(indirizzo);                 
  //  scrivi_su_led();
  //  enter_state=digitalRead(enter);
  //  if (enter_state != enter_laststate )  {  if (enter_state==HIGH)  _indirizzo(); Serial.print("indirizzo nuovo"); leggi_indirizzo();   }   break;

... questo è il codice che hai postato, ed al mio paese TUTTO quello che segue i //, sulla stessa riga, è considerato commento quindi ... il break NON c'è e case 1: e case 2: eseguono lo stesso codice :wink:

Allora posta il VERO codice che ti da il problema e poi cerchiamo di capire cosa c'è ....

Guglielmo

@Leo : Ahahahahah ... ci siamo sovrapposti con la risposta :wink:

osti c avete ragione pure voi :roll_eyes:
riallego il codice vero... avevo messo tutto su una riga per occupare meno spazio sul forum

void loop() {

  //cont_pagina=encoderValue;
  if (cont_pagina== 0) {  Serial.println("display di default");  scrivi_su_led(); }

/*
  up_state= digitalRead(up);
  if (up_state != up_laststate ) 
  {  
    if (up_state==HIGH)
    {
      (cont_pagina++) ;
    } 
  }

  down_state=digitalRead(down);
  if (down_state != down_laststate)
  {
    if (down_state==HIGH )
    { 
      (cont_pagina--) ;
    }
  }

*/

  switch (cont_pagina) 
  {
 case 1:     
  //  Serial.print("indirizzo attuale");
  //  Serial.println(indirizzo);                //    se premi exit esci su schermata default   
  //scrivi_su_led();
  
  // enter_state=digitalRead(enter);
  // if (enter_state != enter_laststate )  {
  //           if (enter_state==HIGH) 
  //            _indirizzo(); 
  //           Serial.print("indirizzo nuovo"); 
  //           leggi_indirizzo();   
    }   break;

  case 2:    
    lc.clearDisplay(0);
    Serial.println(cont_pagina);
    lc.setDigit(0,1, cont_pagina ,false);  
    break;

  case 3:    
    lc.clearDisplay(0);
    Serial.println(cont_pagina);
    lc.setDigit(0,1,cont_pagina,false);  
    break;

  case 4:    
    Serial.println(cont_pagina);
    lc.clearDisplay(0);     
    lc.setDigit(0,1,cont_pagina,false);  
    break;

  case 5:    
    Serial.println(cont_pagina); 
    lc.clearDisplay(0);     
    lc.setDigit(0,1,cont_pagina,false);  
    break;

  default: 

    up_laststate = up_state;
    down_laststate= down_state;
    up_state=0;
    up_laststate=0;
  
  }      
  
}

MENTI SAPENDO DI MENTIRE !!! XD XD XD XD

Neanche quello che hai allegato è il codice "vero", perché NON ci credo che compila senza errori ...

case 1:     
  //  Serial.print("indirizzo attuale");
  //  Serial.println(indirizzo);                //    se premi exit esci su schermata default   
  //  scrivi_su_led();
  
  //  enter_state=digitalRead(enter);
  //  if (enter_state != enter_laststate )  {
  //           if (enter_state==HIGH) 
  //            _indirizzo(); 
  //           Serial.print("indirizzo nuovo"); 
  //           leggi_indirizzo();   
    }   break;

... con quella graffa prima del break; :grin: :grin: :grin:

Guglielmo

Sì ma hai sbagliato ancora perché la graffa prima del break fa parte del blocco del precedente if :wink:

Comunque, a parte questo, fai come ti ha detto Uwe, o metti un print prima dello switch oppure metti un print in ogni case.

edit:
Guglielmo stasera ci sovrapponiamo :wink:

invece compila :stuck_out_tongue:

aspi:
invece compila :stuck_out_tongue:

NO guarda ... hai di nuovo modificato qualche cosa perché, prima di scrivere il messaggio, mi sono tolto lo sfizio di provare a compilare e da errore esattamente su quella graffa (... come è logico che sia), quindi ...

Guglielmo

vero scusa mi era scappata però ho provato a mettere il break come commento e andava lo stesso.
ho riprovato con questo codice che ho postato e sul monitor seriale mi scrive ancora il numero del contatore del primo case...

Aspi ...
perdona, ma ... o pubblichi IL VERO CODICE che possiamo esaminare e cercare di capire o è inutile che continuiamo a discutere !

Ora fai un bel copia e incolla (racchiudendolo tra i tag "code") del codice che stai provando e poi vediamo ... :slight_smile:

Guglielmo