Go Down

Topic: [Résolu] Comportement écrans CLCD et LCD03 (Read 740 times) previous topic - next topic

icare

May 07, 2012, 11:34 pm Last Edit: May 08, 2012, 10:25 am by icare Reason: 1
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 :

Code: [Select]
/*
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 :

Code: [Select]
/*
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
2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

icare

Bonjour,

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

Code: [Select]
/*
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
2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

Go Up