Mit einem LED Matrix Display, beispielsweise 8×8 LEDs mit MAX7219 Treiber, kann man nicht nur Laufschriften anzeigen und kleine Animationen darstellen. Man kann die 64 Pixel auch als Zeichenfläche benutzen.

Ich habe dazu 2 Potentiometer zur Ansteuerung der X- und Y-Achsen und einen Pushbutton (als Radiergummi) an den Arduino angeschlossen und mit Hilfe der MaxMatrix Library mit wenigen Zeilen Code zum Leben erweckt.

Hier das Video:

Die im Video angesprochenen Links:

Und noch der Programmcode:

// MaxMatrix-Library einbinden. Infos siehe http://www.makerblog.at/?p=237
#include <MaxMatrix.h>
 
// Pushbutton an Digitalpin 2
const int buttonPin = 2;
 
const int aXPin = 5;
const int aYPin = 4;
 
// Zustand des Buttons (1=gedrückt, 0=offen)
int buttonState = 0; 
 
// Anbindung des LED Displays
int data = 8;
int load = 9;
int clock = 10;
int maxInUse = 1;
 
// Ein Objekt vom Typ MaxMatrix wird erzeugt
MaxMatrix m(data, load, clock, maxInUse);
 
// Setup-Funktion, wird nur einmal beim Programmstart aufgerufen
void setup() {
  m.init(); // Display-Objekt initialisieren
  m.setIntensity(15); // Helligkeit auf Maximalwert setzen
  pinMode(buttonPin, INPUT); // Pin für den Pushbutton auf Input setzen
  Serial.begin(9600); // Serielle Kommunikation mit dem PC starten
}
 
// Loop Funktion wird während der Laufzeit endlos wiederholt
void loop() {
 
  // Zustand des Pushbuttons abfragen und merken
  buttonState = digitalRead(buttonPin);
 
  // Analogwerte der beiden Potentiometer einlesen (10bit, 0-1023)
  int ax = analogRead(aXPin);
  int ay = analogRead(aYPin);
 
  // Den Zahlenbereich 0-1023 auf die 8 Spalten des Displays mappen (0-7).#
  // Man würde hier 
  // int x = map(ax,0,1023,0,7);
  // erwarten, aber die Variante mit 1024 und 8 funktioniert besser
  int x = map(ax,0,1024,0,8);
  int y = map(ay,0,1024,0,8);
 
  // Zu Testzwecken die gemessenen und gemappten Werte seriell ausgeben
  Serial.print(ax);
  Serial.print("-");
  Serial.print(ay);
  Serial.print(" = ");
  Serial.print(x);
  Serial.print("-");
  Serial.println(y);
 
  // setDot(x,y,state) des MaxMatrix-Objekts schaltet die LED an der Position
  // ein oder aus. 
  // Zuerst LED auf buttonState setzen, d.h. wenn der Radiergummi-Button
  // nicht gedrückt ist, wird die LED zuerst ausgeschaltet. Ist der Radiergummi
  // gedrückt, wird die LED zuerst eingeschaltet (da buttonState = 1)
  m.setDot(y,x,buttonState);
  // Etwas warten
  delay(15);
  // Und die LED auf NICHT buttonState setzen. Bei gedrücktem Radiergummi also
  // auf NICHT 1, also 0 setzen und damit auschalten, bei nicht aktivem 
  // Radiergummi auf NICHT 0, also 1.
  // Nach dieser Zeile ist die LED also im gewünschten Zustand.
  m.setDot(y,x,!buttonState);  
  // Wieder etwas warten und alles wieder von vorne.
  delay(15);
 
}

11 thoughts on “Arduino LED Matrix Display – 8×8 Pixel Zeichenprogramm

  • Pingback: 2D Arm mit 2 Servos | Makerblog.at

    • 11. August 2014 um 21:00
      Permalink

      Danke für den Kommentar, ich sehe dass der Sourcecode im Blog-Eintrag nicht vollständig ist und der -Teil beim Speichern von WordPress verschluckt wird. Vielen Dank für den Hinweis, ich werde das asap anpassen.

      Zu deinem Problem:
      Am einfachsten ist der Fehler zu finden, wenn du die einzelnen Parameter über die Serial.print-Ausgabe im Terminal der Arduino-IDE kontrollierst, z.B.

      // Analogwerte der beiden Potentiometer einlesen (10bit, 0-1023)
      int ax = analogRead(aXPin);
      int ay = analogRead(aYPin);
      Serial.println(ax);
      Serial.println(ay)

      Interessant sind vor allem die von den Potis eingelesenen Werte ax und ay. Bewegen sich diese wirklich zwischen 0 und 1023 oder eventuell in einem kleineren Bereich (wegen des kleineren Potis), dann müsstest du die min/max-Werte in der Map-Funktion anpassen. Andere Fehlerquellen gibt es direkt nicht, sofern die Schaltung selbst funktioniert.

      Antworten
  • 24. Januar 2017 um 21:54
    Permalink

    wo kann man die maxmatrix library runterladen, weil alle links die ich ausprobiere funktionieren nicht

    könnte das jemand erklären

    thx lg
    Colin

    Antworten
      • 25. Februar 2017 um 17:42
        Permalink

        Hi,
        Ich beginne gerade erst damit ein Arduino zu verwenden und kennen mich deshalb noch nicht so mit der nötigen Materie aus.
        Deshalb frage ich wie ich diese 3 files in die library einfügen kann?

        Antworten
        • 27. Februar 2017 um 17:42
          Permalink

          Hallo Mike, im Verzeichnis /libraries in deinem /Arduino-Ordner (unter /Dokumente oder wo auch immer, abhängig von deinem Betriebssystem) ein Unterverzeichnis /MaxMatrix anlegen und in dieses alle 3 Files von den Google Docs abspeichern. Dann kann die Library im Beispielsketch eingebunden werden.

          Antworten
  • 29. Januar 2018 um 14:28
    Permalink

    bei mir funktionirt es nicht auf meinem arduino uno und mega 2560 es könnte an der Library ligen weil ich sie nicgt habe und bei allen links wo man diese sich holen kann funktionirt es auch nicht entweder ungültige Library oder es sind .rar dateien drinnen kann mir jeman helfen

    Antworten
  • 12. Februar 2018 um 15:40
    Permalink

    Welche Typen Potenziometer wurden denn hier verwendet? Also welche Leistung müssen die abkönnen und in welchem Widerstandsbereich arbeiten die? :)
    Bin noch ein Neuling. Wenn du mir Produktnummern nennen könntest, das wäre super!

    Antworten

Schreibe einen Kommentar

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

Time limit is exhausted. Please reload the CAPTCHA.

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