RGB-Matrix 8×8

RGB-Matrix

Die RGB-Matrix besteht aus mit­ein­an­der ver­bun­de­nen RGB-LEDs. Jede besitzt einen eige­nen Con­trol­ler und kann ein­zeln ange­steu­ert wer­den. Die RGB-Matrix benö­tigt nur einen digi­ta­len Eingang.

RGB ist eine Mischung aus den Far­ben rot, grün und blau. Die Wer­te wer­den durch Kom­ma­ta getrennt.

Bei­spie­le:

Hier fin­dest du einen Über­blick über die ➨RGB-Farbcodes (exter­ner Link abge­ru­fen am 10.1.21).

Benö­tig­te Bibliotheken:

Sketch → Biblio­thek ein­bin­den → Biblio­the­ken verwalten

Metho­den der Biblio­thek Adafruit_NeoMatrix (Aus­wahl)

Metho­deAnwei­sungPara­me­ter
RGB-Matrix star­tenbegin();
Bild­schirm­hel­lig­keit setzensetBrightness(Parameter)0 = aus, 255 = größ­te Helligkeit
Bild­schirm ausrichtensetRotation(Richtung);Rich­tung = 0 → nicht drehen
Rich­tung = 1 → 90° drehen
Rich­tung = 2 → 180° drehen
Rich­tung = 3 → 270 ° drehen
Bild­schirm­hin­ter­grundfillScreen(Farbe);Bild­schirm­hin­ter­grund füllen
Far­ben definieren:
# defi­ne Rot RGBMatrix.Color(255,0,0)
# defi­ne Gru­en RGBMatrix.Color(0,255,0)
# defi­ne Blau RGBMatrix.Color(0,0,255)
# defi­ne Magen­ta RGBMatrix.Color(139,0,139)
# defi­ne Pink RGBMatrix.Color(255,20,147)
# defi­ne Weiss RGBMatrix.Color(255,255,255)
# defi­ne Gelb RGBMatrix.Color(255,255,0)
Linie zeich­nendrawLine(StartX, Star­tY, EndeX, EndeY, Farbe);
hori­zon­ta­le Linie zeichnendrawFastHLine(StartX, Star­tY, Län­ge, Farbe);
ver­ti­ka­le Linie zeichnendrawFastVLine(StartX, Star­tY, Län­ge, Farbe);
Recht­eck zeichnendrawRect(StartX, Star­tY,, Brei­te, Höhe, Farbe);
abge­run­de­tes Recht­eck zeichnendrawRoundRect(StartX, Star­tY, Brei­te, Höhe, Ecken­ra­di­us, Farbe);
aus­ge­füll­tes Recht­eck zeichnenfill.Rect(StartX, Star­tY, Brei­te, Höhe, Füllfarbe);
Kreis zeich­nendrawCircle(MittelpunkX, Mit­tel­punk­tY, Radi­us, Farbe);
Aus­ge­füll­ten Kreis zeichnenfillCircle(MittelpunktX, Mit­tel­punk­tY, Radi­us, Füllfarbe);
Cur­sor setzensetCursor(x, y);
Text­grö­ße setzensetTextSize(Textgröße);Text­grö­ße:
1 – 4
bei einer Matrix nur 1 möglich
Text­far­be bestimmensetTextColor(Farbe);
Text schrei­benprint("Text");
Ein­zel­nes Zei­chen schreibendrawChar(StartX, Star­tY, Zei­chen, Rot, Hin­ter­grund, Textgröße);drawChar(0, 1, 'Z', Rot, Weiss, 1);

Bei­spiel: Lauflicht:

Das dazu­ge­hö­ri­ge Programm:

# include <Adafruit_NeoMatrix.h>

// Startposition links oben
int Spalte = 0;

# define RGBMatrixPin 7

// RGBMatrix -> Name der RGB-Matrix
/*
  die wichtigsten Parameter:
  Parameter 1 = Breite der Matrix (8)
  Parameter 2 = Höhe der Matrix (8)
  Parameter 3 = Name des Daten-Pins (RGBMatrixPin)
*/
Adafruit_NeoMatrix RGBMatrix = Adafruit_NeoMatrix(8, 8, RGBMatrixPin,
                               NEO_MATRIX_TOP + NEO_MATRIX_RIGHT +
                               NEO_MATRIX_COLUMNS + NEO_MATRIX_PROGRESSIVE,
                               NEO_GRB + NEO_KHZ800);

void setup()
{
  // Helligkeit setzen
  RGBMatrix.setBrightness(10);

  // RGBMatrix starten
  RGBMatrix.begin();
}

