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