in deze video ga ik je leren hoe je een
grafisch LCD display kunt gebruiken
wat heb je hiervoor nodig?
een Arduino, een breadboard
een grafisch dot-matrix display
ik maak gebruik van 128x64 pixels
en de ST7920 LCD controller
10 jumper wires: 4 zwart, 3 rood en 3 gekleurde
en deze template, die kun je vinden in het lesmateriaal
die kun je uitprinten en uitknippen
dat is handig om straks op het
LCD-scherm de pennetjes te herkennen
voor het bouwen van de schakeling gaan
we beginnen met het LCD display
ik heb op de achterkant hier deze header
pins vast gesoldeerd
en op deze manier kan ik deze
aansluiting van het lcd-scherm makkelijk
op mijn breadboard krijgen
ik ga beginnen met het LCD in het breadboard te klikken
staan nu op de achterkant
alleen staan nu op de achterkant alle pen nummers
daar komt het sjabloontje voor van pas
die kun je precies zo over de pinnetjes leggen
waardoor je hier kunt zien waar elke pin voor staat
het LCD moet stroom hebben en die gebruikt 5V
dus ik ga beginnen met de
5V en de GND aan te sluiten
dus ik sluit de GND aan op de min-rail
en ik ga met een rode draad de 5V aansluiten
op de rode kant van de rail
dus nu staan deze horizontale gaatjes
allemaal in verbinding met de rode of met de ground
en dan gaan we beginnen met de eerste 
twee pennen aan te sluiten
dat zijn hier in de "BLK" en de "BLA"
de "BLK" is de min van de backlight en de
"BLA" is de plus van de backlight
de backlight zelf gebruikt 3V of 3.3V
dus ik ga beginnen met "BLA" aan te sluiten
op de 3.3V van de Arduino
en omdat de GND gemeenschappelijk is
maakt het niet uit
of je op de 5V of 3V ground zet,
want er is maar één GND
dus ik ga deze bij de ground van de 5V zetten
dan gaan we verder
en komen we op de pin "PSB" 
die staat hier
De "PSB" bepaalt of het een seriële
of een parallelle data gaat verwerken
wij gaan gebruik maken van SPI
dat is Serial Peripheral Interface
dus die is serieel
dus die moet LOW zijn in ons geval
en HIGH zou betekenen dat we hem 
parallel gaan gebruiken
dus ik ga de "PSB" pin LOW maken
door hem te verbinden met de GND
tot slot moet ons eigen LCD ook stroom krijgen
we hebben net alleen de backlight aangesloten
die gaat wel op 5 volt
dus ik ga de "VCC" aansluiten op de plus
en de "GND" op de min...op deze manier
om het SPI signaal door te kunnen geven
aan ons display
maken gebruik van drie verschillende draden
de eerste is de seriële klok oftewel "SCK"
en die "SCK" die gaan we  aansluiten op 
de Arduino pin 13
dat is op ons display pin "E"
de tweede is "MOSI" oftewel 
Master Out Slave In
en die gaan aansluiten op pin 11 van de Arduino
en dat is hier op het display
"RW" van Read/Write
die gaat op pin 11
let op dat je dus 12 vrijhoudt
en de laatste is Chip Select
het wordt afgekort met "CS"
en die zetten we hier op de
"RS" dat is Register Select
en die sluiten we aan op pennetje 10 van de Arduino
je schakeling is nu compleet
dan ga ik je nu laten zien hoe je de code kunt schrijven
om ons dot-matrix display aan te sturen 
hebben we een bibliotheek nodig
we gaan dat niet allemaal zelf maken
de bibliotheek die we gaan gebruiken is U8g2
vroeger heette dat U8Glib
maar die is inmiddels opgevolgd door U8g2
het fijne is dat deze library, deze bibliotheek
heel veel displays ondersteunt
dat zie je hier staan
allemaal typen controllers waar deze
library mee kan werken
heeft als voordeel dat je echt één keer 
deze bibliotheek leert
en dat je daarna het op allerlei displays  kan gebruiken
ik geen aparte video uitleggen hoe je
specifieke onderdelen van deze bibliotheek gebruikt
vandaag ga ik je laten zien hoe je de
code opzet
zodat je een test beeld krijgt
je kunt op deze site ook 
op de lijst klikken
met alle displays die hij ondersteunt
dan kun je kijken of jouw display erbij zit
er wordt per stuk uitgelegd hoe je hem aanstuurt
want dat verschilt weer per display
ze hebben ook een gallery
en in die gallery kun je bijvoorbeeld zien welke displays
men allemaal gebruikt
dus dan kun je ook zien welke code
ze daarvoor gebruiken
en dat kan soms makkelijk zijn
als je een bepaald specifiek display gebruikt
dat je denkt hoe moet ik die nu aansluiten
het lukt me niet
dan kijk je in deze gallery en dan vind
je vanzelf de manier van aansturen die je nodig hebt
we hebben de bibliotheek nog niet geïnstalleerd
dus dat gaan als eerste doen
gaan we naar schets -> bibliotheken beheren
en dan zoeken we op U8g2
en dan zie je hier dat de U8g2 by Oliver is
dan zeg je installeren
het is een vrij grote library
dat komt omdat hij al die displays moet ondersteunen
we gaan gebruik maken van de
voorbeeldcode van deze library
omdat dat het makkelijkst is om
op te zetten
hij is geïnstalleerd, ik druk op "sluiten"
vervolgens geen bovenin beeld naar
bestand -> voorbeelden
dan zie je onderop U8g2
dan ga ik naar "page buffer" en dan "graphics test"
dat is een schets die ervoor zorgt dat je ziet 
wat het display allemaal kan
dus als ik die open
dan krijg ik een heleboel code en dit is
de code zoals zij hem hebben gemaakt
ik heb er wat commentaar bij gezet 
voor de pen aansluitingen
dus daar ga ik nu eventjes naar wisselen
je ziet heel veel codes
daar scroll ik eventjes doorheen
ga ik zo uitleggen
ik begin eventjes met de pin layout
die heb ik hier neergezet
ons display had allerlei soorten pins
en ik heb je per stuk uitgelegd waarvoor
ze staan en wat je ermee eventueel kunt
zo weet je hier geval als je ooit met
het display iets anders wil aansluiten
welke pinnen voor wat staan en met name
de benaming voor de "SPI" is verwarrend
omdat het Enable Trigger, Read/Write
en Register Select is
maar in SPI staat voor de seriële klok, MOSI 
en Chip Select
hier staan de exacte pin aansluitingen
naar onze Arduino
zoals je ziet dat zijn er 8
want dat heb je net gezien hoe je dat moet aansluiten
dan ga ik nu heeft terug helemaal naar boven
wat ze gedaan hebben is ze importeren die U8g2 lib
en ze kijken of je SPI gebruikt of dat je I2C gebruikt
en of dat ondersteund wordt door je Arduino
en op basis daarvan include ze
de juiste bibliotheken
het meest interessante zijn deze constructors
zoals je ziet en dat is heel veel type displays
en de kunst is dat je hier uitzoekt
welke controller je gebruikt op je LCD
en op die manier kun je ook zien
welke pinnen er aangesloten moet worden
zo heb je hier bijvoorbeeld de clock op pin 13
de data pin 11, chip select op 10 enzovoort
nu heb ik die van ons er al uitgevist
en die heb ik hier opgeschreven
wij maken gebruik van de ST7920
het is een 128x64 en we maken gebruik SPI
hier is de truc dat hier bij de Clock, Data 
Chip Select en Reset
de juiste pin nummers staan ingevuld
wij hebben hem ze aangesloten op 
13, 11 en 10
de Reset gebruiken we niet
en als je dit zo instelt
dan kun je dus meteen je display gebruiken
hieronder staat allemaal voorbeeldcode
van U8g2 om alle verschillende
pagina's te laten zien
ik laat dat nu eventjes voor wat het is
zoals ik al eerder zei hier kom ik later op terug
je kunt u ook altijd eventjes
doorheen lezen om te kijken of je herkent
wat je op je display ziet 
of je het ook terugziet in de code
voor nu kun je je Arduino aansluiten
de code naar je Arduino uploaden
en dan ga ik je nu laten zien hoe dat er
bij mij uit zag
ik heb de code naar mijn Arduino geüpload en
zoals je ziet doet het display het
ik kwam er net achter dat in mijn breadboardje
een fout zit waardoor er kortsluiting ontstaat
dus ik heb alle pennetjes één naar beneden gezet
mocht je denken waarom de aansluitingen anders
zitten dan dat je net in instructie zag
de code werkt, de backlight brandt ook
wil je nu de backlight niet gebruiken
dan kun je heel eenvoudig de plus
uit de 3V trekken
en dan zul je zien dat de backlight uitgaat
je zou er zelfs nog een schakelaar tussen kunnen zetten
ik zet het voor de video eventjes aan
een ander leuk iets om te weten is 
hier zie je nog VCC en V0
die je kun je gaan gebruiken voor het 
contrast van het scherm aan te sturen
op de achterkant van het scherm zit vaak
nog een potmeter
waar je aan kunt draaien voor het contrast
dus dan hoef je dat zelf niet te doen
en dat is het voor deze les
je weet nu hoe je dit matrix display kunt
aansturen
in een andere video ga ik je meer in detail uitleggen wat voor dingen je zal hierop kunt tonen
