Arduino - LED Matrix

LED matrix display, ook wel LED display of dot matrix display genoemd, worden veel gebruikt. In deze handleiding gaan we leren over:

Daarna kunt u de code eenvoudig aanpassen voor andere LED matrices zoals een 16x8 LED matrix, 64x8 LED matrix ...

Hardware Benodigd

1×Arduino Uno R3
1×USB 2.0 kabel type A/B
1×FC-16 LED Matrix 32x8
1×FC-16 LED Matrix 8x8
1×Generic LED Matrix 8x8
1×Jumper draden
1×DC-Stroomaansluiting
1×5V voedingadapter voor Arduino
1×(Aanbevolen) Schroefklem Block Shield voor Arduino Uno
1×(Aanbevolen) Breadboard-Shield voor Arduino Uno
1×(Aanbevolen) Behuizing voor Arduino Uno
1×(Aanbevolen) Prototyping Basisplaat & Breadboard Kit voor Arduino Uno

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over LED Matrix

LED Matrix display

Er zijn veel soorten LED Matrix. Voor Arduino wordt de MAX7219-gebaseerde LED matrix veel gebruikt. De MAX7219-gebaseerde LED matrix heeft de volgende kenmerken:

  • De basisunit van een LED matrix is een blok
  • Elk blok bevat een 8x8 LED matrix (64 LED’s) en een MAX7219 driver
  • Er zijn twee populaire blokvormen: de generieke module en de FC-16 module
  • Een LED matrix kan bestaan uit één blok of meerdere blokken in een keten (daisy-chain)
  • U kunt een kant-en-klare LED matrix met meerdere blokken kopen (bijvoorbeeld 4-in-1, 8-in-1)
  • U kunt ook meerdere blokken kopen en deze aansluiten om een LED matrix van de gewenste grootte te maken
  • U geeft de grootte van de gebruikte LED matrix op in de Arduino code

Pinout

LED Matrix Pinout

Een LED matrix bestaat uit één of meerdere blokken. Elk blok heeft twee groepen pinnen:

  • Ingangspinnen groep:
    • VCC: verbonden met 5V
    • GND: verbonden met GND
    • DIN: Data pin, verbind met SPI MOSI pin van de Arduino
    • CS: Chip Select, verbind met elke digitale pin van de Arduino
    • CLK: Klok pin, verbind met SPI CLK pin van de Arduino
  • Uitgangspinnen groep:
    • VCC: verbonden met VCC van het volgende module
    • GND: verbonden met GND van het volgende module
    • DOUT: Data Out, verbonden met DIN pin van het volgende module
    • CS: verbonden met CS van het volgende module
    • CLK: verbonden met CLK van het volgende module

Bedradingsschema

Als de LED matrix uit één enkel blok bestaat:

  • Verbind de ingangs-pinnengroep met Arduino
  • Laat de uitgangs-pinnengroep onverbonden
Arduino 8x8 LED matrix FC-16 bedradingsschema

This image is created using Fritzing. Click to enlarge image

Arduino 8x8 LED matrix generiek bedradingsschema

This image is created using Fritzing. Click to enlarge image

Als de LED matrix een kant-en-klare set met meerdere blokken is:

  • Verbind de ingangs-pinnengroep met Arduino
  • Laat de uitgangs-pinnengroep onverbonden
Arduino LED matrix display bedradingsschema

This image is created using Fritzing. Click to enlarge image

Als u zelf een LED matrix bouwt uit meerdere blokken:

  • Verbind de ingangs-pinnengroep van het eerste blok met Arduino
  • Verbind de uitgangs-pinnengroepen van elk blok met de ingangs-pinnengroep van het volgende blok
  • Laat de uitgangs-pinnengroep van het laatste blok onverbonden
Arduino 32x8 LED matrix FC-16 bedradingsschema

This image is created using Fritzing. Click to enlarge image

Arduino 32x8 LED matrix generiek bedradingsschema

This image is created using Fritzing. Click to enlarge image

Omdat de display veel stroom trekt (tot 1A bij maximale helderheid):

  • Gebruik niet de 5V pin van de Arduino als voeding
  • Gebruik een externe 5V voedingadapter. Arduino en LED matrix kunnen de stroom delen van dezelfde 5V voedingadapter

Omdat Arduino de LED matrix via SPI-pinnen aanstuurt:

  • Pin 13 (SCK) en 11 (MOSI) van Arduino Uno moeten gebruikt worden. Als u een ander Arduino board gebruikt, raadpleeg dan de officiële documentatie voor de overeenkomstige SPI-pinnen
  • Pin 3 (CS) kan worden aangepast naar elke gewenste digitale pin

