LOCODUINO

Bibliothèque LCD

.
Par : Dominique, Guillaume, Jean-Luc

DIFFICULTÉ :

Pour utiliser un écran LCD géré par un chipset Hitachi HD44780 ou compatible, par exemple un écran 2 lignes de 16 caractères très commun et peu cher comme celui-ci :

plusieurs bibliothèques sont disponibles :

  • LiquidCrystal qui fait partie du projet officiel
  • LiquidCrystalFast

La différence majeure réside au niveau du fonctionnement. Pour faire simple, l’écran met un certain temps à écrire. Il existe une broche qui permet de connaître l’état de l’écran :

  • occupé à écrire
  • libre

La bibliothèque officielle fonctionne en aveugle, elle impose un délai entre chaque écriture, et ce délai a été estimé pour couvrir le comportement de tous les contrôleurs de LCD, au contraire de la fast qui lit l’état de l’écran pour accélérer l’exécution (environ 8 fois plus rapide).

Dans cet article, nous nous attacherons donc à cette deuxième bibliothèque LiquidCrystalFast plus efficace.

Installation

Cette bibliothèque ne fait pas partie intégrante d’Arduino, elle est donc à installer. 2 choses sont à savoir :

Sur ce site, vous récupérez les fichiers et le dossier, vous les mettez dans le dossier libraries.

Importer la bibliothèque

#include <LiquidCrystalFast.h>
Cela se fait en début de programme.

Les différentes fonctions

Ce sont les mêmes que la bibliothèque officielle. Il n’y aura pas trop de différences à part l’initialisation de l’écran LCD.
Le principe de base sur ce type d’écran est de placer le curseur, qui peut être visible ou non, puis de demander à écrire un caractère. Les fonctions qui écrivent une chaîne entière incrémentent la position du curseur pour écrire le caractère suivant.

LiquidCrystalFast()

Tout comme dans la bibliothèque Servo, nous allons créer avec cette commande un objet lcd pour commander ensuite l’écran.

LiquidCrystalFast lcd(rs, enable, d4, d5, d6, d7)
LiquidCrystalFast lcd(rs, rw, enable, d4, d5, d6, d7)
LiquidCrystalFast lcd(rs, enable, d0, d1, d2, d3, d4, d5, d6, d7)
LiquidCrystalFast lcd(rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7) 

L’objet est à créer une seule fois lors de la déclaration des variables. Il y a effectivement plusieurs syntaxes possibles selon le type d’écrans. Cela sera spécifié dans l’article correspondant à celui-ci.

Paramètres
Les paramètres sont les broches de l’Arduino qui sont reliées aux broches du LCD (RS, RW...)

  • rs
  • rw (optionnel)
  • enable
  • d0, d1, d2, d3, d4, d5, d6, d7. d0, d1, d2, et d3 sont optionnels ; si ils sont omis, le lcd sera commandé avec les quatre dernières broches.

begin()

Cette fonction initialise l’interface avec le lcd. Elle est nécessaire et à mettre en premier dans le code puisque c’est elle qui spécifie les caractéristiques de l’écran, à savoir le nombre de lignes et de caractères par ligne.

lcd.begin(colonne, lignes);
A placer dans le setup

Paramètres

  • colonne : nombres de colonnes (caractères sur la ligne)
  • lignes : nombre de lignes disponibles

clear()

Aucun paramètre pour cette fonction qui effectue deux actions :

  • comme son nom l’indique, elle efface tout ce qui est écrit sur l’écran
  • elle place le curseur pour écrire dans le coin supérieur gauche

lcd.clear();
Cette fonction peut être écrite soit dans le setup ou le loop selon la fréquence dont on veut le résultat escompté.

home()

lcd.home();
Cette fonction replace le curseur en position supérieur et gauche tout comme la fonction clear(), mais sans rien effacer.

setCursor()

Cette fonction sert à placer le curseur à un certain endroit de l’écran. Elle accepte donc deux paramètres à savoir la colonne et la ligne où le curseur doit se mettre.

lcd.setCursor(col, ligne);

N’oublions pas que nous comptons en informatique à partir de 0, ainsi la colonne 1 est dans le code 0 et ainsi de suite, de même pour les lignes. Si on fait une comparaison, lcd.home() est équivalent à :
lcd.setCursor(0, 0);
Le code lcd.setCursor(0, 1) mettra le curseur en début de la 2ème ligne.

write()

Cette fonction sert à écrire sur l’écran lcd à la position du curseur. Elle accepte donc comme paramètre ce qu’elle doit afficher.
lcd.write(data);
Ecriture d’un caractère de code ASCII data. La fonction renvoie une valeur (variable de type byte) donnant le nombre de byte affichés sur l’écran (stockage optionnel).

print()

Comme son nom l’indique, cette fonction imprime du texte sur l’écran à partir de la position du curseur. Elle accepte deux paramètres :

  • données qui peuvent être de plusieurs types :
    • des variables de plusieurs types
    • des chaînes de caractères à mettre entre guillemets
  • le deuxième est la base de la variable pour afficher la valeur de la variable. C’est un paramètre optionnel :
    • BIN pour afficher en base 2 (binaire),
    • DEC pour base 10 (décimal),
    • HEX pour base 16 (hexadécimal),
    • etc
