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 } //---------------------------------------