Pages: [1]   Go Down
Author Topic: libarry string, besoin d'aide  (Read 531 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Full Member
***
Karma: 0
Posts: 207
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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);
  }

}
« Last Edit: August 16, 2009, 02:32:10 am by KiliYaBB » Logged

France
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3010
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ta variable title est un tableau de caractères pas un objet String. Il faut le manipuler comme tel.
Quote
lcd.print(title.charAt(i));
devient
Code:
lcd.print(title[i]);
Si tu veux utiliser String il faut définir ta variable comme cela
Code:
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.
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 207
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 !
« Last Edit: August 16, 2009, 08:48:36 am by KiliYaBB » Logged

France
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3010
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
 
Code:
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.
« Last Edit: August 16, 2009, 09:53:11 am by fdufnews » Logged

Pages: [1]   Go Up
Jump to: