8×8 LED-matrix met MAX7219 beheersen: scrollende tekst & Android Bluetooth-besturing
Overzicht
De MAX7219-driver kan 64 individuele LEDs aansturen met slechts 3 draden (DIN, CLK, CS) en ondersteunt daisy-chaining van meerdere modules. We bouwen drie voorbeelden: basisbesturing, scrollende tekst, en Bluetooth-besturing via een zelfgemaakte Android-app.
MAX7219 werking
De IC heeft 16 uitgangspinnen (8 rijen + 8 kolommen). Maximaal 8 LEDs branden tegelijk. Door snel door kolommen en rijen te schakelen (multiplexing) ziet het oog continu licht. De breakout-board bevat een weerstand (pin 18) voor helderheidsinstelling; de waarde hangt af van de LED forward voltage (zie datasheet-tabel).
Schakeling
VCC/GND op 5V/GND van Arduino. DIN, CLK, CS op willekeurige digitale pinnen. Bij meerdere modules: DOUT van vorige → DIN van volgende.
Voorbeeld 1: Basis MAX7219-code
Gebruikt de MaxMatrix bibliotheek. Karakters worden gedefinieerd als byte-arrays (90° geroteerd voor gemakkelijk scrollen).
#include <MaxMatrix.h>
int DIN = 7, CLK = 6, CS = 5, maxInUse = 1;
MaxMatrix m(DIN, CS, CLK, maxInUse);
char A[] = {4, 8, B01111110, B00010001, B00010001, B01111110};
char smile01[] = {8, 8, B00111100, B01000010, B10010101, B10100001, B10100001, B10010101, B01000010, B00111100};
void setup() { m.init(); m.setIntensity(8); }
void loop() {
m.setDot(6,2,true); delay(1000);
m.writeSprite(2, 0, A); delay(1000);
m.writeSprite(0, 0, smile01); delay(1000);
m.shiftLeft(false,false); // scroll left
}
Voorbeeld 2: Scrollende tekst
Karakterset (letters, cijfers, symbolen) wordt in PROGMEM (flash-geheugen, 32 KB) opgeslagen in plaats van SRAM (2 KB). De functie printStringWithShift() extraheert tekens en scrollt ze met instelbare snelheid.
#include <MaxMatrix.h>
#include <avr/pgmspace.h>
PROGMEM const unsigned char CH[] = { ... }; // volledige ASCII-tabel
char text[] = "HowToMechatronics.com ";
void loop() { printStringWithShift(text, 100); } // 100 ms per stap
Voorbeeld 3: Android-app via Bluetooth (HC-05)
De app (gebouwd met MIT App Inventor) stuurt drie typen commando's:
- Indicator '1' – nieuwe tekst (wis buffer, lees rest van string)
- Indicator '2' – scrollsnelheid (slider-waarde)
- Indicator '3' – helderheid (slider-waarde)
Arduino-code gebruikt SoftwareSerial voor Bluetooth (standaard 38400 baud). In loop() wordt continu gescrold; bij binnenkomende Bluetooth-data wordt de indicator gecheckt en de bijbehorende actie uitgevoerd.
SoftwareSerial Bluetooth(8, 7);
char text[100] = "HowToMechatronics.com ";
int scrollSpeed = 100, brightness = 15;
void loop() {
printStringWithShift(text, scrollSpeed);
if (Bluetooth.available()) {
char indicator = Bluetooth.read();
if (indicator == '1') { /* nieuwe tekst */ }
else if (indicator == '2') { scrollSpeed = 150 - Bluetooth.readString().toInt(); }
else if (indicator == '3') { brightness = Bluetooth.readString().toInt(); m.setIntensity(brightness); }
}
}
De .aia-bestanden van de app zijn downloadbaar. Met deze basis kun je eigen LED-matrix displays bouwen voor informatiepanelen, klokken of decoratieve effecten.
Productieproces
- Slimme spaarpot bouwen: Muntenacceptor besturen met Arduino Nano
- Bouw een 24×16 LED Pong-console met Arduino Nano & MAX7219
- Een LED bedienen via Bluetooth met Arduino – Eenvoudige DIY Handleiding
- Een Arduino LED besturen met Cortana via Bluetooth op Windows 10
- Een 8×8 LED-matrix beheersen met Arduino Uno: Stap-voor-stap handleiding
- Arduino Uno & Bluetooth voor afstandsbediening van auto: stap-voor-stap handleiding
- Arduino robotarm besturen via speciale Android-app
- Bluetooth 8x8 LED-matrix met Scrollende Tekst – Arduino Project
- Klassiek Asteroids-spel met Arduino Mega en MAX72XX LED-matrix
- Meerdere Servos Besturen Via Bluetooth: Arduino & Android App
- Arduino Snake-spel op een 8x8 LED-matrix bouwen