Problema nel visualizzare una scritta

Salve, con questo codice, vorrei poter visualizzare un messaggio ogni volta che premo il pulsante oltre all’ accensione del led.
Adopero un pulsante ed ad ogni pressione accendo il led sucessivo.
Al momento ottengo accensione e spegnimemto dei led quando premo il pulsante, ma non visualizzo la scritta sul display GLCD. Per cortesia mi dite dove sbaglio?
Per non pasticciare troppo il codice la parola lo inserita solo nel primo case.
Grazie Guido.

 // il programma conta quante volte il pulsante viene premuto, per un ciclo di 3 pressioni,  
    // ad ogni pressione del pulsante si accende un led per volta      
    // Il controllo del numero di volte in cui il pulsante viene premuto viene fatto con l'istruzione "case"  
      
    #define BUTTON 7                                  // pin di input a cui è collegato il pulsante  
    #define LED1 22                                   // LED collegato al pin digitale   
    #define LED2 24                                   // LED collegato al pin digitale   
    #define LED3 26                                   // LED collegato al pin digitale   
    
      
    // Variabili  
    int ContatorePulsantePremuto = 0;                   // conta il numero di volte che il pulsante è premuto buttonPushCounter   
    int StatoPulsante = 0;                              // stato corrente del pulsante  
    int StatoPulsantePrecedente = 0;                    // stato precedente del pulsante  
    int i = 0;                                          // variabile per conteggio spike 

    #include "U8glib.h" // Includere questa libreria nella cartella libraries di Arduino.

    U8GLIB_ST7920_128X64_1X u8g(13, 11, 10); // SPI Com: e=13,rw=11,rs=10 //pin su Arduino Mega per il mio display.
      
    void setup() {  
      pinMode(BUTTON, INPUT);                           // imposta il pin digitale come output  
      pinMode(LED1, OUTPUT);                            // imposta il pin digitale come input  
      pinMode(LED2, OUTPUT);                            // imposta il pin digitale come input  
      pinMode(LED3, OUTPUT);                            // imposta il pin digitale come input  
      
      
    }  
      
    void draw() {  
      StatoPulsante = digitalRead(BUTTON);              // legge il valore dell'input e lo conserva  
      
      if (StatoPulsante != StatoPulsantePrecedente) {   // compara lo stato del pulsante attuale con il precedente
        
        // Pausa che filtra gli spike
           for  (i=0;i<32000; i++) {                   //il ciclo for serve perche alla pressione del pulsante non salti al led sucessivo 
           }
 
        if (StatoPulsante == HIGH) {                    // se lo stato è cambiato incrementa il contatore 

           
          // se lo stato corrente è alto, il pulsante è passato da off a on  
          ContatorePulsantePremuto++;  
      
          switch (ContatorePulsantePremuto) {  
          case 1:  // controlla se il pulsante è stato premuto una volta  
            //Comandi per stampare la scritta.
            u8g.setFont(u8g_font_unifont);
            u8g.setPrintPos(30, 35);   
            u8g.print("Ciao"); 
            delay (1000);
              
            digitalWrite(LED1, HIGH);                                 // accende il LED    
            
            break;  
          case 2:  // controlla se il pulsante è stato premuto due volte  
            
             
            digitalWrite(LED1, LOW);                                 // accende il LED    
            digitalWrite(LED2, HIGH);                                 // accende il LED    
            
            break;  
          case 3:  // controlla se il pulsante è stato premuto tre volte  
           
            digitalWrite(LED2, LOW);                                 // accende il LED    
            digitalWrite(LED3, HIGH);                                 // accende il LED    
             
            break;  
          case 4:  // controlla se il pulsante è stato premuto quattro volte  
            
            digitalWrite(LED3, LOW);                                 // accende il LED    
               
            
            break;  
          }  
        }   
      }  
      
      // salva lo stato corrente nella variabile che indica lo stato precedente per il loop successivo   
      StatoPulsantePrecedente = StatoPulsante;  
      
      // controlla se il pulsante è stato premuto quattro volte se vero indica che è finito il ciclo  
      // il led lampeggia 2 volte per 50 millisecondi  
      // vengono inizializzate nuovamente le variabili  
      // si riavvia il ciclo  
      
      if (ContatorePulsantePremuto > 4) {       
       
        // inizializzazione delle variabili  
        ContatorePulsantePremuto = 0;  
        StatoPulsante = 0;  
        StatoPulsantePrecedente = 0;  
        
      }  
    }  


    void loop() {
 
  u8g.firstPage();  
  do {
    draw();
  } while( u8g.nextPage() );
   
  delay(50);
}

Ma senza il pulsante, hai provato il display, funziona senza problemi con la U8glib ?

P.S. questa è una vera bruttura.
for (i=0;i<32000; i++) { } //il ciclo for serve perche alla pressione del pulsante non salti al led sucessivo
non è altro he una pausa, tra l'altro dipende dalla velocità dalla MCU. Meglio un delay() con un tempo prefissato. Ovvero delay(10); sono 10 millisecondi, quel ciclo quanto durà ? Boh !!

Ciao, si il display funziona. Grazie anche per la dritta del delay.

Puoi verificare con Monitor Seriale, via USB, stampando frasi con Serial.println("qualcosa"); ??
Così fai un pò di debug. Piazza delle Serial.println e vedi se passa da certi posti

