A- Afficheur I2C deux lignes SBC-LCD16*2: Face Avant

Gotronic Ref : 34940 Fiche technique
B- Afficheur I2C deux lignes SBC-LCD16*2: Face Arrière

| PCF8574AT | PCF8574T | Shunt | Shunt | Shunt |
| Adresse | Adresse | A0 | A1 | A2 |
| 0x3F | 0x27 | |||
| 0x3E | 0x26 | X | ||
| 0x3D | 0x25 | X | ||
| 0x3C | 0x24 | X | X | |
| 0x3B | 0x23 | X | ||
| 0x3A | 0x22 | X | X | |
| 0x39 | 0x21 | X | X | |
| 0x38 | 0x20 | X | X | X |
C- Schéma de base I2C

Protocole I2C, inventé par Philips Semiconductors. Les résistances de rappel sont comprises entre 1,5k et 10K.
Il n’y a que deux résistances pour l’ensemble du réseau.
Plus d’info: ICI ou ICI ou ICI ou ICI etc …..
Nécessite la librairie Wire.h et LiquidCrystal_I2C.h de Frank Brabander, ICI
F- Recherche adresse de l’afficheur
Scanner pour trouver l’adresse du module I2C, ICI
Ce scanner a été traduit, on peut trouver l’original, ICI
– G- Mots cles de la LiquidCrystal_I2C
Mots-clés dans le fichier keywords.txt
init KEYWORD2
begin KEYWORD2
clear KEYWORD2 Efface l’écran
home KEYWORD2 Place le curseur en position (0, 0)
noDisplay KEYWORD2 Eteint l’écran, les caractères sont toujours présents
display KEYWORD2 Allume l’ écran
noBlink KEYWORD2 Curseur ne clignote pas
blink KEYWORD2 Curseur clignote
noCursor KEYWORD2 Curseur invisible
cursor KEYWORD2 Curseur visible
scrollDisplayLeft KEYWORD2 Déplace le contenu affiché d’une colonne vers la gauche.
scrollDisplayRight KEYWORD2 Déplace le contenu affiché d’une colonne vers la droite.
leftToRight KEYWORD2
rightToLeft KEYWORD2
shiftIncrement KEYWORD2
shiftDecrement KEYWORD2
noBacklight KEYWORD2 Déésactive le rétro-élairage
backlight KEYWORD2 Active le rétro-élairage
autoscroll KEYWORD2
noAutoscroll KEYWORD2
createChar KEYWORD2
setCursor KEYWORD2 Positionne le curseur Ex : setCursor(1,5) ;
print KEYWORD2 Affiche une chaîne de caractéres et déplace le curseur sur la ligne suivante
blink_on KEYWORD2
blink_off KEYWORD2
cursor_on KEYWORD2
cursor_off KEYWORD2
setBacklight KEYWORD2
load_custom_character KEYWORD2
printstr KEYWORD2
I – Programme Scanner I2C
/*==================================================
Ce sketch est un scanner I2C: il essaye de communiquer
avec toutes les adresses I2C possibles et affiche
celle(s) qui réponde(nt).
BRANCHEMENT
* Pin SCD du moule à scanner ---> SCD de l’Arduino
* Pin SDA du moule à scanner ---> SDA de l’Arduino
// NE PAS OUBLIER LES 2 RESISTANCES ENTRE
SDA ET +5V ET ENTRE SLC ET +5V
http://bateaux.trucs.free.fr/scanneur_i2c.html
Le sketch est la copie de celui trouvé sur cette page
seul le texte a été traduit en français.
https://playground.arduino.cc/Main/I2cScanner/
==================================================== */
#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(9600);
Serial.println("\nI2C Scanner");
}
void loop()
{
byte error, address;
int nDevices;
Serial.println("Recherche en cours...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("Equiment I2C trouve a l'addresse 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4)
{
Serial.print("Erreur inconnue a l'address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("Aucun Equipement I2C trouve\n");
else
Serial.println("Fini\n");
delay(5000);
}
J – Programme affichage_I2C_Message_Static
/* Synopsis: Affichage_I2C_Message_Static
Carte : Arduino Uno
Afficheur : I2C
Librairies: Wire.h et LiquidCrystal_I2C.h
https://electroniquepassion.fr/
C.Mercier 62128 Boiry-Becquerelle
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//---------------------------------------
// Adresse, Nbr caracteres, Numero ligne
LiquidCrystal_I2C lcd(0x27, 16, 2);
//---------------------------------------
void setup()
{
lcd.init();// init afficheur
lcd.backlight();
lcd.clear();
lcd.setCursor(3,0);
lcd.print("arduino I2C");
delay(2000);
}
//---------------------------------------
void loop()
{
lcd.setCursor(0, 0);// Colonne, Ligne
lcd.print("-I2C-Serial-LCD-");
lcd.setCursor(0,1);
lcd.print("ABCDEFGHIJKLMNOP");
}
//---------------------------------------
Affichage_I2C_Message_Static.zip
K – Programme affichage_I2C_Deplacement_Texte_manuellement
/* Synopsis: Affichage_I2C_Deplacement_Texte_manuellement
Carte : Arduino Uno
Afficheur : I2C
Librairies: Wire.h et LiquidCrystal_I2C.h
simpleBouton
https://forum.arduino.cc/t/partage-boutons-poussoirs/361656
https://electroniquepassion.fr/
C.Mercier 62128 Boiry-Becquerelle
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Adresse, Nbr caracteres, Numero ligne
LiquidCrystal_I2C lcd(0x27, 16, 2);
#include <simpleBouton.h>
// BP entre la masse et entrées 6 et 8
const uint8_t PINBPGAUCHE = 6;
const uint8_t PINBPDROIT = 8;
simpleBouton bpGauche(PINBPGAUCHE);
simpleBouton bpDroit(PINBPDROIT);
//---------------------------------------
void setup()
{
pinMode (PINBPGAUCHE,INPUT);
pinMode (PINBPDROIT,INPUT);
lcd.init();// init afficheur
lcd.backlight();
lcd.clear();
lcd.setCursor(8,0);
lcd.print("a");
delay(2000);
}
//---------------------------------------
void loop()
{
bpGauche.actualiser();
if (bpGauche.vientDEtreEnfonce() )
{
versGauche();
}
bpDroit.actualiser();
if (bpDroit.vientDEtreEnfonce() )
{
versDroite();
}
}
//---------------------------------------
void versGauche()
{
lcd.scrollDisplayLeft(); // vers gauche
}
//---------------------------------------
void versDroite()
{
lcd.scrollDisplayRight(); // vers droite
}
//---------------------------------------
Affichage_I2C_Deplacement_Texte_manuellement.zip
L – Programme affichage_I2C_Deplacement_Texte_automatique
/* Synopsis: Affichage_I2C_Message_Static
Carte : Arduino Uno
Afficheur : I2C
Librairies: Wire.h et LiquidCrystal_I2C.h
https://electroniquepassion.fr/
C.Mercier 62128 Boiry-Becquerelle
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//---------------------------------------
// Adresse, Nbr caracteres, Numero ligne
LiquidCrystal_I2C lcd(0x27, 16, 2);
//---------------------------------------
void setup()
{
lcd.init();
lcd.backlight();
lcd.print("abcdefghijklmnop");
delay(2000);
}
//---------------------------------------
void loop()
{
lcd.scrollDisplayLeft();
delay(250);
}
//---------------------------------------
Affichage_I2C_Deplacement_Texte_automatique.zip
M – Programme affichage_I2C_Clignotement_Message
/* Synopsis: Affichage_I2C_Clignotement_Message
Carte : Arduino Uno
Afficheur : I2C
Librairies: Wire.h et LiquidCrystal_I2C.
https://electroniquepassion.fr/
C.Mercier 62128 Boiry-Becquerelle
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//---------------------------------------
// Adresse, Nbr caracteres, Numero ligne
LiquidCrystal_I2C lcd(0x27, 16, 2);
//---------------------------------------
void setup()
{
lcd.init();// init afficheur
lcd.noBacklight();
lcd.clear();
delay(100);
lcd.backlight();
lcd.setCursor(5,0);
lcd.print("Hello");
}
//---------------------------------------
void loop()
{
lcd.noDisplay();
delay(500);
lcd.display();
delay(500);
}
affichage_I2C_Clignotement_Message.zip
N – programme affichage_I2C_Clignotement_Message_V2
/* Synopsis: Affichage_I2C_Clignotement_Message_V2
Carte : Arduino Uno
Afficheur : I2C
Librairies: Wire.h et LiquidCrystal_I2C.h
https://electroniquepassion.fr/
C.Mercier 62128 Boiry-Becquerelle
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//---------------------------------------
// Adresse, Nbr caracteres, Numero ligne
LiquidCrystal_I2C lcd(0x27, 16, 2);
//---------------------------------------
void setup()
{
lcd.init();// init afficheurr
lcd.noBacklight();
lcd.clear();
delay(100);
lcd.backlight();
}
//---------------------------------------
void loop()
{
lcd.setCursor(1,0);
lcd.print("le message est");
delay(500);
lcd.clear();
lcd.setCursor(4,1);
lcd.print("trop long");
delay(500);
lcd.clear();
}
affichage_I2C_Clignotement_Message_V2.zip
O – Programme affichage_I2C_Animation_Curseur
/* Synopsis: Affichage_I2C_Animation_Curseur
Carte : Arduino Uno
Afficheur : I2C
Librairies: Wire.h et LiquidCrystal_I2C.
https://electroniquepassion.fr/
C.Mercier 62128 Boiry-Becquerelle
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//---------------------------------------
// Adresse, Nbr caracteres, Numero ligne
LiquidCrystal_I2C lcd(0x27, 16, 2);
//---------------------------------------
void setup()
{
lcd.init();// init afficheur
lcd.backlight();
lcd.clear();
lcd.setCursor(3,0);
lcd.print("arduino I2C");
delay(2000);
}
//---------------------------------------
void loop()
{
lcd.clear();
lcd.home();// Curseur colonne 0, ligne 0
lcd.blink();// clignotement
}
//---------------------------------------
affichage_I2C_Animation_Curseur.zip
P – Création d’un caractère
On peur créer 8 caractères de 0 à 7
Simulation caractère ICi ou ICI

/* Synopsis: Affichage_I2C_Creation_Caractere_V1
Carte : Arduino Uno
Afficheur : I2C
Librairies: Wire.h et LiquidCrystal_I2C.
https://electroniquepassion.fr/
C.Mercier 62128 Boiry-Becquerelle
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//---------------------------------------
// Adresse, Nbr caracteres, Numero ligne
LiquidCrystal_I2C lcd(0x27, 16, 2);
byte flecheHaute[] = // Caractère flecheHaute
{
B00100,
B01110,
B10101,
B00100,
B00100,
B00100,
B00100,
B00100,
};
byte flecheBasse[] = // Caractère flechebasse
{
B00100,
B00100,
B00100,
B00100,
B00100,
B10001,
B01110,
B00100,
};
//---------------------------------------
void setup()
{
lcd.init();// init afficheur
lcd.backlight();
lcd.clear();
lcd.setCursor(3,0);
lcd.print("arduino I2C");
lcd.createChar(0, flecheHaute);// Creation caractere adresse 0
lcd.createChar(5, flecheBasse);// Creation caractere adresse 5
delay(2000);
lcd.clear();
}
//---------------------------------------
void loop()
{
lcd.setCursor(0,0);
lcd.write((uint8_t) 0); // affiche le caractère de l'adresse 0
lcd.setCursor(15,1);
lcd.write((uint8_t) 5); // affiche le caractère de l'adresse 5
}
//---------------------------------------