Arduino LED-Matrix mit Max7219 Treiber

Du erfährst hier, wie Du eine LED-Matrix mit Arduino steuern kannst. Mit der richtigen LED-Matrix ist das kein Problem.

Ich habe viel Zeit mit dem Programmieren von LED-Matrix-Displays verbracht und wenn ich eines gelernt habe dann ist es, dass es wenig Sinn macht, eine LED-Matrix direkt an Arduino anzuschließen. Die unterschiedlichen LED-Matrix-Arten wie Common Cathode und Common Anode, die unterschiedlichen Pinbelegungen der Displays und das Pin-Multiplexing machen es einem wirklich nicht leicht. Spar dir diesen Aufwand und investiere gleich in eine LED-Matrix mit Steuer-IC wie dem Max7219.

Max7219 LED Matrix

Dieser LED-Treiber ist in der Lage 64 LEDs gleichzeitig zu steuern und benötigt dabei nur der Pins des Arduino Boards. Dabei handelt es sich um die so genannte SPI-Schnittstelle. Hier werden also Daten zwischen Arduino und Max7219 ausgetauscht. Es macht wie gesagt total Sinn, ein LED-Matrix-Modul zu kaufen, das diesen Chip bereits integriert hat. Diese Module kosten mittlerweile fast weniger als die LED-Matrix-Displays allein. Außerdem kann man viele davon hintereinander betreiben.

Schaltplan Arduino LED-Matrix

Der Aufbau ist relativ Simpel. Die LED-Matrix benötigt natürlich 5V+ und GND, darüber hinaus die Verbindung zur SPI-Schnittstelle. Die Pins 10, 11, 12 vom Arduino werden an die Anschlüsse CS, CLK und DIN des LED-Matrix-Displays angeschlossen.

Arduino LED-Matrix Max7219

Das Fritzing-Bauteil findest du übrigens hier: Fritzing Bauteil.

Code

Zum Betreiben des Max7219-ICs benötigst du die LedControl-Programmbibliothek. Klicke in der Arduino-Software auf Sketch>Bibliothek einbinden>Bibliothek verwalten … und trage in das Suchfeld max7219 ein. Installiere die LedControl by Eberhard Fahle Bibliothek in der aktuellen Version. Nun findest du unter Datei>Beispiele>LedControl ein paar Beispiele.

Ansonsten ist hier eine bereinigte Version:

#include "LedControl.h"

LedControl lc=LedControl(12,11,10,1);
byte figure[8]={B00111100,B01000010,B10011001,B10110101,B10111101,B10011001,B01000010,B00111100};

void setup() {
  lc.shutdown(0,false);
  lc.setIntensity(0,8);
  lc.clearDisplay(0);
}

void loop() { 
  for (int i=0; i<8; i++){
    lc.setRow(0,i,figure[i]);
  }
  delay(20);
}  


/*
Weitere interessante Befehle:

lc.setColumn(0,col,B10100000);
lc.setLed(0,row,col,true);

*/

Hast du weitere Fragen? Probier doch mal unser brandneues Forum zu Arduino aus!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Ich akzeptiere

 

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.