Utilisation de la bibliothèque Serial

Toujours dans mes expérimentations de SERIAL, je viens de tomber sur un truc pas banal :
Je rédige un programme pour apprendre à récupérer du texte sur la ligne série.
Ce dernier étant dans une chaine, je l'affiche en retour.

Voici mon programme :
char TEXTE[21]; // Place pour 20 caractères.
byte I = 0; // Pointeur dans la chaine TEXTE. 
void setup() { Serial.begin(115200); TEXTE[0] = '\0'; }
 
void loop() {
  /* Si FIFO non vide récupérer les octets */
  while(Serial.available() > 0) {TEXTE[I] = Serial.read(); I = I++; };
  TEXTE[I] = '\0'; // Placer la sentinelle en fin de texte.
  /* Afficher la chaine contenue dans TEXTE */
  if (I > 0) {
    I = 0; // Pointer le début de la chaine TEXTE.
    while(TEXTE[I] != '\0') {Serial.write(char(TEXTE[I])); I = I++; }; };
  if (I > 0) {Serial.println(); I=0;}; // TEXTE "vidé".
 }

Vu l'écriture, il me semble que normalement le texte saisi devrait être affiché sur la même ligne. (1) Ensuite, je fais passer l'affichage à la ligne suivante pour une nouvelle saisie.
BEN ... chaque caractère de mon tableau est affiché sur une ligne différente.
Pourquoi ça ? ? ?

(1) Du reste j'ai bien tous les caractères affichés sur une ligne si j'enlève l'instruction println().