Metainformationen zur Seite
Dies ist eine alte Version des Dokuments!
LED-Matrix
Laufschrift
In diesem Beispiel, wie man eine Laufschrift auf eine LED-Matrix bekommen kann, bedienen wir uns dem Programm, welches sich hier finden lässt. Hierzu wird lediglich ein Arduino benötigt, da wir die Laufschrift auch direkt über die USB-Schnittstelle eines Computers auf den Arduino und damit auf die Matrix laden können.
Dieses Beispiel wird öfters auch bei Veranstaltungen, die sich um die Naturwissenschaften drehen, oder reine Infoveranstaltungen des öfteren präsentiert. Die zuständige Person kann Fragen, die beim Lesen nicht beantwortet werden klären.
Code-Anpassungen
Der (je nach Wunsch) anzupassende Code ist: <codecpp> const int zeilenstart=2; Pin ab dem die Zeilen anfangen const int spaltenstart=10; Pin ab dem die Spalten anfangen int x=0; const int max_x=53; auf Anzahl der Einträge von schrift setzen !! int d=300; Verzögerung (delay) int xp=0; int schrift[max_x]={ Zahlen durch gewünschte Einträge ersetzen !! 79,73,73,121,0,127,65,65, 8
65,0,127,8,8,127,0,127, //16 9,9,127,0,127,64,64,64, //24 0,127,8,20,34,65,0,127, //32 73,73,0,0,0,127,65,65, //40 127,0,15,8,127, //45 0,0,0,0,0,0,0,0, //53 };
int pot[8]={1,2,4,8,16,32,64,128};
————————————————– void show_grid() { int cc=0; int s=0; int z=0; for (cc=0;cc<d;cc++) { for (s=0;s<8;s++) { xp=x+s; if (xp>=max_x) {xp-=max_x;} for (z=0;z<8;z++) { if ( (schrift[xp] & pot[z])==pot[z]) digitalWrite(zeilenstart+z,LOW); else digitalWrite(zeilenstart+z,HIGH); } digitalWrite(spaltenstart+7-s,HIGH); digitalWrite(spaltenstart+7-s,LOW); } } } ————————————————– void setup () {
for (int i=0; i<8; i++) { pinMode(zeilenstart+i, OUTPUT); // Pins als Ausgang nutzen pinMode(spaltenstart+i, OUTPUT); // Pins als Ausgang nutzen digitalWrite(zeilenstart+i,HIGH);// Die Zeile ausschalten digitalWrite(spaltenstart+i,LOW);// Die Spalte ausschalten }
}
————————————————–
void loop () {
show_grid();
x++;
if (x==max_x) {x=0;}
}
</code>
Das Array <codec> int schrift[max_x] </code>
ist so zu ändern, dass die gewünschten Zahlen (siehe unten) eingetragen werden und letztendlich die Einträge
des Arrays gezählt werden und <codec> int max_x </code> auf diesen Wert gesetzt wird.
=== Codieren des Musters ===
Der Code ist so geschrieben, dass sich die Spalten binär codiert sind. Die Matrix hat 8 Leds verbaut, also
insgesamt 8 Punkte der Spalte die „AN“ oder „AUS“ sein können. Von oben nach unten werden diese LEDs gedanklich durchnummeriert von 0 bis 7.
Das Muster der Spalte lässt sich dann ausdrücken als <latex>$\sum_{n=0 \ und \ n\ leuchtet}^{7}2^n</latex>.
In Worten ausgedrückt man Ordnet jeder LED die Zahl zu, die sie zur Summe beiträgt. Von oben nach unten ist dies:
<latex>2^0 =1</latex> für die erste LED
<latex>2^1 =2</latex> für die zweite LED
…
<latex>2^7 =128</latex> für die unterste LED
Wenn man seine Zeile dann fertig hat, so addiert man die Zahlen der LEDs, die leuchten sollen und gibt die Summe für die Spalte in das Array von oben ein.
Wem das zu kompliziert vorkommt, dem hilft vielleicht folgendes Bild:
Beispielsweise wäre