Spelen met een heel klein LCD schermpje en een Arduino

“Papa, hoe werkt deze dan eigenlijk?”. Dat was de vraag die ik kreeg toen mijn oudste dochter het zakje zag liggen met een van de bestellingen van AliExpress. Eerder vandaag hadden we namelijk samen naar deze blogpost gekeken toen het ging over de verschillende manieren waarop de fijnstofmeters verbinding maken met de ESP8266. Toen ging het over UART, SPI en I2C (als jou dat niets zegt, lees dan ook even die blogpost!).

Er waren twee manieren om erachter te komen op welke manier dit kleine LCD verbonden moest worden met een Arduino (of ESP8266): foetelen (!) en op de pagina van de verkoper kijken of naar de tekst bij de pinnen kijken. Dat was gemakkelijk: naast GND en VCC waren er maar 2 pinnen over, dus was het geen SPI, en met SDA en SDL bij de andere twee pinnen was het duidelijk: het was een I2C verbinding.

“Maar hoe zorg je er dan voor dat er tekst op komt? Moet dat dan pixel voor pixel?”, was de vervolgvraag. Ja, maar gelukkig ook weer niet. Daar hebben mensen namelijk “bibliotheken” voor gemaakt die een groot deel van de complexiteit verbergen. “Laten we het gewoon een uitproberen”, zei ik. Nu was de pagina van de verkoper toch nog handig, want we moesten nog een paar dingen meer weten, bijvoorbeeld of hij 3V of 5V wilde hebben. Als de verkoper die info niet online had staan, dan was even op de achterkant van het LCD scherm kijken ook handig. Daar stond namelijk OLED-091, en als je dat in Google invoert krijg je een zee van informatie. Het LCD-scherm kan zowel op 3V als op 5V en heeft een SSD1306 chip. Adafruit heeft daar een library voor gemaakt voor de Arduino en ook voor de ESP8266  is er eentje te vinden. Eitje dus om dit aan de praat te krijgen. Of zo dachten we.

Het aansluiten van de kabels, het installeren van de bibliotheken, het openen en draaien van een van de voorbeelden, dat ging inderdaad zonder problemen. Maar toen kwam de vraag: “Kunnen we ook ons eigen plaatje laten bewegen??”. Ehm, ja, maar dat duurde uiteindelijk een uur voordat het werkte. Daarom ook een blogpost om vast te leggen hoe we het uiteindelijk voor elkaar gekregen.

Het “probleem” bij het weergeven van plaatjes op het LCD-scherm is dat je niet zomaar een plaatje er naar toe kunt sturen. Het display heeft een resolutie van 128×32 pixels. Een smilie (gemaakt in PowerPoint en toen opgeslagen als afbeelding) die er zo uitziet:

wordt als bitmap van 16×16 pixels in Arduino dit:

Het “ontdekken” hoe die code er dan precies uitziet, dát was de uitdaging. We hebben een paar online converters en een offline converter uitgeprobeerd, inclusief die van Adafruit zelf, maar we kregen het niet voor elkaar. Er werd wel wat op het beeldscherm getoond, maar het leek niet op de afbeelding waar we mee van start gingen.

Uiteindelijk zijn we op deze website uitgekomen en warempel, het werk!
Waar we eerst helemaal met conversie vooraf naar BMP, zelf converteren naar grijstinten, nu hoefde dat niet, gewoon de JPG/PNG uploaden en klaar. Het is wel handig als de afbeelding de juiste verhoudingen heeft zodat die niet geconverteerd hoeven te worden.

Ik heb volgens mij ook nog wel een LCD schermpje liggen dat gebruik maakt van SPI in plaats van I2C. Die zouden we nu ook probleemloos aan moeten kunnen sluiten. Het is jammer dat de vakantie weer bijna voorbij is.

0 0 stemmen
Bericht waardering
2 Reacties
Inline Feedback
Bekijk alle reacties
trackback

Het verhaal achter het filmpje: https://t.co/lqFPQhaH6v Het begon allemaal met een heel eenvoudige vraag van mijn o… https://t.co/T8ohDG6Yb5

trackback

Spelen met een heel klein LCD schermpje en een Arduino https://t.co/Yhv1TVQFfJ