LCD Sparkfun 5V White on black

LCD Sparkfun 5V blanc sur noir

Dans l’optique de mon projet Milapli, Il faudra bien, à un moment donné, afficher les données quelquepart. Dans l’absolu, on pourrait se contenter de stocker ces données, puis d’y accéder par le réseau. Cependant, on peut trouver pour une dizaine d’euros des écrans LCD 2*16 caractères RGB, ou divers autres coloris. Avec un tel écran, il est possible d’afficher directement les informations de notre choix. Ils sont simples à utiliser, et permettent une visualisation directe des données. Dans le cas présent, j’utilise un écran 2*16 caractères, avec un rétro-éclairage blanc de Sparkfun, qui produit des lettres blanches sur fond noir. Ce modèle à un contraste très important, et je vous le recommande pour des projets devant être utilisés en extérieur. Nous allons ici voir comment connecter un tel écran à un ATmega328p (ça devrait fonctionner avec les autres ATmega), ou tout simplement un Arduino.

LCD texte et Arduino : câblage

Pour la connexion entre le micro-contrôleur et le LCD, il nous faudra utiliser 6 broches numériques. Vous pouvez bien entendu choisir les broches de votre choix, mais il faudra logiquement faire les modifications relatives à ces changements dans le code.

 

Schéma pour le câblage vers un ATmega328p directement

Dans mon cas,  j’ai utilisé les broches D2,D3,D5,D6,D7 et D8 (ce qui sera visible dans le code à la déclaration du LCD : “LiquidCrystal lcd(2, 3, 5, 6, 7, 8);”). Celà donne le schéma de câblage suivant :

Câblage LCD vers ATmega328p

Câblage LCD vers ATmega328p (broches 2,3,5,6,7,8)

Schéma pour le câblage vers un Arduino UNO R3

Nous aurons ici une petite différence, puisque nous utiliserons les broches 2,3,4,5,6 et 7 (la broche 4 n’était pas utilisée, pour rendre le schéma plus lisible sur le précédent montage). Attention donc à bien modifier le code en adéquation.

 

LCD connecté à un Arduino

LCD connecté à un Arduino (broches 2,3,4,5,6,7)

Description du brochage du LCD texte

Sur le LCD, les connecteurs étant en haut, et la première broche sera celle la plus à gauche, cela donnera les connections suivantes :


  1. Masse du circuit
  2. +5V
  3. vers une résistance de 2.2KOhms qui part ensuite vers la masse, ou alors un potentiomètre pour ajuster le contraste (ici il est fixe)
  4. Broche D2 du ATmega (ou du Arduino)
  5. Masse du circuit
  6. Broche D3
  7. rien
  8. rien
  9. rien
  10. rien
  11. Broche D5 (D4 dans le second schéma)
  12. Broche D6 (D5 dans le second schéma)
  13. Broche D7 (D6 dans le second schéma)
  14. Broche D8 (D7 dans le second schéma)
  15. vers une résistance de 82 Ohms qui part vers le +5V (pour le rétro-éclairage de mon modèle)
  16. Vers la masse

Cas du rétro-éclairage RGB

Si vous avez un écran LCD RGB, vous aurez alors la broche 15 connectée au 5V, et la broche 16 connectée à la masse en passant par une résistance adaptée à la LED rouge du rétro-éclairage, la broche 17 connectée à la masse par une résistance adaptée à la led verte, et la broche 18 connectée à la masse par une résistance adaptée à la LED bleue. Dans tous les cas, vérifiez bien la valeur de la résistance nécessaire s’il en faut une. Je dispose de LCD rétro éclairés RGB qui ont déjà ces résistances, et du coup sur un autre modèle sans résistance, j’ai grillé la LED rouge en ne mettant pas de résistance en série. Résultat mon LCD RGB est devenu un LCD GB.

Le programme

Pour le code, c’est simple : il suffit de suivre cet exemple sur Arduino.cc.
En pratique :
#include <LiquidCrystal.h>;
// configuration du LCD, avec les bonnes broches, à changer si vous changez le câblage
LiquidCrystal lcd(2, 3, 5, 6, 7, 8);
void setup()
{
  // On définit le nombre de colonnes et de lignes du LCD (16 caractères par ligne, 2 lignes)
  lcd.begin(16, 2);
  // La fonction suivante permet d'afficher un message initial.
  lcd.print("Projet Milapli");
}
void loop()
{
// On définit le curseur à la colonne 0, ligne 1
// (notez que la ligne 1 correspond à la seconde ligne de l'écran, car on compte à partir de 0)
lcd.setCursor(0, 1);
// On affiche le nombre de secondes écoulées depuis le démarrage du programme:
lcd.print(millis()/1000);
}
Les fonctions importantes sont donc lcd.print(…..) qui permet d’afficher une chaine sur le LCD. Les caractères spéciaux tels que le retour à la ligne ne sont pas pris en compte. D’autre part, si vous mettez une chaîne de plus de 16 caractères, seul les 16 premiers s’afficheront. A vous de gérer la longueur des messages donc.  Vous avez également la fonction lcd.setCursor(colonne, ligne), qui permet de déplacer le curseur à la position (colonne, ligne) spécifiée. L’écriture se fera à partir de cette position pour le print suivant. Enfin, vous aurez la fonction lcd.clear() qui efface ce qui est sur le LCD, et place le curseur à la position 0,0.Il existe d’autres fonctionnalités que vous pouvez découvrir en parcourant la documentation de la bibliothèque LiquidCrystal.

Autres ressources

N’hésitez pas à consulter les divers articles de la section Arduino, et notamment, sur ce sujet :

Réseaux sociaux