[Résolu] Comportement écrans CLCD et LCD03

Bonsoir à tous,
Sur les conseils de Barbudor, j'ai réussi à faire fonctionner correctement mon écran CLCD Comfile via le bus I2C. Comme je disposais également d'un afficheur LCD03 (écran + clavier), j'ai entrepris de faire une interface logicielle pour le piloter à partir de l'Arduino.
La plus part des commandes fonctionnent mais l'affichage du texte est un peu surprenant.

Pour l'afficheur CLCD :

CLCDPrint("Bonjour"); donne à l'écran Bonjour via la fonction :

/*
Fonction destinée à afficher du texte sur l'afficheur CLCD Comfile
*/
void CLCDPrint(char *str) {
  Wire.beginTransmission(0x00);  //Adresse esclave 0x00 et Start 
  while(*str)                    //On arrête sur le caractère nul '\0'marqueur
                                 //de fin d'une chaine de caractères en C
    Wire.write(*str++);          //Envoi les caractères et passe au suivant
  Wire.endTransmission();        //Stop    
}

Pour l'afficheur LCD03 :

CLCDPrint("Bonjour"); donne à l'écran onjour via la fonction :

/*
Fonction destinée à afficher du texte sur l'afficheur LCD03
*/
//void LCD03Print(char Texte[]) {
void LCD03Print(char *str) {
  Wire.beginTransmission(0x63);  //Adresse esclave 0x63 et Start 
  while(*str)                    //On arrête sur le caractère nul '\0'marqueur
                                 //de fin d'une chaine de caractères en C
    Wire.write(*str++);          //Envoi les caractères et passe au suivant
//  Wire.write(Texte);
  Wire.endTransmission();        //Stop    
}

Je n'arrive pas à comprendre pourquoi cette différence !!!

Si j'espionne le bus I2C je constate que tous les caractères de Bonjour sont transmis :

63> 42+ 6F+ 6E+ 6A+ 6F+ 75+ 72+
** B o n j o u r**

Par contre CLCDPrint(" Bonjour"); donne à l'écran Bonjour (en mettant un espace devant le B)
On pourrait croire que ce défaut de fonctionnement vient de l'afficheur mais l'utilisation d'un micro-contrôleur Cubloc donne un résultat correcte.

Si une personne à une idée sur ce dysfonctionnement, je suis preneur.
Merci pour votre aide
Icare

Bonjour,

J'ai trouvé l'origine du dysfonctionnement, il manquait l'adressage du registre d'écriture.

/*
Fonction destinée à afficher du texte sur l'afficheur LCD03
*/
//void LCD03Print(char Texte[]) {
void LCD03Print(char *str) {
  Wire.beginTransmission(0x63);  //Adresse esclave 0x63 et Start
  Wire.write(0x00);      //-----------------------------------------------------------> On rajoutant cette ligne tout rentre dans l'ordre : faut indiquer le registre d'écriture
  while(*str)                    //On arrête sur le caractère nul '\0'marqueur
                                 //de fin d'une chaine de caractères en C
    Wire.write(*str++);          //Envoi les caractères et passe au suivant
//  Wire.write(Texte);
  Wire.endTransmission();        //Stop

A bientôt
Icare