Afficheur alphanumérique //
Les afficheurs alphanumériques les plus courants sont de type LCD (Liquid Crystal Display)
La plus part de ces modules d'afficheurs ont un fonctionnement similaire, les versions les plus courantes disposent de 2 lignes de 16 caractères ou 4 de 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
Le rétroéclairage peur être monochrome (vert ,rouge, bleu, blanc) ou couleur (RVB)
En général ses modules disposent d'un mode de connexion "parallèle": la commande de l'afficheur se fait par un bus de donnée 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 alphanumérique en mode 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é à 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)


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 :
d'ajouter au début du programme la directive: '#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 à la suite de la précédente.
d'initialiser l'afficheur avec la méthode 'begin' en indiquant le nombre de caractère par ligne et le nombre de ligne disponibles.
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 colonne x et en ligne y (
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 ième caractère de la deuxième ligne (la numérotation des lignes et colone 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"

Attention :
Lors de l'affichage, le texte remplace le texte précédemment écrit, si le texte écrit est plus court que le texte précédent la fin du texte précédent restera visible.
La méthode la plus simple pour éviter ce problème est de rallonger le texte à écrire avec quelques caractères d'espacement.
Si le texte à afficher est plus long que la ligne, le passage automatique à la ligne suivante se fait à partir du 32 ième caractère donc les caractères entre la fin de ligne et le 32ième caractère ne seront pas afficher.