Chiedo scusa

Risolto problema mettendo un ciclo if...else

In questo codice ho inserito più informazioni per scrivere sul disply GLCD

// Il programma conta quante volte il pulsante viene premuto, per un ciclo di 3 pressioni,  
    // ad ogni pressione del pulsante si accende un led per volta      
    // Il controllo del numero di volte in cui il pulsante viene premuto viene fatto con l'istruzione "case"  
      
    #define BUTTON 7                                  // pin di input a cui è collegato il pulsante  
    #define LED1 22                                   // LED collegato al pin digitale   
    #define LED2 24                                   // LED collegato al pin digitale   
    #define LED3 26                                   // LED collegato al pin digitale   
    
      
    // Variabili  
    int ContatorePulsantePremuto = 0;                   // conta il numero di volte che il pulsante è premuto buttonPushCounter   
    int StatoPulsante = 0;                              // stato corrente del pulsante  
    int StatoPulsantePrecedente = 0;                    // stato precedente del pulsante  
                                           // variabile per conteggio spike 

    #include "U8glib.h" // Includere questa libreria nella cartella libraries di Arduino.

    U8GLIB_ST7920_128X64_1X u8g(13, 11, 10); // SPI Com: e=13,rw=11,rs=10 //pin su Arduino Mega per il mio display.

    const uint8_t rook_bitmap[] PROGMEM = {
  0x00,         // 00000000 
  0x55,         // 01010101
  0x7f,         // 01111111
  0x3e,         // 00111110
  0x3e,         // 00111110 
  0x3e,         // 00111110
  0x3e,         // 00111110 
  0x7f          // 01111111
  };
        
    void setup() {  
      pinMode(BUTTON, INPUT);                           // imposta il pin digitale come output  
      pinMode(LED1, OUTPUT);                            // imposta il pin digitale come input  
      pinMode(LED2, OUTPUT);                            // imposta il pin digitale come input  
      pinMode(LED3, OUTPUT);                            // imposta il pin digitale come input       
      
    }  
      
    void draw() {  
      StatoPulsante = digitalRead(BUTTON);              // legge il valore dell'input e lo conserva  
      
      if (StatoPulsante != StatoPulsantePrecedente) {   // compara lo stato del pulsante attuale con il precedente
        
        // Pausa che filtra gli spike                     
           delay (10);
 
        if (StatoPulsante == HIGH) {                    // se lo stato è cambiato incrementa il contatore 

           
          // se lo stato corrente è alto, il pulsante è passato da off a on  
          ContatorePulsantePremuto++;  
      
          switch (ContatorePulsantePremuto) {  
          case 1:  // controlla se il pulsante è stato premuto una volta  
            
            digitalWrite(LED1, HIGH);                                 // accende il LED    
            
            break;  
          case 2:  // controlla se il pulsante è stato premuto due volte  
            
             
            digitalWrite(LED1, LOW);                                 // accende il LED    
            digitalWrite(LED2, HIGH);                                 // accende il LED    
            
            break;  
          case 3:  // controlla se il pulsante è stato premuto tre volte  
           
            digitalWrite(LED2, LOW);                                 // accende il LED    
            digitalWrite(LED3, HIGH);                                 // accende il LED    
             
            break;  
          case 4:  // controlla se il pulsante è stato premuto quattro volte  
            
            digitalWrite(LED3, LOW);                                 // accende il LED                  
            
            break;  
          }  
        }   
      }  
      
      // salva lo stato corrente nella variabile che indica lo stato precedente per il loop successivo   
      StatoPulsantePrecedente = StatoPulsante;  
      
      // controlla se il pulsante è stato premuto quattro volte se vero indica che è finito il ciclo  
      // il led lampeggia 2 volte per 50 millisecondi  
      // vengono inizializzate nuovamente le variabili  
      // si riavvia il ciclo  
      
      if (ContatorePulsantePremuto > 4) {       
       
        // inizializzazione delle variabili  
        ContatorePulsantePremuto = 0;  
        StatoPulsante = 0;  
        StatoPulsantePrecedente = 0;          
        
      }
      //Ciclo per visualizzare sul disply GLCD
      if (ContatorePulsantePremuto == 1){        
         //Comandi per stampare la scritta.
            u8g.setFont(u8g_font_unifont);
            u8g.setPrintPos(30, 35);   
            u8g.print("Ciao");            
        }//if 1
        
       if (ContatorePulsantePremuto == 2){        
          // Comandi per sdoppiare la scritta
           u8g.setFont(u8g_font_unifont);
  
          // pointer to strings in flash memory can be stored in a special type
          const __FlashStringHelper *flash_ptr;
  
          // the result of the F() macro can be assigned to this pointer
          flash_ptr = F("Hello World!");
  
          // this pointer can be used as argument to the draw procedures
          u8g.drawStr( 0+1, 20+1, flash_ptr);
          u8g.drawStr( 0, 20, flash_ptr);           
        }//if 2 

        if (ContatorePulsantePremuto == 3){        
         //Comando per disegnare Bitmap
         u8g.drawBitmapP( 0, 0, 1, 8, rook_bitmap);          
        }//if 3
         
    }//draw  


    void loop() {
 
  u8g.firstPage();  
  do {
    draw();
  } while( u8g.nextPage() );
   
  delay(50);         
   
}