Das Arduino Projekt 21 bringt uns zu den ersten Experimenten mit der LED-Matrix…

Ähnlich wie bei der Siebensegmentanzeige wird auch eine LED-Matrix entweder mit gemeinsamer Kathode oder gemeinsamer Anode realisiert. Im folgenden Projekt kommt eine LED-Matrix mit gemeinsame Kathode zum Einsatz.

Vorbereitungen:

Für dieses Projekt werden folgende Bauteile benötigt:

Schaltungsaufbau 1:

Die LED-Matrix Pins werden in diesem ersten Aufbau direkt mit den Arduino-Pins verbunden.

Die LED-Matrix Pins 1-2-3-4 und 9-10-11-12 werden an den Ground gebracht.

Die LED-Matrix Pins 5-6-7-8 und 13-14-15-16 werden an Arduino-Pin 13 gebracht.

Schaltungsaufbau 2:

Der zweite Aufbau unterscheidet sich vom ersten nur dadurch, dass ich die „Positiv-Pins“ der LED-Matrix nicht alle an Arduino-Pin 13 gebracht habe, sondern jeden LED-Matrix Pin an einen eigenen Arduino-Pin.

Der LED Matrix Pin 5 führt über einen Widerstand (560 Ohm) an Arduino-Pin 12.

Der LED Matrix Pin 6 führt über einen Widerstand (560 Ohm) an Arduino-Pin 11.

Der LED Matrix Pin 7 führt über einen Widerstand (560 Ohm) an Arduino-Pin 10.

Der LED Matrix Pin 8 führt über einen Widerstand (560 Ohm) an Arduino-Pin 9.

Der LED Matrix Pin 13 führt über einen Widerstand (560 Ohm) an Arduino-Pin 5.

Der LED Matrix Pin 14 führt über einen Widerstand (560 Ohm) an Arduino-Pin 6.

Der LED Matrix Pin 15 führt über einen Widerstand (560 Ohm) an Arduino-Pin 7.

Der LED Matrix Pin 16 führt über einen Widerstand (560 Ohm) an Arduino-Pin 8.

Schaltungsaufbau 3:

Der dritte Aufbau bringt nun alle LED-Matrix Pins an einzelne Arduino Pins. Es gibt also keine Ground-Verbindung mehr.

Schaltungsaufbau 4:

Zwischen Arduino und LED-Matrix werden nun Schieberegister geschaltet.

Schieberegister 1 soll die Zeilen steuern.

Schieberegister 2 soll die Spalten steuern.

Programmierung:

#define DATA 6 // Verbindung mit Pin 14 am 74HC595
#define LATCH 8 // Verbindung mit Pin 12
#define CLOCK 10 // Verbindung mit Pin 11

void setup()
{
pinMode(LATCH, OUTPUT);
pinMode(CLOCK, OUTPUT);
pinMode(DATA, OUTPUT);
}

void loop()
{
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, MSBFIRST, ~B10101010);
shiftOut(DATA, CLOCK, MSBFIRST, B10101010);
digitalWrite (LATCH, HIGH);
do {} while(1);
}

Von Torsten