problema IRremote e shiftout

Ciao a tutti.
Sto tentando di mettere insieme 3 progetti funzionanti ma che insieme non funzionano:
1° Ho recuperato il sensore ir da un ricevitore satellitare rotto, l'ho collegato e funziona, stampa su seriale i codici del telecomando.
2° Ho collegato un display con chip HD44780, ho provato prima con la libreria LiquidCrystal e funziona, poi mi sono scritto il codice da 0 leggendomi il datasheet e funziona anche così.
3° Ho messo un 74HC595 tra l'arduino e l' lcd, ho modificato il codice che ho scritto e usando shiftout sono riuscito a farlo funzionare.

Ora ho collegato il 1° schema (il ricevitore ir) a quello con lcd (3°)
I pin sono così:

IR out -> pin 6
74HC595 DS -> pin 4
74HC595 STcp -> pin 2
74HC595 SHcp -> pin 7

void setup()
{
  lcd.Init();
  lcd.CursorOn(false);

  last_time = millis();
  irrecv.enableIRIn(); // Start the receiver
  irrecv.blink13(true);
  
  Serial.begin(9600);
}
  if (irrecv.decode(&results))
  {
    if ((millis() - last_time) > 1000)
    {
      last_time = millis();
      for(int i = 0; i < (sizeof(Codes)/sizeof(int)); i++)
      {
         if (Codes[i] == results.value)
         {
           Serial.println(Names[i]);
           
           if (results.value == 0xA8B92)
           {
             int X = 250;
             lcd.w1("                ");  delay(X);
             lcd.w1("               1");  delay(X);
             lcd.w1("              12");  delay(X);
             lcd.w1("             123");  delay(X);
             lcd.w1("            1234");  delay(X);
             lcd.w1("           12345");  delay(X);
             lcd.w1("          123456");  delay(X);
             lcd.w1("         1234567");  delay(X);
             lcd.w1("        12345678");  delay(X);
             lcd.w1("       123456789");  delay(X);
             lcd.w1("      1234567890");  delay(X);
             lcd.w1("     12345678901");  delay(X);
             lcd.w1("    123456789012");  delay(X);
             lcd.w1("   1234567890123");  delay(X);
             lcd.w1("  12345678901234");  delay(X);
             lcd.w1(" 123456789012345");  delay(X);
             lcd.w1("1234567890123456");  delay(X);
             lcd.w2(false, "2012  2012  2012");   delay(X);
             lcd.w2(true, " ");   delay(X);  
             lcd.w2(false, "2012  2012  2012");   delay(X);
             lcd.w2(true, " ");   delay(X);  
             lcd.w2(false, "2012  2012  2012");   delay(X);
           }           
           i = 9001; // esce dal loop 
         }
      }
    }
    irrecv.resume();
  }

il codice senza if (results.value == 0xA8B92) { .... } è lo stesso del 1° schetch quindi funziona, quello dentro l'if è lo stesso del 3° e funziona anche quello
Premendo tutti i tasti del telecomando tranne 0xA8B92 tutto funziona come dovrebbe, vedo sulla seriale quello che ho premuto, premendo 0xA8B92 entra dentro l'if e inizia a scrivere sul'lcd però si blocca a metà circa, l'lcd si svuota e non vedo piu niente sulla seriale premendo gli altri tasti, però il led sul pin 13 si accende...

Sono ore che controllo ma mi sembra tutto giusto, possibile che IRremote dia problemi a shiftout ?

Potrebbe anche essere un problema di SRAM esaurita. Quante stringhe hai messo nel tuo sketch? Perché questo è un piccolo frammento, giusto?

Potresti provare, se hai l'IDE 1.0, a mettere le stringhe in Flash.

Ho provato a riscrivere tutto e non mi da il problema...
Forse c'è un problema nella libreria che ho fatto per l'lcd non capisco però quale sia visto che è lo stesso codice che nello schetch unico non da problemi :cold_sweat:
Ora provo a riscrivermi la libreria magari trovo l'errore :disappointed_relieved: