Aus Raspberry Pi Geek 10/2020

RGB-LED-Matrix WS2812 mit dem RasPi ansteuern (Seite 3)

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.

Abbildung 3: Die LEDs befinden sich in M&auml;anderform auf der Matrix.

Abbildung 3: Die LEDs befinden sich in Mäanderform auf der Matrix.

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.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben