Main /

Arduino Led Matrix

Arduino Led Matrix

/ HomePage / Computerthemen / Hardware / Microcontroller / ArduinoLedMatrix

Ansteuern einer 8x8 LED-Matrix mit dem Arduino

en This page is german language only. But you can view a translated version using Google Translator by clicking this link! en

Das Matrixmodul

Das Matrixmodul ist ein CILE1088A/B das bei ebay im 10er-Pack für ca. 12 Euro Versandkostenfrei aus Hongkong erhältlich ist.

Die Pinbelegung ist chaotisch. Da kein Datenblatt im Netz zu finden ist habe mir die Mühe gemacht, die Belegung selbst herauszufinden.

Die Orientierung des Moduls für die Pinbelegung ist dabei so, dass der seitliche Nummernaufdruck "6088" von einem weg zeigt, sich also an der oberen Stirnseite befindet. Würde man jetzt von unten gucken, sähe man die durch die Vergußmasse erscheinende Typenbezeichnung auf dem Kopf stehend.

Die LEDs leuchten schon sehr hell wenn man sie mit knapp 4mA ansteuert.

Pinouts

Pinout des LED-Treiberchips AS1107

Ansteuerung

Um das Modul ohne Multiplexing direkt von einem Microcontroller anzusteuern, bräuchte man eigentlich 16 I/O Pins. Die haben wir aber nicht. Der Arduino Duemilenove1 hat maximal 13, und selbst wenn würde man nicht so viele I/O-Pins nur für die Anzeige opfern wollen. Die Lösung heißt Multiplexing. Dabei werden Reihen und Spalten sehr schnell nacheinander durchgeschaltet und die gewünschten LEDs leuchten sehr kurz, aber dafür mit überhöhtem Strom und dadurch sehr hell auf. Wenn das schnell genug passiert, hat man den Eindruck eines stehenden Bildes (Fernsehprinzip, Persistance of Vision).

Ansteuerung mit dem AS1107 von austriamicrosystems

Der Chip AS1107 ist ein Treiber-IC der acht 7-Segment-Anzeigen oder auch eine einzelne LED-Matrix ansteuern kann. Er ist Pin- und Softwarekompatibel mit dem MAX7221 von Maxim, aber erheblich preiswerter. Er wird seriell angesteuert und belegt damit erfreulicherweise nur drei Output-Pins am Arduino für die Signale /CSN,CLCK und DIN. Da der Chip außerdem LED-Konstantstromquellen besitzt, kann er direkt ohne Vorwiderstände an die LED-Matrix angeschlossen werden. Es ist lediglich ein externer Widerstand zur Einstellung des LED-Stroms nötig.

Die Treiber sind kaskadierbar. Um mehrere Module anzusteuern braucht man also auch nur drei I/O Leitungen.

Verdrahtung

Pin ICNameFunktionVerbinden mit
1DINSerial Data InputArduino Pin 4
2DIG0Digit Line 0Matrix Pin 16 (A)
3DIG4Digit Line 4Matrix Pin 10 (E)
4GNDGroundMinus/Masse/Ground
5DIG6Digit Line 6Matrix Pin 6 (G)
6DIG2Digit Line 2Matrix Pin 11 (C)
7DIG3Digit Line 3Matrix Pin 3 (D)
8DIG7Digit Line 7Matrix Pin 13 (H)
9GNDGroundMinus/Masse/Ground
10DIG5Digit Line 5Matrix Pin 5 (F)
11DIG1Digit Line 1Matrix Pin 15 (B)
12/CSNChip SelectArduino Pin 2
13CLKSerial-Input ClockArduino Pin 3
14SEGASegment Drive Line AMatrix Pin 7 (2)
15SEGFSegment Drive Line FMatrix Pin 14 (7)
16SEGBSegment Drive Line BMatrix Pin 2 (3)
17SEGGSegment Drive Line GMatrix Pin 9 (8)
18ISETSet Segment Currentüber 10KOhm Widerstand an +5V
19VDDPositive Supply Voltage+5V
20SEGCSegment Drive Line CMatrix Pin 8 (4)
21SEGESegment Drive Line EMatrix Pin 1 (6)
22SEGDPSegment Drive Line Decimal PointMatrix Pin 4 (1)
23SEGDSegment Drive Line DMatrix Pin 12 (5)
24DOUTSerial Data Outputdamit kann man mehrere Chips kaskadieren um größere LED Matrizen anzusteuern (Also DOUT Chip1 an DIN Chip2).

Software

Zur Ansteuerung der Matrix habe ich eine Arduino-Library geschrieben, die in der neuesten Version auch mit mehreren kaskadierten Chips und Modulen zurechtkommt. Der Zeichensatz für die Laufschrift und die Textfunktion befand sich in früheren Versionen im EEPROM des ATmega?, in der aktuellen Version im internen Flash-Speicher (PROGMEM). Somit bleibt das interne EEPROM für andere Zwecke frei und der Zeichensatz ist leicht änderbar

Zusätzlich zur Laufschrift bietet die Library auch grundlegende Grafikfunktionen:

  • Setzen/löschen einzelner LEDs
  • Linen
  • Rechtecke
  • Kreise
  • stehender Text
  • Verschieben des kompletten Bildschirminhalts in alle vier Richtungen

Hier ist ein Video der Laufschrift mit einer frühen (EEPROM) Version der Library:

Testprogramm

Hier folgt nun ein Testprogramm für die Libray an dem man gut sehen kann wie sie verwendet wird. Das Ergebnis sieht man im Video:

Hier nun die Sourcen für die Library selbst. Zur Installation muß im Unterverzeichnis libraries der Arduino-Software ein Verzeichnis AS1107 angelegt werden, dort werden die folgenden Dateien erstellt, bzw. hineinkopiert.

Die vorliegende Version ist für drei kaskadierte Module vorgesehen. Wird eine andere Anzahl verwendet muß AS1107.h an gekennzeichneter Stelle angepasst werden. In zukünftigen Versionen wird dies auch über die Initialisierung möglich sein.

Die folgende Datei ist für das Syntax-Highlighting des Arduino-Editors verantwortlich, damit werden die in der Lib verwendeten Methoden ond der Klassenname farblich hervorgehoben.

Viel Spaß!

/Elsni


[1] Gedanken: shit-Name, das nächste Mal beim Italiener bestelle ich aus Protest Gnotzi

Frische Änderungen | Menü editieren
zuletzt geändert am 21.12.2022 17:03 Uhr von Elsni
Edit Page | Page History