Si infatti poco fa ho modificato la funzione:
fuori dalla funzione ho questo:
char StringWithSpaces[14];
questa è la nuova funzione:
char *printMenuItem2(byte id_lingua2, byte id_stringa2)
{
String stringaMenu = multiliguaArray2[id_lingua2][id_stringa2];
String stringaSpazi;
//char stringa[] = multiliguaArray2[id_lingua2][id_stringa2];
int lenght = stringaMenu.length();
if(lenght >= 14)
{
stringaMenu.toCharArray(StringWithSpaces, 14);
return StringWithSpaces;
}
byte spaces = (((LCD_COLONNE - 2) - lenght) / 2);
char spazio = ' ';
for(int x=0; x<spaces; x++)
{
stringaSpazi = stringaSpazi + spazio;
}
//StringWithSpaces2[spaces] = '\0';
stringaSpazi = stringaSpazi + stringaMenu;
stringaSpazi.toCharArray(StringWithSpaces, 14);
return StringWithSpaces;
}
Dentro la funzione uso String, alla fine converto String e lo copia nel char StringWithSpaces.
Il programma in questo modo non si blocca, ma menu beckend, se faccio una cosa del genere:
MenuItem photo_tool = MenuItem(printMenuItem2(ITA,MENU_STRUMENTI));//Nomi del menu (PHOTOTOOL)
MenuItem settings = MenuItem(printMenuItem2(ITA,MENU_IMPOSTAZIONI)); //Nomi del menu (IMPOSTAZIONI)
Sfogliando il menu mi restituisce sempre l'ultimo elemento , in questo caso IMPOSTAZIONI, anche dove dovrebbe esserci strumenti...