Ecran LCD 2 lignes 16 caractères et clavier 6 boutons

Utilisation de capteurs et composants électroniques avec Arduino.
Une fiche de tutoriel pour chaque.

Ecran LCD 2 lignes 16 caractères et clavier 6 boutons

Messagepar tiptop » Ven 22 Nov 2013 19:51

Shield pour Arduino : Ecran LCD 2 lignes 16 caractères et clavier 6 boutons poussoirs

Image

Composants utilisés

Principe de fonctionnement
Ce shield prêt à l'emploi rajoute un écran LCD HD44780 et un clavier à boutons à votre carte Arduino (Uno, Mega...) pour fournir une interface conviviale d'utilisation.
Il permet de visualiser des informations, surveiller des mesures de capteurs, naviguer dans des menus de configuration, paramétrer un montage personnalisé...
Il comporte
- Cinq boutons (haut/bas, gauche/droite, sélection) pour naviguer dans des menus.
- Un écran LCD rétro-éclairé bleu pour visualiser 2 lignes du texte de 16 caractères .

Image

Le clavier regroupe astucieusement tous les boutons sur une seule broche (pin A0). On mesure analogiquement une résistance, qui dépend du bouton appuyé (diviseur de tension). Ceci permet de laisser disponibles les autres pins de la carte pour les besoins de l'utilisateur.

Montage
Le shield écran s'emboîte directement sur la carte Arduino sans soudures, donc pas de câblage à réaliser (Conception DFRobot).
Le potentiomètre multi-tours situé au dessus de l'écran permet de régler sa luminosité.
Un connecteur ICSP à 6 pins est également disponible.

Pins utilisées
Image.Image

  • L'écran utilise les pins digital 4, 5, 6, 7, 8, 9.
  • Le clavier à boutons utilise un seul pin analogique, A0.
Les pins libres sont disponibles sur des pastilles, une barrette de connexion à souder permet de les utiliser directement.

Logiciel
Télécharger la librairie LiquidCrystal.h disponible ici : http://playground.arduino.cc/Main/LiquidCrystal

Elle est appelée en début de programme avec #include <LiquidCrystal.h>

lcd.begin(16, 2); définit un écran LCD de 16 caractères et 2 lignes.
lcd.setCursor(x,y); permet de positionner le curseur sur le caractère x de la ligue y
lcd.print("mon texte"); permet d'afficher votre texte sur le LCD

Exemple de programme en français (adapté de Mark Bramwell, July 2010)
- A la mise sous tension, la LED rouge PWR s'allume sur le module d'écran.
- L'écran rétro-éclairé affiche un message d'introduction, puis "Choisir un bouton" et indique sur quel bouton on a appuyé (left/right, up/down, select) sur l'écran LCD ainsi que sur le moniteur série.

Image

Code: Tout sélectionner
//Exemple de code utilisant la librairie LiquidCrystal
#include <LiquidCrystal.h>
 
// C ROLLAND - 02 02 2013 Tiptopboards.com
// Module ecran LCD 2 lignes x 16 caracteres
// Clavier 5 touches
// DFRobot : LCD Keypad Shield
/*******************************************************
 
Ce programme permet de tester l'écran LCD 16x02 et les 5 boutons
Mark Bramwell, July 2010 / Rolland - Tiptopboards 2013
 
********************************************************/
 
// Sélection des pins utilisées par l'écran LCD
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
 
// Definit des valeurs utilisées par les 5 boutons
int lcd_key     = 0;
int adc_key_in  = 0;
#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5
 
// Lecture des  boutons (tous regroupés sur le Pin Analog A0)
int read_LCD_buttons()
{
 adc_key_in = analogRead(0);      // Lit la valeur depuis le sensor sur A0
 // centré sur ces valeurs : 0, 144, 329, 504, 741
 // on ajoute environ 50 à ces valeurs et on vérifie si on est proche
 if (adc_key_in > 1000) return btnNONE; // On définit ça en première option pour raison de rapidité car option la plus probable

 if (adc_key_in < 50)   return btnRIGHT; 
 if (adc_key_in < 195)  return btnUP;
 if (adc_key_in < 380)  return btnDOWN;
 if (adc_key_in < 555)  return btnLEFT;
 if (adc_key_in < 790)  return btnSELECT;   
 return btnNONE;  // Sinon, on n'a aucun bouton de sélectionné (par défaut)
}
 
