Modificare Testo stampato su LCD

Ho trovato in rete un codice che potrebbe fare al caso mio, ve lo cito:

    #include <LiquidCrystal.h>
    int in=8; //AVANTI
    int in2=7; //CAMBIO LETTERA


    int a = 0;
    int b = 0;
    int c= 0;
    int avanti = 0;
    int cambio = 0;
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

    void setup() {
      pinMode(in,INPUT);
      pinMode(13,OUTPUT);
      digitalWrite(13,HIGH); 
      lcd.begin(16, 2);
      lcd.print(" www.linuxmx.it ");
      delay(3000); lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Mi chiamo:");
       
    }

    void loop() {
      avanti = digitalRead(in);
      cambio = digitalRead(in2);
     
      if (cambio == 1){
      b=b +1;

     
      lcd.setCursor(a, 1);
     
      if (b == 1){lcd.print("a");  }
      if (b == 2){lcd.print("b");  }
      if (b == 3){lcd.print("c");  }
      if (b == 4){lcd.print("d"); }
      if (b == 5){lcd.print("e"); }
      if (b == 6){lcd.print("f");  }
      if (b == 7){lcd.print("g");  }
      if (b == 8){lcd.print("h");  }
      if (b == 9){lcd.print("i");  }
      if (b == 10){lcd.print("l");  }
      if (b == 11){lcd.print("m");}
      if (b == 12){lcd.print("n");  }
      if (b == 13){lcd.print("o");  }
      if (b == 14){lcd.print("p"); }
      if (b == 15){lcd.print("q");  }
      if (b == 16){lcd.print("r"); }
      if (b == 17){lcd.print("s");  }
      if (b == 18){lcd.print("t");}
      if (b == 19){lcd.print("u");  }
      if (b == 20){lcd.print("v");  }
      if (b == 21){lcd.print("z"); }
      if (b > 21){b=0;  }

      }
     
      if (avanti == 1){
        a = a + 1;
        b=0;
        delay(250);
      }
    delay(150);
     
    }

Sicuramente si potrebbe gestire meglio con un Array, solo che non ho idea di come fare per salvare alla fine il testo scritto, su eeprom.

La mia idea era di dichiarare una variabile contenente il testo standard esempio:

 int Preset01 = Primo Preset    //Testo standard

e poi richiamarlo dal loop alla pressione del button relativo.

  if (debounce(mcp01_b2)) 
  {
    mcp02.digitalWrite(mcp02_L2, HIGH);
    // questo è il segnale Midi che può essere modificato tramite LCD ed il valore è il 2 che può variare da 0-127 o 1-128.
    MIDI.send(ProgramChange,10,0,2);  
    lcd.clear();
    lcd.setCursor(0, 0);
    // questo è il testo che può essere modificato tramite LCD.
    lcd.print(Preset01);   // Su LCD viene stampato il Testo presente dentro la Variabile Preset01

Se non sbaglio dovrei annidare dentro "if (debounce(mcp01_b2))" un if che gestisce la Programazione esempio:

 if (debounce(mcp01_b2)) 
  {
    mcp02.digitalWrite(mcp02_L2, HIGH);
    // questo è il segnale Midi che può essere modificato tramite LCD ed il valore è il 2 che può variare da 0-127 o 1-128.
    MIDI.send(ProgramChange,10,0,2);  
    lcd.clear();
    lcd.setCursor(0, 0);
    // questo è il testo che può essere modificato tramite LCD.
    lcd.print(Preset01);   // Su LCD viene stampato il Testo presente dentro la Variabile Preset01
          if (debounce(ProgramButton));
          { 
          // qui metto tutta la parte che gestisce i caratteri e salva su eeprom, riguardante il preset01.
}

Come logica potrebbe funzionare?