L’écran de 2 lignes de 16 caractères acheté chez Aliexpress (1,83€):
(https://www.aliexpress.com/item/1PCS-LCD-module-Blue-screen-IIC-I2C-1602-for-arduino-1602-LCD-UNO-r3-mega2560/32761644757.html?spm=a2g0s.9042311.0.0.na2w7g)
Il se compose de deux parties: un écran LCD « classique » et au dos un module d’interface I2C.
La communication avec une carte Arduino se fait avec le protocole I2C (voir internet pour plus de détails) sur deux lignes dénommées SCL et SDA. Il faut ajouter les lignes d’alimentation Vcc et GND.
- SDA –> pin A4 Data (pin 20 sur Mega, pin D2 sur Wemos D1 mini)
- SCL –>pin A5 Clock (pin 21 sur Mega, pin D1 sur Wemos D1 mini)
Et il faut mettre des résistances de ‘Pull-Up’ sur chacune de ces lignes MAIS s’il y a plusieurs module il ne faut mettre qu’une seule fois ces résistances (4,7 KΩ). (pour le circuit en ma possession il est dit en documentation qu’il y a des résistances de ‘Pull-Up’ de 10KΩ, mais je n’ai pas pu les identifier sur le circuit, donc j’ai mis ces résistances de 4,7 KΩ).
Chaque module possède sa propre adresse qui peut être fixe ou réglable (le protocole I2C peut gérer 127 adresses !).
Il existe un sketch Arduino pour scanner et trouver l’adresse de l’équipement connecté.
( I2C Scanner.ino Written by Nick Gammon Date: 20th April 2011 par exemple)
L’adresse peut être modifiée en faisant des ‘straps’ entre des bornes de l’interface dans le cas où il y a plusieurs modules I2C et s’ils ont la même adresse:
Si vous ne changez rien vous avez l’adresse 27h (0x27), avec un strap sur A0 vous obtenez l’adresse 26h (0x26).
Pour utiliser l’interface à travers une carte Arduino il faut utiliser une Bibliothèque qui prend en charge le composant (chip) de l’interface (à identifier). Dans mon cas il s’agissait du composant PCF8574 .
Pour ma part j’ai utilisé la library suivante pour un Arduino UNO:
NewLiquidCrytal 1.3.4 qui est prévue pour fonctionner avec l’interface I2C PCF8574 de l’afficheur 16×2 (il existe une version 1.3.5 que je n’ai pas testée)
On la trouve ici: https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/
- Téléchargez le fichier et « dézippez » le dans un répertoire (7zip).
- Changez le nom de ce répertoire en » LiquidCrystal-I2C »
- et déplacez le dans \ARDUINO\CROQUIS\Libraries\ pour Arduino UNO .
- Sil y a d’autres librairies ‘liquidCrystal’ déplacez les dans un autre répertoire.
- ATTENTION: avec un Wemos D1 mini j’ai été obligé de mettre la librairie dans C:\Users\Gaston\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\libraries pour que ça fonctionne.
Si Arduino est ouvert, fermez le, redémarrez le puis chargez votre fichier arduino .
Le programme de test (qui fonctionne avec le PCF8574 et la librairie ci-dessus):
HelloWorld_lcd-i2C.ino
Attention: dans ce sketch il faut placer en ligne 13 l’adresse de votre interface.
fichier que vous trouverez dans la Dropbox des Fabriqueurs ainsi que le scanner ( I2C-Scanner.ino ).
Quelques remarques très personnelles:
Ce protocole I2C que j’ai utilisé depuis 35 ans (instrumentation) me parait être une solution très intéressante pour nos cartes Arduino ou Wemos qui ont peu de lignes d’E/S.
Avec deux lignes de communication on peut connecter plein de composants, par exemple une carte horloge RTC DS1307 ou RTC DS3231, une mémoire I2C_24C256 (32 Koctets) pour stocker des données, des modules d’extension en entrée ou en sortie (8 lignes avec chaque module à base de PCF8574 ! – projet à venir pour Wemos D1 mini-).
Pour éviter les problèmes :
- Utilisez la librairie qui concerne le type d’écran ET le circuit d’interface I2C,
- Placez vos librairies dans le bon répertoire ! (galères personnelles avec un Wemos …): à vérifier si vous avez des pb à la compilation.
En espérant que cela puisse aider certains.