j'utilise aussi des I²C/LCD basé sur ce compo
j'utilise cette lib LiquidCrystal_I2C
un prog de test qui fonctionne avec les miens (attention je suis en adresse 0x27 )
/* YourDuino.com Example Software Sketch
20 character 4 line I2C Display
Backpack Interface labelled "LCM1602 IIC A0 A1 A2"
terry@yourduino.com */
/*-----( Import needed libraries )-----*/
#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 16 chars 2 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 Afficheur LCD");
lcd.setCursor(0,3);
lcd.print("COMPTEUR TEST");
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 )-- */