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
