Quando cerco di stampare sul TFT, i caratteri oltre il 128 me li trasforma in unicode, anche se io ho una tabella ascii fino a 256.
tft.print("ÀÈÌÒÙ");
Iniziamo dall'inizio: quale TFT stai usando e con quale libreria?
Secondo, non ho avuto molto a che fare con display TFT ma a me non sembra che abbiano conoscenza di encoding o code page per i caratteri extra, ma possano lavorare solo con codifica ASCII (0-127).
Se così fosse anche per il tuo, temo che nelle stringhe dovrai sostituire le accentate con lettera+apice (es. "À" -> "A'") oppure evitare di usare le maiuscole.
Beh se "tft.print('À', HEX);" ti dà "C380", rimuovendo il C3 resta solo 0x80 ossia 128 che corrisponde a "ç" quindi direi che no, non corrisponde.
Nella tabella US-ASCII (sempre se il tuo display supporta questa codifica) ci sono queste corrispondenze per le vocali maiuscole accentate:
"À" = 192 = 0xC0
"È" = 200 = 0xC8
"Ì" = 204 = 0xCC
"Ò" = 210 = 0xD2
"Ù" = 217 = 0xD9
Ma comunque fai attenzione al fatto che tu quando scrivi lo sketch il file questo è Unicode, e potrebbe "interpretare" male il compilatore e/o la libreria. Quindi se il tuo display usa US-ASCII prova a stampare usando i valori dei codici per questi caratteri e vedi se funziona, esempio:
Quindi, o dico al preprocessore di usare 1252 codepage al posto di UNICODE.
Oppure ad ogni lettera accentata metto il valore tft.print("\xC0")
Oppure mi studio come ha fatto adafruit quì
Se ha il codepage 1252 (aka windows-1252, aka ISO 8859-1) si, dovrebbe bastare dirgli di usare quello. Ma mi resta ancora il dubbio che nel sorgente dello sketch ci finisca l'UNICODE. Prova e vedi.
Come vedi quella stringa, che dovrebbe contenere solo 7 caratteri, in realtà ne ha 12!
Quindi devi evitare di usare le accentate maiuscole come carattere ed usare i relativi codici esadecimali. Ad esempio se imposti la stringa così:
Uso il display solo a punti, non uso i font interni.
E si, il compilatore mi mette due caratteri ogni carattere speciale, e se al posto metto il codice numerico lo stampa correttamente.
Però c'è un qualche modo per dire al compilatore di usare la codifica che decido io?
Ok, perdonami ma non ho capito bene: visto che probabilmente (spero) usa la solita e diffusissima codifica US-ASCII, se con il mio ultimo esempio (quello con "\xC0\xC8...") stampa qualcosa e lo fa correttamente, intanto dovresti almeno aver risolto.
Non sono certo che esista, ma non credo che sia un problema di direttiva al preprocessore perché se l'editor inserisce nello sketch i caratteri speciali come Unicode (o ISO 8859-1) è un discorso di codifica del file (che sarà quindi UTF-8), e se metti nel codice un carattere esteso finisce per diventare due caratteri ed il compilatore compila quelli come sequenza di char/byte. E se il display non interpreta gli UNICODE, c'è ben poco da fare temo.
Quindi dici che basta convertire il file di testo dei sorgenti con un editor non IDE arduino ?
Notepad++ che ha queste opzioni.
Ma non so corrisponderle.