lcd.print("La valeur de lcd ci-après en base 10 :");
lcd.print(lcd, DEC);

cursor() et noCursor()

L’écran affiche le curseur par un underscore ’_’ sur l’écran LCD à la position où le prochain caractère sera affiché. Cette option est activée par le code lcd.cursor() tandis que l’option est désactivée avec le code lcd.noCursor()
Ces deux fonctions n’acceptent aucun paramètre.
Le comportement de base est noCursor().

L’écran affiche un curseur clignotant sur la position où le prochain caractère sera affiché, lcd.blink() active l’option et lcd.noBlink() la désactive.
Le comportement de base est noBlink(). Bien sûr, le clignotement n’ a pas d’effet si le curseur est désactivé !

display() et noDisplay()

L’écran affiche ou non le texte (sans affecter le rétro-éclairage) mais cela garde en mémoire le texte affiché. lcd.display() remet à l’écran le texte que l’écran affichait avant le code lcd.noDisplay().
Le comportement de base est bien sûr display().

scrollDisplayLeft() et scrollDisplayRight()

Ces fonctions décalent l’ensemble des caractères soit vers la droite pour lcd.scrollDisplayRight() ou vers la gauche pour lcd.scrollDisplayLeft().
A noter que le texte ne se décale pas entre les lignes. Si ce code s’exécute dans une boucle infinie, le texte disparaîtra vers la gauche ou la droite selon le sens de décalage.

autoscroll() et noAutoscroll()

Cette fonction active le défilement automatique du texte. En résumé, le caractère imprimé via la fonction print est toujours mis au même endroit à la case désigné avec la fonction setCrusor(). Afin de compléter ce comportement, tout le texte est décalé.
L’exemple fourni avec la bibliothèque place le texte en dernière ligne et dernière colonne et tout le texte est décalé vers la gauche.
La fonction autoscroll() active ce comportement et noAutoscroll() le désactive.

leftToRight() et rightToLeft()

Ces fonctions permettent de changer la direction d’écriture sur l’écran lcd :

  • leftToRight() fait imprimer de gauche à droite
  • rightToLeft() de droite à gauche

createChar()

Cette fonction permet de créer des caractères spéciaux comme des coeurs, des bonhommes ou des smileys.
Cette fonction nous sera probablement peu utile. La meilleure démonstration est donc de transférer dans l’Arduino le programme exemple CustomCharacter.

A noter qu’il existe aussi une bibliothèque TinyLiquidCrystal qui permet de piloter ce même type d’écran à partir d’un ATtiny85...

6 Messages

  • Bibliothèque LCD 23 août 2016 16:40, par patrick

    bonjour,
    vous écrivez ...
    Installation

    Cette bibliothèque ne fait pas partie intégrante d’Arduino, elle est donc à installer. 2 choses sont à savoir :

    savoir installer une librairie : Installer une bibliothèque
    connaître le site où la trouver : La bibliothèque LiquidCrystalFast

    Sur ce site, vous récupérez les fichiers et le dossier, vous les mettez dans le dossier libraries.


    Comment fait on pour récupérer cette bibliotheque sur le net (github) ?
    D’avance merci de votre réponse

    Voir en ligne : Bibliothèque LCD

    Répondre

    • Bibliothèque LCD 23 août 2016 18:59

      Bonjour,

      La logique de recherche d’une bibliothèque n’est pas de commencer par chercher sur Github.

      Regardez d’abord si on ne la trouve pas sur le Git de Locoduino.

      Sinon :

      Le premier reflexe est de consulter votre IDE qui a un menu "gérer les bibliothèques" dans les versions récentes : si vous voyez une bibliothèque qui vous manque, c’est le bon endroit pour la récupérer, à partir du serveur Arduino. Vous êtes certain que c’est une bibliothèque officielle.

      Le second reflexe si le premier ne donne pas satisfaction, c’est de choisir le menu "référence" puis l’onglet "librairies"

      La solution en dernier ressort est le champ de recherche du site Arduino.cc.

      Sinon je l’ai trouvée là : https://github.com/Swap-File/tron-s...

      Répondre

    • Bibliothèque LCD 30 août 2016 17:26, par Thierry

      Sur github ou tout autre ’forge’ qui gère les projets collaboratifs partagés comme LiquidCrystalFast, il y a un bouton ’Download’ qui donne accès à un lien ’Download ZIP’, ou directement un bouton ’Download ZIP’. Appliquez ensuite les conseils de l’article ’Installer une bibliothèque’.

      Répondre

  • Rotation de l’écran 14 septembre 2023 15:54, par Arno

    Bonjour,

    J’ai monté un écran similaire sur une platine électronique.
    Il est à l’envers.

    existe-il une fonction pour retourner le texte à l’écran afin de ne pas avoir à tourner sa tête pour lire ?

    Merci.

    Arno

    Répondre

    • Rotation de l’écran 14 septembre 2023 16:00, par Jean-Luc

      Bonjour,
       
      J’ai bien peur que non. Sur ce type d’écran, les caractères sont en ROM dans le chipset graphique avec la possibilité de charger quelques caractères custom supplémentaires. Par conséquent, il n’est pas possible de les tourner.

      Répondre

Réagissez à « Bibliothèque LCD »

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rubrique « Bibliothèques »

Les derniers articles

Les articles les plus lus