Go Down

Topic: [Résolu] Comportement écrans CLCD et LCD03 (Read 815 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy