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:
- Steckboard
- Kabelset für Entwicklerboards
- LED-Matrix mit gemeinsamer Kathode
- 560 Ohm Widerstände
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);
}