LiquidCrystal-I2C

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

PCF8574ATPCF8574TShuntShuntShunt
AdresseAdresseA0A1A2
0x3F0x27
0x3E0x26X
0x3D0x25X
0x3C0x24XX
0x3B0x23X
0x3A0x22XX
0x390x21XX
0x380x20XXX

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);           
}

Scanner_I2C.zip

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

Affichage_I2C_Creation_Caractere_V1.zip

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Article précédent

Arduino: Mesure température avec LM35DZ

Article suivant

Arduino: DHT22 et LCD 2*16

Articles similaires