Zarb94:
Bonjour,
J'ai moi aussi un problème avec mon lcd 20x4 en i2c avec un PCF8574T adr 27 (par défaut).
Il semble ne pas réagir à ce que je televerse. Par principe, j'ai contrôlé avec le scanner, essayé le bout de code proposé par Artouste, ça ne fonctionne pas. Je suis au fond du lac.
Merci pour votre aide précieuse.
bonjour
si ton LCD est equipé avec un retroeclairage , il est déjà simple de voir si la librarie est fonctionnelle
faire qq backlight on et off.
attention aussi à aune chose , la gestion du contraste = ne pas oublier de regler le potentiometre sur le module I²C , la zone utile est faible.
copie de la lib I²C que j'utilise
programme de test simple avec qq backlight au reset
#include <Wire.h> // Comes with Arduino IDE
// Get the LCD I2C Library here:
// https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
// Move any other LCD libraries to another folder or delete them
// See Library "Docs" folder for possible commands etc.
#include <LiquidCrystal_I2C.h>
/*-----( Declare Constants )-----*/
//none
/*-----( Declare objects )-----*/
// set the LCD address to 0x20 for a 20 chars 4 line display
// Set the pins on the I2C chip used for LCD connections:
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address
long sec=0;
long pm=0;
byte ad;
/*-----( Declare Variables )-----*/
byte c0[8] = {17,10,17,21,21,17,10,17};
byte c1[8] = {31,17,17,17,17,17,17,31};
byte c2[8] = {25,21,19,17,19,21,25,0};
byte c3[8] = {3,3,4,9,18,4,24,24};
byte c4[8] = {24,24,4,18,9,4,3,3};
;
//none
void setup() /*----( SETUP: RUNS ONCE )----*/
{
Serial.begin(9600); // Used to type in characters
lcd.begin(20,4); // initialize the lcd for 20 chars 4 lines and turn on backlight
lcd.createChar(0, c0);
lcd.createChar(1, c1);
lcd.createChar(2, c2);
lcd.createChar(3, c3);
lcd.createChar(4, c4);
// ------- Quick 3 blinks of backlight -------------
for(int i = 0; i< 3; i++)
{
lcd.backlight();
delay(250);
lcd.noBacklight();
delay(250);
}
lcd.backlight(); // finish with backlight on
//-------- Write characters on the display ----------------
// NOTE: Cursor Position: CHAR, LINE) start at 0
lcd.home ();
lcd.setCursor(3,0); //Start at character 4 on line 0
lcd.print("Hello, world!");
delay(1000);
lcd.setCursor(0,2);
lcd.print("20 by 4 Line Display");
delay(2000);
lcd.clear();
// Wait and then tell user they can start the Serial Monitor and type in characters to
// Display. (Set Serial Monitor option to "No Line Ending")
lcd.setCursor(0,0); //Start at character 0 on line 0
lcd.print("TOP LCD 20X4 ");
lcd.setCursor(0,3);
lcd.print("ARTOUSTE ");
lcd.setCursor(2,1);
lcd.print("Ligne 2 ");
lcd.write(byte(0));
lcd.write(byte(1));
lcd.write(byte(2));
lcd.write(byte(3));
lcd.write(byte(4));
lcd.write(byte(3));
lcd.write(byte(4));
lcd.write(byte(3));
lcd.write(byte(4));
lcd.setCursor(0,2);
lcd.print(" Ligne 3 ");
}/*--(end setup )---*/
void loop() /*----( LOOP: RUNS CONSTANTLY )----*/
{
{
// when characters arrive over the serial port...
if (Serial.available()) {
// wait a bit for the entire message to arrive
delay(100);
// clear the screen
lcd.clear();
// read all the available characters
while (Serial.available() > 0) {
// display each character to the LCD
lcd.write(Serial.read());
}
}
if (pm<= millis()-100) {
sec=sec + 1;
lcd.setCursor(14,3);
lcd.print(sec);
ad=sec % 20;
lcd.setCursor(ad,2);
lcd.print(" >");
pm=millis();
}
}
}/* --(end main loop )-- */
/* ( THE END ) */