Initiation Arduino (3ème séance)

Le vendredi 22 mars 2019

Sept participants étaient présent à cette soirée (André, Daniel, Jean-Claude, Jean-Pierre, Michel, Olivier et Pascal)

Le protocole de communication I²C

I²C signifiant : Inter-Integrated Circuit.
Ce protocole de communication fut élaboré par Philips, durant le début des années 80’s.
Ce sketch va vous permettre d’identifier l’adresse du composant I²C (ou plusieurs)
Le bus I²C est constitué de fils :

  • SDA (Serial Data Line) : ligne data’s bidirectionnelle.
  • SCL (Serial Clock Line) : ligne des clocks de synchronisation bidirectionnelle.

Généralement viennent s’ajouter 2 autres fils : Le GND (ou masse) et le +5V.
La figure ci-dessous vous montre comment est organisé le bus I²C.

@Wikipedia

Chaque terminaux possède une adresse sur 7 bits, ce qui permet jusqu’à 128 dispositifs sur un bus I²C.

Pour ceux qui souhaiteront approfondir le protocole I²C, voici 2 liens :

Scanner son bus I²C

Une fois chargé, vous pouvez le sauvegarder sous le nom « i2c_scanner ».
C’est un sketch que vous utiliserez avec des interfaces I²C.
Il vous permettra de détecter les adresses utilisées par les périphériques I²C connecté à votre Arduino.

Affichage sur l’écran LCD I²C

L’installation d’un écran LCD sans l’interface I²C nécessite un câblage constitué de 8 fils, dont 6 utilisant des entrées/sorties.
Ce qui allait sérieusement hypothéquer le nombre d’entrées/sorties, d’où le choix d’utiliser un interface I²C associé à notre écran LCD et qui n’exploite que 2 entrées/sorties sur l’Arduino :

  • SDA branché sur A4
  • SCL branché sur A5

Et bien oui, ça ne marche pas !

Vous avez besoin d’une librairie : LiquidCrystal_I2C-1.1.2.zip
Une fois téléchargé cette librairie vous devrez l’installer dans l’IDE.
ATTENTION : La librairie devra rester en .zip !!!!
Pour ce faire voici le cheminement
Ajout Librairie Arduino

Merci librairie, cette fois ça marche !

Ce qu’il faut retenir

  • Le bus I²C comporte 3 liaisons (Masse ou GND, SDA les data et SCL les clocks de synchronisation) + une ligne d’alimentation 5 V
  • Le bus I²C utilise 7 bits d’adressage, ce qui permet 128 adresses dont celle de l’Arduino
  • Le sketch « i2c_scanner » scanne votre bus I²C vous renseignera sur le nombre de dispositifs et de leur adresse
  • Dès que l’on utilise un bus I²C nous devrons inclure la bibliothèque « Wire » dans le sketch. La commande qui permet d’appeler cette librairie est « #include <Wire.h> ». Cet appel se trouvant en haut du sketch avant le « setup() », c’est d’ailleurs l’emplacement de tous les appels de librairie. La librairie « Wire » est installée par défaut sur l’IDE. Par conséquent pas d’ajout de librairie.
  • Pour utiliser un écran LCD I²C, nous avons besoin d’une nouvelle librairie : « LiquidCrystal_I2C », qu’il faudra ajouter à notre collection dans l’éditeur IDE
  • Les quelques nouvelles commandes liée à la librairie « LiquidCrystal_I2C » :
    • LiquidCrystal_I2C lcd(0x27,20,4) : Initiation de l’objet « lcd » avec pour paramètres l’adresse I²C, le nombre de caractères sur une ligne et le nombre de lignes /li>
    • lcd.init() : initiation de l’écran LCD
    • lcd.backlight() : allumage du retro éclairage
    • lcd.clear() : effacement du contenu de l’écran LCD
    • lcd.setCursor(3,1) : positionnement du curseur, dans l’exemple 4ème position sur la 2ème ligne.
      Le premier chiffre étant la position sur la ligne et le second la ligne.
      N’oublier pas que le O est la première position !!!
    • lcd.print(« Texte ») : Vous imprimerez à partir de la position du curseur la chaîne de caractère entre les guillemets
    • lcd.print(variable) : Vous imprimerez à partir de la position du curseur le contenu de la variable
  • Vous souhaitez relancer votre sketch, vous disposer d’un bouton reset sur votre Arduino, il suffit de le presser