Display 16 x 2

Beskriving
Eit 16 x 2 LCD-display er eit vanleg og enkelt display som kan gi deg informasjon på to linjer, med 16 teikn per linje.
Dette displayet har eit parallelt grensesnitt som krev åtte I/O-portar. Ein fordel med displayet er at teikna er store og godt synlege. Displayet blir òg levert med bakgrunnsbelysning.
På moderne elektronikk er no desse displaya bytte ut med nyare typar display med I2C-buss som kommunikasjon og betre oppløysing.

Bruksområde
Displayet eignar seg til å gi enkle beskjedar og måleresultat med, men bruken blir litt avgrensa sidan det berre viser to linjer på 16 teikn.
Likevel ser vi desse displaya på mykje elektronikk, og for vanleg bruk med Arduino der vi ønsker å få vist fram data, fungerer det veldig bra.
Kopling
Når du skal kople eit display som dette, treng du seks digitale utgangar.
I dette tilfellet blir desse kopla på pinnane D2 til D7. Displayet har 16 tilkoplingspunkt, men du bruker berre 12 pinnar. Du må òg nytte ein motstand mellom Arduinoens pluss og LED-porten til displayet for å fjerne eventuell støy i straumbanen.
Du finn ei oversikt over koplingane i emnet om programmering.

Koplingsskjema
Du må nytte heile åtte pinnar på Arduinoen for å kunne nytte displayet. Du må kople saman dei to einingane på følgande måte:
Arduino | LCD-display | Kommentar |
|---|---|---|
| 5V | VCC | |
| 5V | LED+ | Via 220 ohm resistor |
| GND | GND | |
| D2 | DB7 | |
| D3 | DB6 | |
| D4 | DB5 | |
| D5 | DB4 | |
| D6 | ENA | |
| D7 | RS | |
| GND | RW | |
| GND | LED - |
Eit elektrisk koplingsskjema av koplinga vil visast grafisk på denne måten:

Programmering
For å kunne bruke eit 16 x 2 LCD-display må du nytte biblioteket LiquidCrystal.h.
Du må òg fortelje Arduinoen kor stort displayet er ved å angi kor mange teikn det er plass til på kvar linje, og kor mange linjer det har. Her er talet 16 x 2, altså 16 teikn per linje, og to linjer.
Du må òg fortelje Arduinoen kvar på displayet du ønsker han skal begynne å skrive, ved å angi startposisjon. Då blir plassering angitt frå venstre først, så kva linje ovanfrå. OBS: Arduinoen begynner å telje frå 0, så å begynne å skrive på plass 4 frå venstre blir posisjon 3, og linje 1 blir 0.
/*
Koplingspunkt for LCD
* LCD RS pinne til digital Arduinoens pinne D7
* LCD Enable pinne til digital Arduinoens pinne D6
* LCD D4 pinne til digital Arduinoens pinne D5
* LCD D5 pinne til digital Arduinoens pinne D4
* LCD D6 pinne til digital Arduinoens pinne D3
* LCD D7 pinne til digital Arduinoens pinne D2
* LCD R/W pinne til Arduinoens jording, pinne GND
* LCD VSS pinne til Arduinoens jording, pinne GND
* LCD VCC pin til Arduinoens pluss, pinne 5V
* 10K resistor: Kopling mellom +5V og LCD VO pinne 3
*/
#include <LiquidCrystal.h> // Hent bibliotek LiquidCrystal.h
// Definer pinnane displayet skal kople seg til
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
const int paus3 = 1000; // Definer variabelen pause, og set denne til 1000
void setup() { // Setup og innstillingar
Serial.begin(9600); //Aktiver serial monitor
lcd.begin(16, 2);// Definer displayets rader og kolonnar, 16 bokstavar i 2 linjer.
}
void loop() // Program som skal køyrast om og om igjen
{
lcd.setCursor(3, 0); // Start skriving på posisjon 4 på linje 1 – hugs at vi alltid startar å telje med 0.
lcd.print("God morgon"); // Skriv teksten
lcd.setCursor(2, 1); //Start skriving på posisjon 3 på linje 2 – hugs at vi alltid startar å telje med 0.
lcd.print("Laga av NDLA"); // Skriv teksten
Serial.println("Laga av NDLA"); // Skriv teksten til serial monitor
delay(pause); // Ta pause i samsvar med variabelen pause
}
Utfordring
Kan du lage fleire linjer med tekst som skiftar?
Tips: Du kan slette alt på displayet mellom kvar skriving ved å bruke kommandoen lcd.clear();.
Kan du få displayet til å vise om ein knapp er trykka inn?
Kan du få displayet til å vise ein variabel Arduinen har lese, til dømes ein temperatur?
Tips: Du kan skrive både tekst og variablar.
