J'ai une question pourvez vous m'aider ?
Depuis hier, je me casse la tête à essayer de faire fonctionner un LCD I2C.
Je trouvais cela facile jusqu'au moment ou je suis tombé sur un os
Commençons par le commencement
Mon LCD I2C est bien connecté
5v, GNG, SDA et SDL chargées à 4.7KOhms
Adresse 0X00 (mais même problème en changeant l'adresse.
Écran 2X16 bien configuré soit dans la Lib, soit dans le SetUp (suivant la lib utilisée)
J'arrive bien a avoir du texte sur l'afficheur, donc je suppose que cela ne viens pas de là.
Description du problème
Le texte s'affiche bien
Mais jamais a la même position.
J’essaie de configurer le départ du texte soit en donnant une adresse Ligne et colonne, mais rien a faire. Suivant le nombre de caractère demandé le texte shift a chaque passage de boucle.
J’utilise pour être certain mon code un des exemple livré avec les Libs.
Donc le classique "Hello world" (mais le problème est le même avec d'autres exemple et quel que soit la Lib.
La seule solution que j'ai trouvé pour afficher correctement tu teste a la bonne place est de passer par l’envoi de chaque caractère sans utiliser de Lib LCD mais uniquement la Lib Wire et d'envoyer chaque code hexa. ce qui est somme toute un peux fastidieux. Je peux bien sur créer des fonctions qui me simplifieraient un peux la vie. Mais je mieux serait de trouver ce qui ne vas pas dans les Libs que j'utilise. Le problème est que je ne me sent pas encore capable de modifier une Lib et encore moins d'en écrire une de bout en bout...
Voici par exemple un bout de ce code utilisé qui fonctionne.
#include <Wire.h> void setup() { } void loop() { Wire.beginTransmission(0x00); //Transmission a l'adresse 0x00 Wire.send(0xFE); // Efface l'écran Wire.send(0x14); // Positionne le curseur à 0.0 Wire.endTransmission(); //Fin de transmission de la 1ere partie delay(100); Wire.beginTransmission(0x00); Wire.send(0x01); // Commence a écrire ligne 1 colonne 0 Wire.send(0x41); // A Wire.send(0x42); // B Wire.send(0x43); // C Wire.send(0x44); // D Wire.send(0x45); // E Wire.send(0x46); // F Wire.send(0x47); // G Wire.send(0x48); // H Wire.send(0x49); // I /* Wire.send(0x50); Wire.send(0x51); Wire.send(0x52); Wire.send(0x53); Wire.send(0x54); */ Wire.send(0x02); // Commence a écrire ligne 2 colonne 0 Wire.send(0x55); // U Wire.send(0x56); // V Wire.send(0x57); // W /* Wire.send(0x58); Wire.send(0x59); Wire.send(0x60); Wire.send(0x61); Wire.send(0x62); Wire.send(0x63); Wire.send(0x64); Wire.send(0x65); Wire.send(0x66); Wire.send(0x67); Wire.send(0x68); Wire.send(0x69); Wire.send(0x670); */ Wire.endTransmission(); // Fin de transmission delay(100); }
Avez vous déjà utilisé un LCD en I2C et avez vous une idée pour comprendre ce qui ce passe pour ces problèmes de Libs ?
Ha si, j'oubliais,voici la doc du LCD
http://www.lextronic.fr/~lextronic_doc/CLCD.pdf
Cdlt
Yves