void setup()
{
 lcd.begin(16, 2);              // Lance la librarie (16 caractères x 2 lignes)
 Serial.begin(9600);            //Port seriel

 //Message hello
 lcd.setCursor(0,0); //En haut à gauche (numéroté depuis 0)
 lcd.print("TipTopBoards.com"); // Afficher un petit message
 lcd.setCursor(0,1);   //Ligne du bas
 lcd.print("LCD Shield 1602");   //intro de 5 secondes-
 
 delay(5000);  //Proposer de choisir un bouton
 
 lcd.setCursor(0,1);   //Ligne du bas
 lcd.print("               ");   //Effacer cette ligne
 lcd.setCursor(0,0);           
 lcd.print("Choisir 1 bouton"); // Afficher un petit message
 
}
 
void loop()
{
 lcd.setCursor(9,1);            // Curseur sur ligne 2 (1) et position 10 (9)
 lcd.print(millis()/1000);      // Délai écoulé depuis le dernier reset ou mise en route
 
 
 lcd.setCursor(0,1);            // Curseur en début de seconde  ligne
 lcd_key = read_LCD_buttons();  // Lire le bouton appuyé
 
 switch (lcd_key)               // Selon le bouton choisi
 {
   case btnRIGHT:
     {
     lcd.print("Droite");
     Serial.println("Droite");
     break;
     }
   case btnLEFT:
     {
     lcd.print("Gauche ");
     Serial.println("Gauche");
     break;
     }
   case btnUP:
     {
     lcd.print("Haut  ");
     Serial.println("Haut");
     break;
     }
   case btnDOWN:
     {
     lcd.print("Bas   ");
     Serial.println("Bas");
     break;
     }
   case btnSELECT:
     {
     lcd.print("Select");
     Serial.println("Selection");
     break;
     }
     case btnNONE:
     {
     lcd.print("Aucun ");
     break;
     }
 }
 
}



Image.Image

Boîtier de montage (pour la finition)
Le shield rectangulaire mesure 80 x 58 x 27 mm, le cadre de l'écran fait 71 x 24.2 mm.

Autres exemples (écran seul)
La librairie LiquidCrystal comporte un dossier Exemples avec différentes programmes de démonstration.

Attention, il faut modifier les pins de ces exemples de codes pour les utiliser avec votre shield.
Modifier dans le code
Code: Tout sélectionner
* LCD RS pin to digital pin 12 ->DB8
 * LCD Enable pin to digital pin 11 ->DB9
 * LCD D4 pin to digital pin 5 ->DB4
 * LCD D5 pin to digital pin 4 ->DB5
 * LCD D6 pin to digital pin 3 ->DB6
 * LCD D7 pin to digital pin 2 ->DB7


Donc il suffit de remplacer la ligne
Code: Tout sélectionner
//LiquidCrystal lcd(12, 11, 5, 4, 3, 2); par celle ci
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);


Charger l'un de ces programmes depuis l'IDE Arduino avec le menu File / Exemple / LiquidCrystal / Autoscroll
  • Autoscroll : Ecrit successivement 0123456789 sur l'écran et le fait défiler vers la gauche.
  • Blink : Ecrit Hello Word et fait clignoter la case du curseur à la suite du texte.
  • Cursor : Ecrit Hello Word et fait clignoter un tiret de curseur à la suite du texte.
  • CustomCharacter : Permet de définir ses propres caractères personnalisés, exemple de cœur, de smiley, de personnage avec les bras en l'air puis les bras en bas qui bouge (animation)
    Image.Image
  • Display : Affiche Hello word en mode clignotant (display / nodisplay).
  • HelloWord : Affiche Hello word et le temps écoulé en secondes.
  • Scroll : Affiche Hello word et fait défiler ce texte dans les deux sens.
  • setCursor : Déplace l'emplacement d'écriture et écrit aaaaaabbbb...
  • TextDirection : affiche abcdefghijklm de gauche à droite, et la suite de l'alphabet de droite à gauche.

Références
La librairie LiquidCristal est à installer dans votre répertoire ...\arduino-1.0\libraries\LiquidCrystal
Elle comporte les deux fichiers : LiquidCrystal.h et LiquidCrystal.cpp ainsi qu'un dossier examples
http://playground.arduino.cc/Main/Liqui ... l#Download

Le descriptif : Arduino LCD KeyPad Shield, Dfrobot , en anglais
http://www.dfrobot.com/wiki/index.php/A ... U:_DFR0009)

Câblage des boutons sur le shield
http://www.dfrobot.com/image/data/DFR00 ... %20SCH.pdf

Datasheet de l'écran LCD Hitashi HS44780
http://www.dfrobot.com/image/data/DFR0009/HD44780.pdf

Schéma de la carte
Image
tiptopboards - admin
Avatar de l’utilisateur
tiptop
Administrateur du site
 
Messages: 93
Inscription: Mar 13 Aoû 2013 20:38
Localisation: 38

Retourner vers Capteurs et composants

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 6 invités

cron