@Speedo2016 : Das war jetzt vom Ton her - hmmm - unglücklich.
Aber da ich ausnahmsweise mit guter Laune vom EInkauf zurück bin:
Zeile 10 im zweiten Tab aus Post #4 sorgt dafür, dass die Ziffern überschrieben werden. Du solltest an der Stelle die x-Position abhängig von counter jeweils um die Zeichenbreite erhöhen.
tft.setCursor(100 + counter*zeichenbreite,110); //setCursor(int16_t x, int16_t y)
Rücksetzbedingungen hast Du zwei explizite, nämlich * und #. Da dort jeweils der counter zurückgesetzt wird, setzt du damit dann auch die Ausgabeposition zurück.
Die dritte ist etwas verborgen und noch nicht korrekt behandelt: Wenn mehr Zeichen eingegeben werden als der Code lang ist (bevor mit * oder # die Eingabe abgeschlossen wird) springt zwar Deine Position zurück, aber dann überschreibst Du wieder.
An der Stelle musst Du Dich also entscheiden, was das Programm machen soll, wenn jemand mehr als sechs Ziffern eingibt: Automatische Erkennung "falscher Code" (weil zu lang) oder halt - wie es jetzt ist - wieder von vorne anfangen. Dann müsstest Du allerdings die schon eingegebenen Ziffern löschen.
In allen Fällen ist es hilfreich, wenn Du den Code verstehst. Mit der Meinung bin ich offensichtlich nicht allein. Falls es da hakt: Konkrete Frage - dann bekommst Du auch eine Antwort.