Re,
fredebutant:
Slt,
J'essaie avec les deux codes proposés dans les exemples de la version 1.0.6 (arduino). Raccordement des afficheurs avec des cables connecteurs (pas de soudure) . Je pense pas que le problème vienne de là, ils fonctionnent tout les deux indépendamment avec d'autres codes
/*
Programme : Affichage CLCD via I2C
création : 04/05/2012 - mise à jour : 10/05/2012
version : 1.0 - Utilisation via I2C
1.1 - Création bibliothèque clcd
auteur : Patrice Seibel
support : Arduino Duemilanove
/
/
Le programme exploite l'afficheur CLCD204 de la société Comfile qui est destiné à être
utilisé avec les micro-contrôleurs de la gamme Cobloc via le bus Cunet.
Les fonctions implantées sont :
- Locate X ESC 'L' x y + 100 microe sec
- Print X texte à afficher
- CsrOn (Curseur On) X ESC 'S'
- CsrOff (Curseur Off) X ESC 's'
- Backlight On X ESC 'B'
- Backlight Off X ESC 'b'
- Cls (Efface écran) X ESC 'C' + 15 ms
- Home (équivalent à Locate 0,0) X ESC 'H'
- Print 1 (Début première ligne) X 01
- Print 2 (Début deuxième ligne) X 02
- Print 3 (Début troisième ligne) X 03
- Print 4 (Début quatrième ligne) X 04
- Création caractère X ESC 'D' x1 x2 x3 x4 x5 x6 x7 x8
autres
- SuperPrint (équivalent Locate + Print) X
/
//************************************************************************************
//Directives
//*************************************************************************************
#include "Wire.h"
#include "CLCD.h"
#define LED 9 //Pin 9 pour la led
//*************************************************************************************
//Déclaration des variables
//*************************************************************************************
CLCD lcd;
int i = 0; //Variable de comptage et décomptage
float TEMPS = 500; //Pause
float ATTENTE = 1000; //Attente
char Dummy[21] = "Hello world";
char test[] = "";
//*************************************************************************************
//Initialisation
//*************************************************************************************
void setup()
{
pinMode(LED, OUTPUT); //Met la pin en sortie
lcd.backLight_on(); //Eteint backlight
delay(ATTENTE); //Attente
lcd.cls(); //Efface l'écran
delay(ATTENTE); //Attente
lcd.backLight_off(); //Eteint backlight
delay(ATTENTE); //Attente
lcd.backLight_on(); //Allume backlight
lcd.locate(19,0); //Positionne le curseur en 19,0
delay(ATTENTE); //Attente
lcd.locate(5,2); //Positionne le curseur en 5,2
lcd.print("Coucou"); //Affiche le texte à la position courante du curseur
delay(ATTENTE); //Attente
lcd.locate(2,0); //Positionne le curseur en 5,2
lcd.print (Dummy); //Affiche le message de la variable Dummy
lcd.curseurOff(); //Efface le curseur
delay(ATTENTE); //Attente
delay(ATTENTE); //Attente
lcd.locate(0,1); //Positionne le curseur
lcd.curseurOn(); //Affiche le curseur
delay(ATTENTE); //Attente
lcd.hline0(); //Curseur en début ligne 0
delay(ATTENTE); //Attente
lcd.hline1(); //Curseur en début ligne 1
delay(ATTENTE); //Attente
lcd.hline2(); //Curseur en début ligne 2
delay(ATTENTE); //Attente
lcd.hline3(); //Curseur en début ligne 3
lcd.print("Fin"); //Affiche le message
delay(ATTENTE); //Attente
lcd.superPrint(16,1,"ips"); //Positionne le curseur et affiche le texte
delay(ATTENTE);
lcd.print(">");
//Création caractère personnalisé oméga
lcd.carac(0x08,0x04,0x0A,0x11,0x11,0x0A,0x0A,0x1B,0x00);
lcd.locate(10,3); //Positionne le curseur
lcd.cls();
lcd.locate(19,3);
lcd.print("\x08"); //Affiche le caractère perso oméga
lcd.print("\x08"); //Affiche le caractère perso oméga
delay(ATTENTE); //Attente
lcd.curseurOff(); //Eteint le curseur
}
//*************************************************************************************
//Boucle d'exploitation (sans fin)
//*************************************************************************************
void loop()
{
for(i = 0; i <= 255; i++) { //Boucle de 0 à 254 (allumage)
analogWrite(LED, i); //Fixe la luminosité
delay(10); //Pause de 10 ms pour laisser le temps de
//Stabilisation à analogWrite
}
delay(TEMPS); //Attente TEMPS ms
for(i = 255; i >= 0; i--) { //Boucle de 255 à 1 (extinction)
analogWrite(LED, i); //Règle la luminosité
delay(10); //Pause 10 ms
}
delay(TEMPS); //Attente TEMPS ms
}
Je peux téléverser mais pas d'affichage, j'ai un doute sur le fait que ce code soit compatible avec mes afficheurs [u]"l'afficheur CLCD204[/u] "
Il faudrait regarder l'adresse I2C de l'afficheur dans CLCD.h ou .cpp, en général il y a peu de différence sur ce type de LCD
fredebutant:
Avec le deuxième code "Multiple LCD", là c'est mieux mais problème également
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd1(0x26,16,2); // set the LCD address of the first lcd to 0x26 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd2(0x27,16,2); // set the LCD address of the second lcd to 0x27 for a 16 chars and 2 line display
void setup()
{
lcd1.init(); // initialize the first lcd
lcd2.init(); // initialize the second lcd
// Print a message on the first LCD.
lcd1.backlight();
lcd1.print("Hello, #1 world!");
// Print a message on the second LCD.
lcd2.backlight();
lcd2.print("Hello, #2 world!");
}
void loop()
{
}
Les deux afficheurs fonctionnent mais affichent la même valeur (" Hello, #2 world!")
Un problème de librairie ?
Non un problème d'adresse I2C, ils sont tous les deux en 0x20 (au sens Arduino puisqu'on tient pas compte du bit R/W)
Si tu faits un pont sur A0 tu auras l'adresse 0x21 pour le second LCD.