Hoe Programmeert u voor LED Matrix

Het aansturen van een LED matrix is niet eenvoudig. Gelukkig zijn er libraries beschikbaar die dit vergemakkelijken. Hieronder een stap-voor-stap uitleg om Arduino code te schrijven die de LED matrix bestuurt:

  • Voeg de libraries toe:
#include <MD_Parola.h> #include <MD_MAX72xx.h>
  • Geef aan welk hardwaretype wordt gebruikt: GENERIC_HW of FC16_HW.
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
  • Definieer hoeveel LED blokken worden gebruikt. Bijvoorbeeld: een 4-in-1 LED matrix heeft 4 blokken.
#define MAX_DEVICES 4
  • Definieer de pin die verbonden is met de CS pin van de LED matrix, bijvoorbeeld pin D3
#define CS_PIN 3
  • Maak een nieuw object van de MD_Parola klasse voor het LED matrix display
MD_Parola ledMatrix = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
  • Code in de setup() functie:
void setup() { ledMatrix.begin(); // initialiseer het object ledMatrix.setIntensity(0); // stel de helderheid in van het LED matrix display (0 tot 15) ledMatrix.displayClear(); // maak het LED matrix display leeg }
  • Toon tekst, getallen en geanimeerde effecten: zie volgend onderdeel

Arduino - LED Matrix Code

De onderstaande code is voor een 32x8 FC-16 LED matrix display (4 blokken), maar is eenvoudig aan te passen voor 8x8, 16x8, 64x8 ...

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-led-matrix */ #include <MD_Parola.h> #include <MD_MAX72xx.h> #define HARDWARE_TYPE MD_MAX72XX::FC16_HW #define MAX_DEVICES 4 // 4 blocks #define CS_PIN 3 // create an instance of the MD_Parola class MD_Parola ledMatrix = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES); void setup() { ledMatrix.begin(); // initialize the object ledMatrix.setIntensity(15); // set the brightness of the LED matrix display (from 0 to 15) ledMatrix.displayClear(); // clear LED matrix display } void loop() { ledMatrix.setTextAlignment(PA_LEFT); ledMatrix.print("Left"); // display text delay(2000); ledMatrix.setTextAlignment(PA_CENTER); ledMatrix.print("Center"); // display text delay(2000); ledMatrix.setTextAlignment(PA_RIGHT); ledMatrix.print("Right"); // display text delay(2000); ledMatrix.setTextAlignment(PA_CENTER); ledMatrix.setInvert(true); ledMatrix.print("Invert"); // display text inverted delay(2000); ledMatrix.setInvert(false); ledMatrix.print(1234); // display number delay(2000); }

Snelle Stappen

  • Verbind de Arduino met de LED matrix zoals in het bedradingsschema hierboven beschreven
  • Verbind de Arduino met de PC via een USB-kabel
  • Ga in Arduino IDE naar het Libraries icoon in de linker zijbalk
  • Zoek op “MD_Parola” en vind de MD_Parola library
  • Klik op de Installeren knop
Arduino MD_Parola library
  • Het kan zijn dat u gevraagd wordt de MD_MAX72XX library te installeren vanwege afhankelijkheid. Klik dan op Installeer Alles
Arduino MD_MAX72XX library
  • Kopieer bovenstaande code en open deze in Arduino IDE
  • Klik op de Upload knop om de code naar de Arduino te uploaden
  • Bekijk het LED matrix display

Arduino LED Matrix Code – Scrollende Tekst

Als u een lange boodschap wilt tonen die niet volledig op het LED matrix display past, kunt u de scrollende tekst-techniek gebruiken.

De onderstaande Arduino code laat zien hoe u een boodschap laat scrollen over het LED matrix display.

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-led-matrix */ #include <MD_Parola.h> #include <MD_MAX72xx.h> #define HARDWARE_TYPE MD_MAX72XX::FC16_HW #define MAX_DEVICES 4 // 4 blocks #define CS_PIN 3 // create an instance of the MD_Parola class MD_Parola ledMatrix = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES); void setup() { ledMatrix.begin(); // initialize the object ledMatrix.setIntensity(15); // set the brightness of the LED matrix display (from 0 to 15) ledMatrix.displayClear(); // clear led matrix display ledMatrix.displayScroll("Hello, DIYables", PA_CENTER, PA_SCROLL_LEFT, 100); } void loop() { if (ledMatrix.displayAnimate()) { ledMatrix.displayReset(); } }

Voor meer teksteffecten, bezoek MD_Parola Library Reference.

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en helpt u stap voor stap de installatie en programmering beter te begrijpen.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!