Pages: [1]   Go Down
Author Topic: [Résolu] Comportement écrans CLCD et LCD03  (Read 700 times)
0 Members and 1 Guest are viewing this topic.
Moselle (FR)
Offline Offline
Edison Member
*
Karma: 16
Posts: 1290
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
/*
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:
/*
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
« Last Edit: May 08, 2012, 03:25:43 am by icare » Logged

2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

Moselle (FR)
Offline Offline
Edison Member
*
Karma: 16
Posts: 1290
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

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

Code:
/*
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
Logged

2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

Pages: [1]   Go Up
Jump to: