LCD Keypad Shield

Matériel testé : DF Robot LCD KeyPad Shield

Bibliothèque nécessaire : LiquidCrystal (comprise dans la distribution de l’IDE Arduino)

Ce shield combine un écran LCD et quelques touches de navigation (keypad).

 

Câblage

Il présente l’avantage de ne nécessiter aucun câblage : il suffit de le connecter sur l’Arduino !

 

Programmation

La programmation de l’écran n’est pas différente de celle de n’importe quel écran LCD, dans la mesure où on utilise la bibliothèque LiquidCrystal.

En ce qui concerne les touches, elles sont associées au port analogique 0 : chaque touche produira une valeur différente.

Il faut toutefois calibrer ce dispositif, car selon les shields (modèle, version, …), il peut y avoir des différences !

// LCD Keypad Shield

#include <LiquidCrystal.h>

// Création de l'objet lcd (avec les différents ports numériques qu'il utilise)
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

// Variables
int lcd_key     = 0;
int adc_key_in  = 0;

// Constantes
#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5

void setup()
{
 lcd.begin(16, 2);              // Démarrage de l'écran
 lcd.setCursor(0,0);            // Positionnement du curseur au début
 lcd.print("Arduino:essentiel"); // Message
}
 
void loop()
{
 lcd.setCursor(0,1);            // Positionnement du curseur début de ligne 1
 lcd_key = read_LCD_buttons();  // Lecture des touches

 switch (lcd_key)               // Action en cas de touche pressée
 {
   case btnRIGHT:
     {
     lcd.print("DROITE");
     break;
     }
   case btnLEFT:
     {
     lcd.print("GAUCHE");
     break;
     }
   case btnUP:
     {
     lcd.print("HAUT  ");
     break;
     }
   case btnDOWN:
     {
     lcd.print("BAS   ");
     break;
     }
   case btnSELECT:
     {
     lcd.print("SELECT");
     break;
     }
     case btnNONE:
     {
     lcd.print("      ");
     break;
     }
 }
}

// Fonction de lecture des touches
int read_LCD_buttons()
{
 adc_key_in = analogRead(0);   // Lecture du port analogique

 // Les valeurs qui suivent doivent être adaptées au shield
 if (adc_key_in > 1000) return btnNONE;   // En principe 1023 quand aucune touche n'est pressée
 if (adc_key_in < 50)   return btnRIGHT;     // 0
 if (adc_key_in < 195)  return btnUP;        // 99
 if (adc_key_in < 380)  return btnDOWN;      // 255
 if (adc_key_in < 555)  return btnLEFT;      // 409
 if (adc_key_in < 790)  return btnSELECT;    // 640

 return btnNONE;
}

 

Voir aussi

Écran LCD

 

Vous aimerez aussi...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *