probleme avec un String

tenez voici un exemple effectué à partir du code de mon tuto mentionné plus haut

const byte tailleMessageMax = 15;
char message[tailleMessageMax + 1]; // +1 car on doit avoir un caractère de fin de chaîne en C, le '\0'

const char marqueurDeFin = '\n';

boolean ecouter()
{
  static byte indexMessage = 0; // static pour se souvenir de cette variable entre 2 appels consécutifs. initialisée qu'une seule fois.
  boolean messageEnCours = true;

  while (Serial.available() && messageEnCours) {
    int c = Serial.read();
    if (c != -1) {
      switch (c) {
        case marqueurDeFin:
          message[indexMessage] = '\0'; // on termine la c-string
          indexMessage = 0; // on se remet au début pour la prochaine fois
          messageEnCours = false;
          break;
        case '\r': // on ignore le \r
          break;
        default:
          if (indexMessage <= tailleMessageMax - 1) message[indexMessage++] = (char) c; // on stocke le caractère et on passe à la case suivante
          else Serial.println(F("j'ignore!"));
          break;
      }
    }
  }
  return messageEnCours;
}

void setup() {
  Serial.begin(115200);
}

void loop() {
  if (! ecouter()) {
    // on a reçu le marqueur de fin
    Serial.print(F("Phrase: [")); Serial.print(message); Serial.println(F("]"));
    if (strlen(message) >= 10) { // on attend un code du genre 1111100010
      char buf1[6], buf2[6];
      memcpy(buf1, message, 5); // on copie les 5 premiers octets dans buf1
      buf1[5] = '\0'; // on termine buf1 par un caractère nul pour faire une cString
      memcpy(buf2, message + 5, 5); // on copie les 5  octets suivants dans buf2
      buf2[5] = '\0'; // on termine buf2 par un caractère nul pour faire une cString

      // ICI buf1 et buf2 sont utilsables pour faire
      // mySwitch.switchOn(buf1, buf2);

      // ici j'imprime juste pour montrer ce que ça donne
      Serial.print(F("mySwitch.switchOn(\""));
      Serial.print(buf1);
      Serial.print(F("\",\""));
      Serial.print(buf2);
      Serial.println(F("\");"));
    } else Serial.println(F("MESSAGE TROP COURT"));
  }

  // ici on peut faire autre chose

}

si je charge ce code et que j'ouvre la console série (configurée à 115200 bauds et envoyant \n ou \r\n quand on valide une entrée) et que je tape 01234ABCDE et que je valide, la console série me dit

[sub][color=purple]Phrase: [01234ABCDE]
mySwitch.switchOn("01234","ABCDE");
[/color][/sub]

On voit donc bien qu'on a correctement découpé les blocs de 5 caractères (octets)

et si je tape COUCOU, la console me dit

[sub][color=purple]Phrase: [COUCOU]
MESSAGE TROP COURT[/color][/sub]

parce que le code test si on a reçu au moins 10 caractères par le testif (strlen(message) >= 10) { (le buffer peut en comprendre 15 - défini par tailleMessageMax)