Het programmeren van een Arduino is leuker wanneer je er direct mee aan de gang kunt gaan. Veelal moet er echter eerst een schakeling gemaakt worden, waarbij door fouten in de schakeling, het bijbehorende programma niet lijkt te werken.
Het is dan prettig dat er een complete schakeling gebruikt kan worden met drukknoppen, led's en een eenvoudige display. Omdat ik nog verschillende onderdelen ongebruikt had liggen, leek het mij leuk om daar een complete interface van te maken, welke direct ingezet kan worden.
Een voordeel is dat er...
niet met draadjes op een breadboard gepriegeld hoeft te worden
de Arduino Nano al van de benodigde software (.ino) voorzien is
de interface getest is voordat deze verzonden wordt
Windows software beschikbaar is om de Arduino aan te sturen of in te lezen
op internet veel over te vinden is
verschillende programma's voor de Arduino beschikbaar zijn (Zogenaamde .HEX bestanden)
Een .HEX bestand is een programma dat met behulp van een computer in de Arduino Nano geladen kan worden. De onderstaande .HEX bestanden zijn eenvoudig te downloaden.
Scroll_Tekst.ino.hex - Te gebruiken als lichtkrant, 'lopende teksten' op de display.
Klok.ino.hex - Een klok met uren, minuten en seconden. Deze loopt zolang de Arduino aan is.
De bovenstaande .hex programma's van de Arduino kunnen niet aangepast worden, maar wel eenvoudig met behulp van XLoader in de Arduino geplaatst worden. Voor het eventueel aanpassen van een programma moet het .ino bestand gebruikt worden.
Beschrijving van de interface
De complete interface bestaat uit een Arduino Nano, TM1638 LED Segmenten Display met LED's en Knoppen, een Universeel Printed Circuit Board en een eenvoudige behuizing.
Voor deze interface worden de onderstaande aansluitingen gebruikt.
Interface aansluitingen
Arduino poort
TM1638
5V
VCC
GND
GND
STB
D4
CLK
D3
DIO
D2
Wanneer u zelf deze interface wilt programmeren, zijn voor een goede werking vooral de aansluitingen STB, CLK en DIO belangrijk. Deze aansluitingen moeten bij het starten van de software in de Arduino omgeving ingesteld worden. VCC en GND spreken voor zichzelf.
Als voorbeeld staan hieronder stukjes uit de broncode voor de Arduino.
// Bepaal op welke pinnen STB, CLK en DIO aangesloten zijn.
// Voor Arduino Nano op universeel PCB TM1638 module(2, 3, 4);
// Voor Arduino Nano Badge
// TM1638 module(4, 3, 2);
Wanneer er aan het begin van een regel // staat, wordt die code of tekst niet gebruikt door het programma.
// Bepaal op welke pinnen STB, CLK en DIO aangesloten zijn.
// Voor Arduino Nano op universeel PCB
//TM1638 module(2, 3, 4);
// Voor Arduino Nano Badge TM1638 module(4, 3, 2);
U kunt zien dat de volgorde dus anders is. Bij het uploaden van de programma's met XLoader, kunt u zelf de door u gebruikte interface kiezen en zijn de aansluitingen automatisch goed ingesteld.
Zelf programma's schrijven/aanpassen
Het zelf schrijven of aanpassen van de Arduino software is natuurlijk een leuke uitdaging. Het is dan ook de bedoeling dat ik daarvoor een aantal lessen zal ontwikkelen. Het lastige is wel dat er voor de TM1638 module een aantal bibliotheken geladen moeten worden. Op zich zou dat weinig problemen moeten opleveren, maar sommige nieuwere versies daarvan zijn niet altijd uitwisselbaar.
In eerste instantie is het programma Scroll_Tekst.ino.hex het meest interessant om uit te werken. U kunt dan zelf de teksten welke op het scherm verschijnen aanpassen. Mocht dit nog niet klaar zijn dan mag u eenmalig bij aankoop deze teksten zelf aanleveren waarmee ik dan een persoonlijk .HEX bestand zal maken en mailen.
Inmiddels is er een nieuwe versie van het programma voor de lichtkrant.
Het installeren van de Aduino IDE
Voor het schrijven of aanpassen van een Arduino programma wordt meestal de IDE gebruikt.
IDE = Integrated Development Environment ofwel Samengevoegde Ontwikkel Omgeving
Het installeren van de IDE en het bewerken van het Scroll Tekst programma wordt in het onderstaande document besproken.
Wanneer Send_Tekst.ino.hex in de Arduino Nano staat moet, bij het aanzetten, op de display de tekst verschijnen.
De onderstaande Windows programma's kunnen dan samen werken met de interface.
TestArduinoNano
Met het programma TestArduinoNano kan de juiste werking van de interface gecontroleerd worden. Alle drukknoppen, Led's en de display zijn apart in te lezen / aan te sturen. Het programma is geschikt voor verschillende interfaces.
Meer info TestArduinoNano (downloads, beschrijving, handleiding enz.)
StartByIntFace
Met het programma StartByIntFace kunnen met de drukknoppen op de interface programma's gestart en geluidsinstellingen zoals volume, volgende, vorige aangepast worden. Het programma ondersteunt 16 drukknoppen waarvan er bij deze interface 8 gebruikt kunnen worden.
Meer info StartByIntFace (downloads, beschrijving, handleiding enz.)
Lichtorgel
Met het programma Lichtorgel kan het volume van verschillende frequenties op het scherm en de interface led's weergegeven worden. Er kunnen twee interfaces (stereo) gelijktijdig aangestuurd worden, waarbij dan op de ene de tekst left en op de andere de tekst right weergegeven wordt.
Meer info Lichtorgel (downloads, beschrijving, handleiding enz.)
Digitale Technieken
Het programma Digitale Technieken is een lesprogramma waarmee de basis functies van schakelen behandeld worden. Het betreft onder meer stroomkringschema's en logische symbolen.
Met het programma EasyProgIntFace kunt u in 'ladder' de interface programmeren/aansturen. Het programma wordt niet in de Arduino Nano geplaatst, de interface wordt aangestuurd door het Windows programma.
Meer info EasyProgIntFace (downloads, beschrijving, handleiding enz.)
Lichtkrant
Wanneer Scroll_Tekst.ino.hex in de Arduino Nano staat moet, bij het aanzetten, op de display de scrollende tekst Educatieve Technische Software
verschijnen.
Deze tekst wordt alleen na een reset getoond. De andere teksten kunnen met de knoppen S1-S5 gekozen worden.
De teksten kunnen alleen in de broncode .ino aangepast worden.
In een eerdere versie maakte ik in de broncode gebruik van meerdere bibliotheken welke helaas niet meer compatible zijn en voor veel problemen zorgden. Er is een nieuwe versie welke, voor zover ik ondervonden, heb geen problemen veroorzaakt. De broncode is hieronder te downloaden en kunt u dus 'eigen' teksten invoeren.
Bekijk de oude code van Scroll_Tekst.ino in html.
Door het gebruik van de onderstaande library's InvertedTM1638.h TM1638.h TM1640.h TM16XX.h en TM1638QYF.h
wat echter voor veel problemen in de IDE zorgt.
Bekijk de nieuwe code van Scroll Tekst.ino in html. (3 oktober 2026)
De nieuwe code maakt alleen gebruik van de library TM1638plus.h en werkt, voor zover ik nu weet, zonder problemen.
Voor het plaatsen van tekst op de display tm.displayText() kan niet een samengestelde String variabele gebruikt, maar moet een char gebruikt worden, wat het wel iets lastiger maakte.
U kunt de code gewoon in de Arduino IDE plakken.
Meer info Lichtkrant (downloads, beschrijving, handleiding enz.)
Klok
Deze klok heeft geen externe module nodig om te kunnen werken. Er wordt gebruik gemaakt van een interrupt welke om de seconde, de eerst door de gebruiker ingestelde tijd, bijwerkt.
Met de drukknoppen kunnen uren, minuten en seconden ingesteld worden.
Meer info klok (downloads, beschrijving, handleiding enz.)
XLoader
XLoader is een klein en redelijk eenvoudig programma waarmee onder Windows een programma (code) naar een Arduino gekopieerd kan worden. Het Arduino programma kan niet aangepast worden omdat het in zogenaamde .hex code geschreven/gemaakt is.
Met de Adruino IDE kan de broncode van een programma naar (.ino) .hex code 'vertaald' worden. We noemen dat ook wel compileren.
De benodigde programma's voor de Arduino Nano worden met het programma meegeleverd. U hoeft in principe alleen maar de map te kiezen met het daarin door u gewenste programma.
Meer info XLoader (downloads, beschrijving, handleiding enz.)
Prijs en bestellen
De interface kost 15 Euro momenteel weet ik nog niet wat de verzendkosten zijn het zou nl. in een brievenbus moeten passen. Binnenkort meer info.
Al enkele malen ben ik via mail benaderd door bedrijven die mijn site met behulp van AI willen aanpassen/opfrissen/moderniseren. Daar ben ik niet op ingegaan ondanks dat ik weet dat het er best 'beter' van kan worden. Zelf zie ik dat, wat Ai eventueel gebreken zou noemen, meer als een eigenschap/handtekening/kenmerk van mij. Laat ik het zo zeggen, ik wordt niet graag 'genormaliseerd' o.i.d.
Hoewel ik dus terughoudend ben in het gebruiken van AI leek het mij wel leuk eens te 'kijken' wat AI van de Arduino code vindt. Daarvoor zijn meerdere sites beschikbaar.
Ik heb de code dus geupload en kreeg dit als resultaat terug. Oef, dat geeft nogal wat opmerkingen.
scroll speed.
Terecht wordt opgemerkt dat de scroll speed op 0 gezet kan worden, wat een onleesbaar resultaat geeft. Dat klopt, ik heb er voor gekozen om te laten zien hoe snel het kan zijn, hoewel dat dus inderdaad in principe niet te zien is.
any button event — even a noise glitch — restarts the current message.
Daar is bewust voor gekozen. Wanneer een knop ingedrukt wordt verschijnt de functie van de gemaakte drukknop op de display. Zo is eenvoudig te zien is waarvoor gekozen is, maar op zich snap ik de opmerking wel.
the configured startup brightness is never actually applied
Dat klopt en kan terecht gezien worden als een fout. Echter is de standaard instelling bij het starten of resetten van de Arduino 2, zoals ook in de variabele Helderheid vastgelegd wordt. De opdracht tm.brightness(Helderheid); kan dus aan het begin van de code opgenomen worden, maar heeft geen effect.
a very long text added later silently eats stack
Op zich had ik elke tekst apart in een String geplaatst. De opdracht om de String op de display te tonen tm.displayText(), gaf foutmeldingen bij het gebruiken van een String array. Uiteindelijk dus opgelost door de geselecteerde String om te zetten in Char. Tevens kan de String niet zondermeer gebruikt worden omdat deze letter voor letter 'afgebroken' wordt voor de lichtkrant.
All nine messages live in SRAM
Er is een heel verhaal beschikbaar over het gebruik van SRAM en FLASH. Voor nu vind ik het wel even welletjes.
Unbounded wait-for-release Wanneer een drukknop sluiting maakt zal de schets eeuwig blijvan hangen. Er wordt een oplossing voor gegeven, waarbij na 5 seconden de code 'vrijgegeven' wordt. Echter zal deze dan direct weer in de 'loop' terechtkomen.
Down 1000" doesn't fit the display Ja, da's duidelijk. Ik zou de spatie achter "Down " in de array weg kunnen halen. De teksten Up en Down zouden eventueel vervangen kunnen worden door high en low. (Alleen low heeft max 1000)
HelderheidOud is dead logic Ha da's waar ook. De regel HelderheidOud != Helderheid kan dus gewoon weg.
What's done well Ach da's meegenomen.
Het is duidelijk dat AI de code beter begrijpt dan ik. Ben eigenlijk wel benieuwd of AI code met hetzelfde resultaat kan schrijven en welke opdrachten daarvoor aan AI gegeven zouden moeten worden.