void loop()
{
  RGBMatrix.clear();

  // von oben nach unten
  for (int i = 0; i <= 7; i ++)
  {
    RGBMatrix.drawPixel(Spalte, i, RGBMatrix.Color(0, 0, 255));
    delay(100);
    RGBMatrix.show();
  }

  RGBMatrix.clear();

  // eine Spalte nach rechts
  Spalte++;

  // von unten nach oben
  for (int i = 7; i >= 0; i--)
  {
    RGBMatrix.drawPixel(Spalte, i, RGBMatrix.Color(0, 0, 255));
    delay(100);
    RGBMatrix.show();
  }

  // solange das Ende (Spalte = 7) nicht erreicht ist
  // -> eine Spalte hinzufügen
  if (Spalte < 6) Spalte++;

  // Ende erreicht, Spalte wieder auf 0 setzen
  else Spalte = 0;
}

Bei­spiel: Gra­fik­funk­tio­nen:

Das dazu­ge­hö­ri­ge Programm:

Download
# include <Adafruit_NeoMatrix.h>


# define RGBMatrixPin 7

// RGBMatrix -> Name der RGB-Matrix
/*
  die wichtigsten Parameter:
  Parameter 1 = Breite der Matrix (8)
  Parameter 2 = Höhe der Matrix (8)
  Parameter 3 = Name des Daten-Pins (RGBMatrixPin)
*/
Adafruit_NeoMatrix RGBMatrix =  Adafruit_NeoMatrix(8, 8, RGBMatrixPin,
                                NEO_MATRIX_TOP + NEO_MATRIX_RIGHT +
                                NEO_MATRIX_COLUMNS + NEO_MATRIX_PROGRESSIVE,
                                NEO_GRB + NEO_KHZ800);

// Farben definieren
# define Rot          RGBMatrix.Color(255,0,0)
# define Gruen        RGBMatrix.Color(0,255,0)
# define Blau         RGBMatrix.Color(0,0,255)
# define Magenta      RGBMatrix.Color(139,0,139)
# define Pink         RGBMatrix.Color(255,20,147)
# define Weiss        RGBMatrix.Color(255,255,255)
# define Gelb         RGBMatrix.Color(255,255,0)
# define ZufallsFarbe RGBMatrix.Color(random(1, 255), random(1, 255), random(1, 255))


void setup()
{
  RGBMatrix.setBrightness(10);

  // RGBMatrix starten
  RGBMatrix.begin();
}

void loop()
{
  RGBMatrix.clear();
  char Text[7] = {'A', 'r', 'd', 'u', 'i', 'n', 'o'};
  for (int i = 0; i < sizeof(Text); i++)
  {
    RGBMatrix.drawChar(0, 1, Text[i], Rot, 1, 1);
    RGBMatrix.show();
    delay(500);
    RGBMatrix.clear();
  }
  delay(1000);
  RGBMatrix.clear();

  // Matrix mit Farbe füllen
  RGBMatrix.fillScreen(Blau);
  RGBMatrix.show();
  delay(500);
  RGBMatrix.clear();

  RGBMatrix.fillScreen(Gelb);
  RGBMatrix.show();
  delay(500);
  RGBMatrix.clear();

  RGBMatrix.fillScreen(Rot);
  RGBMatrix.show();
  delay(500);

  RGBMatrix.clear();
  RGBMatrix.fillScreen(Gruen);
  RGBMatrix.show();
  delay(500);
  RGBMatrix.clear();

  RGBMatrix.fillScreen(Magenta);
  RGBMatrix.show();
  delay(500);
  RGBMatrix.clear();

  // einzelnes Zeichen schreiben
  RGBMatrix.setCursor(0, 1);
  RGBMatrix.setTextColor(Pink);
  RGBMatrix.setTextSize(1);
  RGBMatrix.print('Z');
  RGBMatrix.show();
  delay(500);
  RGBMatrix.clear();

  // Linie zeichnen
  for (int i = 0; i <= 7; i ++)
  {
    RGBMatrix.drawLine(i, 0, i, 8, Gelb);
    RGBMatrix.show();
    delay(200);
  }
  delay(500);
  RGBMatrix.clear();

  // horizontale Linie zeichnen
  for (int i = 1; i < 9; i ++)
  {
    RGBMatrix.drawFastHLine(0, i , i, Gruen);
    RGBMatrix.show();
    delay(200);
  }
  delay(500);
  RGBMatrix.clear();

  // vertikale Linie zeichnen
  for (int i = 1; i < 9; i ++)
  {
    RGBMatrix.drawFastVLine(i, 0 , i, Magenta);
    RGBMatrix.show();
    delay(100);
  }
  delay(500);
  RGBMatrix.clear();

  // Kreis zeichnen
  RGBMatrix.drawCircle(4, 4, 3, Weiss);
  RGBMatrix.show();
  delay(500);
  RGBMatrix.clear();

  // ausgefüllten Kreis zeichnen
  RGBMatrix.fillCircle(4, 4, 3, Blau);
  RGBMatrix.show();
  delay(500);

  // Rechtecke zeichnen
  RGBMatrix.clear();
  for (int i = 1; i < 9; i ++)
  {
    RGBMatrix.drawRect(0, 0, i, i, RGBMatrix.Color(0, 255, 255));
    RGBMatrix.show();
    delay(200);
  }
  delay(500);
  RGBMatrix.clear();
}