In acest articol vom folosi un shield LCD 16x02 cu butoane impreuna cu Arduino Uno. Acest shield se conecteaza foarte usor la Arduino, mai exact vine exact deasupra placii de dezvoltare si se conecteaza la pinii acesteia.
Acest modul se alimenteaza direct din placa de dezvoltare. Pentru a folosi displayul LCD vom avea nevoie de libraria LiquidCristal.
Cele 5 butoane (Up, Down, Left, Right si Select) sunt conectate impreuna la pinul Analog 0 pentru a economisi pinii folositi. In functie de valoare detectata la pinul A0 vom sti care buton este apasat. Un tabel cu aceste valori este mai jos:
| Buton | Valoare A0 |
| Right | 0-60 |
| Up | 60-200 |
| Down | 200-400 |
| Left | 400-600 |
| Select | 600-800 |
Pe placa este si un al saselea buton dar acesta este butonul de resetare al placii de dezvoltare.
Pinii folositi pentru folosirea displayului sunt urmatorii:
RS - D8
EN - D9
d4 - D4
d5 - D5
d6 - D6
d7 - D7
Un sketch simplu in care vom afisa pe display butoanele folosite este cel de mai jos.
#include <LiquidCrystal.h>
const int RS = 8;
const int EN = 9;
const int d4 = 4;
const int d5 = 5;
const int d6 = 6;
const int d7 = 7;
LiquidCrystal lcd(RS, EN, d4, d5, d6, d7);
void setup() {
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("Testare shield");
lcd.setCursor(0,1);
lcd.print("LCD cu butoane");
delay(1000);
lcd.clear();
lcd.print("electronicstore");
lcd.setCursor(13,1);
lcd.print(".ro");
delay(1000);
}
void loop() {
lcd.clear();
lcd.print("Buton apasat:");
lcd.setCursor(0,1);
int x;
x = analogRead (0);
if (x < 60) {
lcd.print ("Dreapta");
}
else if (x < 200) {
lcd.print ("Sus");
}
else if (x < 400){
lcd.print ("Jos");
}
else if (x < 600){
lcd.print ("Stanga");
}
else if (x < 800){
lcd.print ("Select");
}
delay(100);
}