libarry string, besoin d'aide

Bonjour,

J'essaye d'utiliser la librairies String pour faire afficher " bonjour "

caractère après caratère sur un afficheur lcd 16x2

voila mon sketch, dont la compilation ne passe pas, apparemment cestr le char[16] qui ne serait pas du bon type :

#include <LiquidCrystal.h>
#include <string.h>

LiquidCrystal lcd(3, 4, 5, 6, 7, 8, 9);

char title[16] = " bonjour ";

void setup() {
lcd.begin(2, 16);
}

void loop() {
for(int i=0; i<=15;i++){
lcd.setCursor(i, 1);
lcd.print(title.charAt(i));
delay(100);
}

}

Ta variable title est un tableau de caractères pas un objet String. Il faut le manipuler comme tel.

lcd.print(title.charAt(i));

devient

 lcd.print(title[i]);

Si tu veux utiliser String il faut définir ta variable comme cela

String title = String(longueur_de_la_chaine);

Jette un oeil sur les exemples qui se trouvent dans le répertoire exemple de la librairie String.

ok, merci

ca marche presque (ca compile) sauf que l'IDE me dit :

pour char title[10] = "bonjournos";

"initialinzer-string for arrays of chars is too long"

alors que bonjournos comprend bien 10 caractères

quand je mets char title[11] = "bonjournos";

ca passe, pourquoi ?

Merci !

Il doit y avoir un caractère pour indiquer la fin de la chaine afin que les routines de manipulation de chaines s'y retrouvent. Ce caractère s'ajoute à la fin de la chaine. Donc pour une chaine de 10 caractères, il faut réserver de la place pour 11..
Ce caractère doit être explicitement mis si tu définis ta chaine dans un tableau en ajoutant un élément à la fin:

title[dernier_element]=0;
ou
 title[dernier_element]='\0';

si tu définis ta chaine avec des guillemets (title="titre") alors le terminateur est ajouté automatiquement par le compilateur.

Si tu travailles avec un tableau et que tu oublies le terminateur, les routines de manipulation de chaines ne trouvent pas la fin de la chaine et dans le meilleur des cas cela affiche des chaines de ouf avec des caractères bizzares dans le pire des cas cela cause un plantage du programme par écrasement de données.