Pages: [1]   Go Down
Author Topic: switch case e interferenza serial print  (Read 674 times)
0 Members and 1 Guest are viewing this topic.
brescia
Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

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?
Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 251
Posts: 21267
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Switzerland
Online Online
Faraday Member
**
Karma: 112
Posts: 5900
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Search is Your friend ... or I am Your enemy !

brescia
Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Nell'attuale codice che hai postato non c'è il break  smiley-razz
Code:
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.
Logged


Switzerland
Online Online
Faraday Member
**
Karma: 112
Posts: 5900
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Ohi ...

Code:
  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 smiley-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 smiley-wink
« Last Edit: May 06, 2013, 07:58:13 am by gpb01 » Logged

Search is Your friend ... or I am Your enemy !

brescia
Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Code:

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;
 
  }     
 
}

Logged

Switzerland
Online Online
Faraday Member
**
Karma: 112
Posts: 5900
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

MENTI SAPENDO DI MENTIRE !!!   smiley-lol  smiley-lol  smiley-lol  smiley-lol

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

Code:
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;   smiley-mr-green smiley-mr-green smiley-mr-green

Guglielmo
Logged

Search is Your friend ... or I am Your enemy !

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sì ma hai sbagliato ancora perché la graffa prima del break fa parte del blocco del precedente if  smiley-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  smiley-wink
Logged


brescia
Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

invece compila smiley-razz
Logged

Switzerland
Online Online
Faraday Member
**
Karma: 112
Posts: 5900
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

invece compila smiley-razz

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
Logged

Search is Your friend ... or I am Your enemy !

brescia
Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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...
Logged

Switzerland
Online Online
Faraday Member
**
Karma: 112
Posts: 5900
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ... smiley

Guglielmo

Logged

Search is Your friend ... or I am Your enemy !

Pages: [1]   Go Up
Jump to: