Mise en œuvre d'un afficheur (écran) à cristaux liquides (LCD) de type parallèle

On trouve dans le commerce plusieurs formats pour les écrans LCD :

  • 2 lignes de 16 caractères

  • 4 lignes de 20 caractères

Il existe 3 modes de visualisation :

  • Transmissif --> éclairage par l'arrière (rétroéclairage)

  • Réflectif --> utilise uniquement la lumière ambiante (consomme très peu d'énergie)

  • Transflectif --> utilise soit un éclairage par l'arrière soit la lumière ambiante

En général, ces modules disposent d'un mode de connexion parallèle :

  • la commande de l'afficheur se fait par un bus de données de 4 ou 8 bits D4 à D7 ou D0 à D7 (il y a donc 4 ou 8 fils à connecter à l'afficheur).

  • Ce mode de connexion nécessite aussi des signaux de contrôle : E, RS et éventuellement R/W.

Méthode

Utilisation d'un afficheur LCD alphanumérique  parallèle.

Pour simplifier la mise en œuvre de l'afficheur nous allons utiliser un shield du fabriquant DFRobot dédié à l'affichage

Le schéma ci-dessous permet de connaître l'affectation des broches de l'afficheur.

ex : la broche DB4 de l'afficheur est reliée à la broche D4 de l'Arduino (en brun sur le schéma)

Remarque: Dans les programmes les broches digital (Dx) sont identifiées uniquement par leur numéro (il faut utiliser 4 à la place de D4)

La mise en œuvre d'un afficheur LCD parallèle nécessite l'utilisation de la bibliothèque : LiquidCrystal.h

Configuration et initialisation de l'afficheur :

Il existe une bibliothèque <LiquidCrystal.h> qui permet d'utiliser facilement les possibilités d'un afficheur LCD intelligent.

Pour utiliser cette bibliothèque, il est nécessaire :

  • mettre en place la librairie au début du programme avec :

     #include <LiquidCrystal.h>

  • de créer l'afficheur (ce sera un objet appartenant à la classe LiquidCrystal), pour cela il faut lui donner un nom ainsi que les numéros des broches à utiliser sur l'Arduino.

    Ceci en respectant l'ordre suivant: RS, RW, E, D0, D1, D2, D3, D4, D5, D6, D7 (si la broche n'existe pas il suffit de ne pas l'écrire).

    ex : LiquidCrystal boafi (4, 5, 3, 7, 8, 9,10 ); va créer l'objet 'boafi' (appartenant à la classe liquidCrystal)

    avec: RS pin 4, RW pin 5, E pin 3, D4 pin 7, D5 pin 8, D6 pin 9 et D7 pin 10.

    cette ligne est à écrire au dessous de #include<LiquidCyrtal.h>

  • d'initialiser l'afficheur avec la méthode 'begin' en indiquant le nombre de caractère par ligne et le nombre de lignes.

    ex ; boafi.begin(16, 2); va initialiser l'objet boafi (appartenant à la classe liquidCrystal) en mode 2 lignes de 16 caractères

    cette ligne est à écrire dans la fonction setup() du programme.

Tous les objets appartenant à la classe LiquidCrystal pourront utiliser les méthodes suivantes :

  • clear() --> efface l'afficheur et positionne le curseur en colonne 0 ligne 0 (! le temps d’effacement de l'afficheur est relativement long)

  • home()--> positionne le curseur en colonne 0 ligne 0 (en haut à gauche)

  • setCursor()--> setCursor(x,y) positionne le curseur en x,y (x correspond au numéro de la colonne et y au numéro de la ligne).

  • print() --> permet d'afficher du texte ou des valeurs numériques (fonctionnement quasi identique au 'print()' du mode console) .

  • write() --> le "write" envoie directement la valeur donnée en paramètre (fonctionnement quasi identique au 'write()' du mode console) .

lcd.clear(); --> efface l'afficheur nommé 'lcd'

lcd.setcursor(12,1) --> positionne le curseur sur le 13ème caractère de la deuxième ligne (la numérotation des lignes et colonne commence à '0').

Serial.print(temp) --> affiche le contenu de la variable 'temp' (pas de guillemet) .

Comme pour le print() de la console, il est possible d'afficher les valeurs numériques entières en binaire ou en hexadécimal, et de définir le nombre de décimal à utiliser pour afficher les nombres à virgules (float)

Le logiciel Arduino comporte une description des librairies standards dans "Aide / Référence.-> libraries page -> LiquidCrystal"