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);
 
}

9 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

Schreibe einen Kommentar

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

Time limit is exhausted. Please reload the CAPTCHA.