[Tuto] Utiliser un shield LCD
Posté sur: août 21, 2013
Catégories: Arduino
Lire la valeur d'un capteur
Le but de ce montage est de mettre en place un montage rapide avec un shield (= carte d'extension) comprend un écran LCD et des boutons poussoirs. Le programme sera simple, il affichera sur l'écran le nom du bouton pressé.
Ce montage est une adaptation de http://www.dfrobot.com/wiki/index.php?title=Arduino_LCD_KeyPad_Shield_(SKU:_DFR0009)
Principe du montage : Le montage de shield est très simple. Il suffit de poser le shield directement sur le Arduino. |
|
Réalisation du montage :
Pour réaliser le montage poser le shield sur le Arduino (Attention au sens). Guidez vous en fonction des bornes A0 à A5.
Remarque : Le potentiomètre (composant bleu avec une vis) permet le réglage du contraste.
Fonctionnement du shield :
Voici comment est réellement câblé le shield :
Bornes | Fonction |
Analog 0 | Bouton (select, up, right, down and left) |
Digital 4 | DB4 |
Digital 5 | DB5 |
Digital 6 | DB6 |
Digital 7 | DB7 |
Digital 8 | RS (données ou sélection du signal) |
Digital 9 | Activation (Enable) |
Digital 10 | Contrôle du rétroéclairage |
Programmation du montage :
Le programme va nous afficher sur l'écran le nom des boutons appuyés. Pour cela il va utiliser une librairie spécific au LCD, la librairie « LiquidCrystal.h ». Cette librairie comprend de très nombreuses fonctions pour en avoir la liste complète et la description, je vous invite à aller visiter le site officiel http://arduino.cc/en/Reference/LiquidCrystal?from=Tutorial.LCDLibrary
// Charger la librairie LiquidCrystal
#include
// Définir les pins utilisées par le LCDnLiquidCrystal lcd(8, 9, 4, 5, 6, 7);
// Définir les variables globales
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
// Fonction lire les boutons
int read_LCD_buttons()
{
adc_key_in = analogRead(0); // Lire les valeurs du capteurs
// Les valeurs renvoyées sont sensés être: 0, 144, 329, 504, 741
// Il y a une erreur possible de 50
if (adc_key_in > 1000) return btnNONE; // Nous découpons les valeurs possibles en zone pour chaque bouton
if (adc_key_in < 50) return btnRIGHT;
if (adc_key_in < 250) return btnUP;
if (adc_key_in < 450) return btnDOWN;
if (adc_key_in < 650) return btnLEFT;
if (adc_key_in < 850) return btnSELECT;
return btnNONE; // On renvoie cela si l'on est au dessus de 850
}
void setup() // Initialisation
{
lcd.begin(16, 2); // Démarrer la librairie
lcd.setCursor(0,0);
lcd.print("Appuyer"); // Afficher un message simple
}
void loop() // Fonction principale
{
lcd.setCursor(0,1); // Placer le curseur au début de la seconde ligne
lcd_key = read_LCD_buttons(); // Lire les boutons
switch (lcd_key) // Selon le bouton appuyer
{
case btnRIGHT: // Pour le bouton "Right"{
lcd.print("RIGHT "); // Afficher "Right"
break;
}
case btnLEFT: // Pour le bouton "left"
{
lcd.print("LEFT "); // Afficher "Left"
break;
}
case btnUP: // Pour le bouton "Up"
{
lcd.print("UP "); // Afficher "Up"
break;
}
case btnDOWN: // Pour le bouton "Down"
{
lcd.print("DOWN "); // Afficher "Down"
break;
}
case btnSELECT: // Pour le bouton "Select"
{
lcd.print("SELECT"); // Afficher "Select"
break;
}
case btnNONE: // Sinon
{
lcd.print("NONE "); // Afficher "None"
break;
}
}
}
Il reste à brancher le Arduino pour compiler le programme et le téléverser.
Une fois terminé cela nous donne :
Pour aller plus loin :
On peut à partir de là afficher tout ce que l'on veut. Les possibilités sont très grande.
Commentaires
déc. 13, 2016
Connectez-vous pour commenter
Se connecter