|
LED-Matrix: einen Punkt leuchten lassen
Was ist eine LED Matrix?
Ordnet man mehrere LEDs sowohl untereinander als auch
nebeneinander an, entsteht eine sogenannte LED-Matrix.
Nimmt man genügend LEDs, kann man damit Zeichen und Grafiken
ausgeben und noch mehr.
Sowas gibt es auch als fertiges Bauelement:
Ich habe meins hier
gekauft.
Es hat 8x8 = 64 LEDs.
Durch eine trickreiche Zusammenschaltung der LEDs werden nur 2x8 =
16 Anschlüsse herausgeführt. Nämlich 8 Anoden und 8 Katoden.
Soll die LED oben links leuchten, muss an Anode 1 ein Plus der
Stromversorgung liegen und an Katode 1 ein Minus der
Stromversorgung.
Das ist schon das ganze Geheimnis. Was allerdings Probleme macht,
sobald man zwei LEDs leuchten lassen will. Doch dazu später.
Ich habe vor jede Anode einen 220 Ohm Widerstand zur
Strombegrenzung geschaltet und dann 16 Arduino Pins benutzt.
Wie Du siehst, habe ich:
- Pin 13 ("Digital_13") nicht benutzt, weil da
schon die Board LED dran hängt
- die sonst als Analogeingänge zu benutzenden
Pins einfach als digitale Ausgänge 14, 15 und 16 vorgesehen
- ein "universelles" Schaltsymbol für die
Matrix benutzt, weil bei Deiner LED-Matrix
höchstwahrscheinlich
die Anoden und die Katoden an
anderen Pins liegen als bei meiner Matrix
Du musst auf
jeden Fall für Deine Matrix ermitteln, wo sie Ihre Anoden und wo
sie ihre Katoden hat!
Hier das Programm, das genau eine LED Deiner Wahl leuchten
lässt:
/*
Hello World LED-Matrix
(einen Punkt leuchten lassen)
www.arduinospielwiese.de
*/
//Die Zahlen sind die am Arduino verwendeten Pins
//Jede Anode hat einen 220 Ohm Widerstand im Stromweg!
int spalte[] = { 0, 1, 2, 3, 4, 5, 6, 7 };
//Anoden
int zeile[] = { 8, 9, 10, 11, 12, 14, 15, 16 };
//Katoden
void setup()
{
pinMode(zeile[0], OUTPUT);
pinMode(zeile[1], OUTPUT);
pinMode(zeile[2], OUTPUT);
pinMode(zeile[3], OUTPUT);
pinMode(zeile[4], OUTPUT);
pinMode(zeile[5], OUTPUT);
pinMode(zeile[6], OUTPUT);
pinMode(zeile[7], OUTPUT);
pinMode(spalte[0], OUTPUT);
pinMode(spalte[1], OUTPUT);
pinMode(spalte[2], OUTPUT);
pinMode(spalte[3], OUTPUT);
pinMode(spalte[4], OUTPUT);
pinMode(spalte[5], OUTPUT);
pinMode(spalte[6], OUTPUT);
pinMode(spalte[7], OUTPUT);
//Alle Kathoden auf HIGH setzen
for (int i=0; i<=7; i++) digitalWrite(zeile[i],
HIGH);
}
void loop()
{
//obenlinks = 0,0 / untenrechts= 7,7
int z=0, s=0;
digitalWrite(zeile[z], LOW); digitalWrite(spalte[s],
HIGH);
}
Verändere die Werte für z und s und schieb das Programm erneut in
Deinen Arduino.
|