Display 16 x 2

Beskrivelse
Et 16 x 2 LCD-display er et vanlig og enkelt display som kan gi deg informasjon på to linjer, med 16 tegn per linje.
Dette displayet har et parallelt grensesnitt som krever åtte I/O-porter. En fordel med displayet er at tegna er store og godt synlige. Displayet leveres også med bakgrunnsbelysning.
På moderne elektronikk er nå disse displayene bytta ut med nyere typer display med I2C-buss som kommunikasjon og bedre oppløsning.

Bruksområder
Displayet egner seg til å gi enkle beskjeder og måleresultater med, men bruken blir litt begrensa siden det bare viser to linjer på 16 tegn.
Likevel ser vi disse displayene på mye elektronikk, og for vanlig bruk med Arduino der vi ønsker å få vist fram data, fungerer det veldig bra.
Kopling
Når du skal kople et display som dette, trenger du seks digitale utganger.
Disse koples i dette tilfellet på pinnene D2 til D7. Displayet har 16 tilkoplingspunkter, men du bruker bare 12 pinner. Du må også benytte en motstand mellom Arduinoens pluss og displayets LED-port for å fjerne eventuell støy i strømbanen.
Du finner ei oversikt over koplingene i emnet om programmering.

Koplingsskjema
Du må benytte hele åtte pinner på Arduinoen for å kunne benytte displayet. Du må kople sammen de to enhetene på følgende 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 - |
Et elektrisk koplingsskjema av koplinga vil vises grafisk på denne måten:

Programmering
For å kunne bruke et 16 x 2 LCD-display må du benytte biblioteket LiquidCrystal.h.
Du må også fortelle Arduinoen hvor stort displayet er ved å angi hvor mange tegn det er plass til på hver linje, og hvor mange linjer det har. Her er tallet 16 x 2, altså 16 tegn per linje, og to linjer.
Du må også fortelle Arduinoen hvor på displayet du ønsker den skal begynne å skrive, ved å angi startposisjon. Da angis plassering fra venstre først, så hvilken linje ovenfra. OBS: Arduinoen begynner å telle fra 0, så å begynne å skrive på plass 4 fra venstre blir posisjon 3, og linje 1 blir 0.
/*
Koplingspunkter 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 pinnene displayet skal kople seg til
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
const int paus3 = 1000; // Definer variabelen pause, og sett denne til 1000
void setup() { // Setup og innstillinger
Serial.begin(9600); //Aktiver serial monitor
lcd.begin(16, 2);// Definer displayets rader og kolonner, 16 bokstaver i 2 linjer.
}
void loop() // Program som skal kjøres om og om igjen
{
lcd.setCursor(3, 0); // Start skriving på posisjon 4 på linje 1 – husk at vi alltid starter å telle med 0.
lcd.print("God morgen"); // Skriv teksten
lcd.setCursor(2, 1); //Start skriving på posisjon 3 på linje 2 – husk at vi alltid starter å telle med 0.
lcd.print("Laget av NDLA"); // Skriv teksten
Serial.println("Laget av NDLA"); // Skriv teksten til serial monitor
delay(pause); // Ta pause i henhold til variabelen pause
}
Utfordring
Kan du lage flere linjer med tekst som skifter?
Tips: Du kan slette alt på displayet mellom hver skriving ved å bruke kommandoen lcd.clear();.
Kan du få displayet til å vise om en knapp er trykka inn?
Kan du få displayet til å vise en variabel Arduinen har lest, eksempelvis en temperatur?
Tips: Du kan skrive både tekst og variabler.
