Een 8×8 LED-matrix aansturen met Arduino Nano – Zonder drivers of bibliotheken
Onderdelen en benodigdheden
| Onderdeel | Aantal |
|---|---|
| Arduino Nano R3 | 1 |
| LED Dot Matrix 8×8 (Common Cathode, 1088AS) | 1 |
| Doorvoert weerstand 330 Ω | 1 (voor alle kolommen? let op: per kolom een weerstand is beter) |
Over dit project
Deze tutorial laat zien hoe je een 1088AS Common Cathode 8×8 LED-matrix aanstuurt zonder driver-chips (zoals MAX7219) en zonder bibliotheken. De multiplexing wordt volledig in software gerealiseerd.
Er is een vervolg-tutorial gepland met de MAX7219 voor vergelijking.
Volledige tutorial en ondersteuning: Patreon of PayPal.
Codevoorbeelden
1. Alle 64 LEDs testen (één voor één)
// Mario's Ideas - Test alle 64 LEDs
#define R1 2 #define R2 3 #define R3 4 #define R4 5
#define R5 6 #define R6 7 #define R7 8 #define R8 9
#define C1 10 #define C2 11 #define C3 12 #define C4 13
#define C5 A0 #define C6 A1 #define C7 A2 #define C8 A3
void setup() {
for (int p = 2; p <= 9; p++) { pinMode(p, OUTPUT); digitalWrite(p, HIGH); } // Rijen HIGH = uit (common cathode)
for (int p = 10; p <= 13; p++) { pinMode(p, OUTPUT); digitalWrite(p, LOW); }
for (int p = A0; p <= A3; p++) { pinMode(p, OUTPUT); digitalWrite(p, LOW); }
}
void SelectRow(int row) {
for (int r = 1; r <= 8; r++) digitalWrite(r+1, (r == row) ? LOW : HIGH);
}
void SelectColumn(int col) {
int pins[8] = {C1, C2, C3, C4, C5, C6, C7, C8};
for (int c = 0; c < 8; c++) digitalWrite(pins[c], (c+1 == col) ? HIGH : LOW);
}
void loop() {
for (int i = 1; i <= 8; i++) {
for (int j = 1; j <= 8; j++) {
SelectRow(i);
SelectColumn(j);
delay(100);
}
}
}
2. Afbeelding tonen (kat) met multiplexing
// Mario's Ideas - Kat afbeelding op 8x8 matrix
// Pin definities zoals boven
int pause = 300;
int Cat[8][8] = {
{1,0,0,0,1,0,0,0},
{1,1,1,1,1,0,0,0},
{1,0,1,0,1,0,0,0},
{0,1,1,1,0,0,0,1},
{0,0,1,0,0,0,0,1},
{0,1,1,1,1,0,0,1},
{0,1,1,1,1,1,0,1},
{1,0,1,1,1,1,1,0}
};
void setup() { /* zelfde als test */ }
void Set_LED_in_Active_Row(int col, int state) {
int pins[8] = {C1, C2, C3, C4, C5, C6, C7, C8};
digitalWrite(pins[col-1], state);
}
void loop() {
for (int j = 0; j < 8; j++) {
SelectRow(j+1);
for (int i = 0; i < 8; i++) {
Set_LED_in_Active_Row(i+1, Cat[j][i]);
}
delay(2 + pause);
}
if (pause > 100) pause -= 100;
else if (pause > 0) pause -= 10;
}
3. Scrollende tekst ("Marios_ideas")
// Mario's Ideas - Scrollende tekst
// Pin definities zoals boven
int position = 0;
int Marios_ideas[8][54] = { /* grote array met letterpatronen */ };
void setup() { /* zelfde */ }
void loop() {
for (int x = 0; x < 5; x++) { // 5 herhalingen per frame voor helderheid
for (int j = 0; j < 8; j++) {
SelectRow(j+1);
for (int i = 0; i < 8; i++) {
int idx = (i + position) % 54;
Set_LED_in_Active_Row(i+1, Marios_ideas[j][idx]);
}
delay(2);
}
}
position = (position + 1) % 54;
}
Schema
Productieproces
- Light-Emitting Diodes: Van Ontstaan tot 100-Jarige Levensduur
- Arduino Coffin Dance Melodie Project – Bouw & Speel de Virale Tune
- Bouw een 24×16 LED Pong-console met Arduino Nano & MAX7219
- Interactieve LED-matrix deurdisplay met PIR-bewegingsensor – Arduino vakantiegroet
- Geluidsgeactiveerd 8-LED Lichtdisplay met Arduino
- Bouw een Slimme Arduino Vierpotige Robot: Stap-voor-Stap Handleiding
- DIY Hot Glue LED Matrix Lamp – Bouw je eigen kleurrijke display
- Naadloze LED-dimmer met Bolt IoT en Arduino UNO
- Een 8×8 LED-matrix aansturen met Arduino Nano – Zonder drivers of bibliotheken
- Arduino Flip Clock met 8×8 LED Matrix – DIY Real-Time Clock Project
- Maxim's MAX25610A/B LED-drivers: compact, hoge efficiëntie, EMI-geoptimaliseerd voor auto & industriële verlichting