Mäander
Das Programm Matrix.java (Listing 6) lässt alle LEDs der Matrix blau blinken. Die Ausgabe kann man nach Belieben variieren, etwa mit der Ausgabe von Pacman oder einer Laufschrift auf dem Display.
Listing 6
// Matrix.java
import com.github.mbelling.ws281x.*;
import java.lang.*;
public class Matrix {
static int buffer [][][] = new int[8][8][3];
private static void writeBufferToMatrix() {
Ws281xLedStrip matrix=new Ws281xLedStrip(64,10,800000,10,8,0,false,LedStripType.WS2811_STRIP_GRB ,false);
int i=0;
for (int x=0 ; x<8 ; x++) {
if ((((i)/8)%2)==0) {
for (int y=0 ; y<8 ;y++) {
matrix.setPixel(i,buffer[x][y][0],buffer[x][y][1],buffer[x][y][2]);
i++;
}
}
else {
for (int y=7 ; y>-1;y--) {
matrix.setPixel(i,buffer[x][y][0],buffer[x][y][1],buffer[x][y][2]);
i++;
}
}
}
matrix.render();
}// writeBufferToMatrix
static void fill(int r,int g,int b, int a) {
for (int x = 0 ; x<a ; x++) {
for(int y = 0 ; y<a ; y++) {
buffer[x][y][0]=r;
buffer[x][y][1]=g;
buffer[x][y][2]=b;
}
}
}//fill
public static void main(String[] args) {
for (int i=0; i<6000;i++){
fill(0,0,255,8);
writeBufferToMatrix();
try {Thread.sleep(1000);} catch (Exception e){}
fill(0,0,0,8);
writeBufferToMatrix();
try {Thread.sleep(1000);} catch (Exception e){}
}//for
}//main
}//class
Die LEDs befinden sich in Mäanderform auf der Matrix (Abbildung 3), was es uns anfangs etwas schwer macht, sie zu programmieren. Um sich das Leben etwas zu erleichtern, verwendet der Autor im Programm einen Zwischenspeicher (buffer, mehrdimensionales Array), um die Animationen zu erstellen (Zeile 6). Innerhalb des Zwischenspeichers lassen sich die einzelnen LEDs mit X- und Y-Koordinaten ansteuern.
Nach dem Vornehmen aller Änderungen im Puffer (Listing 6, Zeile 39 und 42) überträgt das Programm die Daten mit dem Kommando writeBuffertoMatrix() (Zeile 7 bis 25) in die LED-Matrix. Dabei muss man sich nicht um die physikalische Anordnung der LEDs kümmern.
Fazit
Die Leuchtdiode WS2812 ist ein kleines technisches Meisterwerk. Fügen Sie sie zu einer Matrix zusammen, lassen sich damit wirklich tolle Projekte realisieren. So ist es möglich, mehrfarbige Laufschriften oder auch kleine Videoanimationen mit diesen Modulen zu zeigen.
In diesem Artikel verwendete der Autor eine 8×8-Matrix. Es gibt die Matrixmodule aber auch in größeren Bauformen, zudem lassen sich mehrere davon zusammenschließen. Beziehen Sie das Modul direkt aus China, beläuft sich die Investition auf weniger als 10 Euro. (tle/jlu)
Der Autor
Martin Mohr hegt seit früher Jugend eine Vorliebe für alles, was blinkt. Eine Ausbildung zum Elektroniker verstärkte das noch. Nach einem Informatikstudium entwickelte er überwiegend Java-Applikationen. Mit dem Raspberry Pi erwachte die alte Liebe zur Elektronik wieder.
Infos
- Datenblatt WS2812: http://www.world-semi.com/DownLoadFile/108
- 8×8-LED-Matrix: https://de.aliexpress.com/item/4001073507941.html
- SN74HC125: https://www.reichelt.de/buffer-3-state-2-6-v-so-14-smd-hc-125-p18635.html
- Platine für SMD-Baustein: https://de.aliexpress.com/item/32952881938.html
- Raspberry Pi OS herunterladen: https://downloads.raspberrypi.org/raspbian_latest
- Bibliothek zum Ansteuern der LEDs: https://github.com/jgarff/rpi_ws281x
- Wrapper für Java: https://github.com/rpi-ws281x/rpi-ws281x-java






