Maxell Batterie_3.6V


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


RGB-Matrix und Arduino Nano

Eine interessante Abwechslung in der Matrix-Welt stellt eine RGB-Matrix dar. Statt der Standardleuchtdioden mit einer bestimmten Farbe besteht eine solche Matrix aus RGB-Dioden. Neben den Grundfarben Rot, Gelb und Blau stellt solche Matrix eine Unmenge an Farbtönen, die aus Kombinationen der Grundfarben entstehen, zur Verfügung. Bei einer 8x8-Matrix gilt es in einem solchen Fall 3x8x8 = 192 Leuchtdioden anzusteuern. Im Handel werden solche LEDs-Anordnungen in unterschiedlichen Größen von verschiedenen Herstellern angeboten. In dem kurzen Beispiel wird die Matrix CJMCU-8x8 verwendet.

Matrix CJMCU 8x8

RGB-Matrix CJMCU 8x8


Die Matrix besteht aus 64 WS2812 LEDs, die nur mit einer Datenleitung angesteuert werden. Das liegt daran, dass eine WS2812 nicht nur aus drei LEDs (rot, grün, blau) besteht, sondern einen eingebauten Chip enthält. Dieser Chip übernimmt dann die Aufgabe, die LEDs in gewünschter Form zum Leuchten zu bringen. Das alles ist für 5 V ausgelegt. Eine WS2812-LED kann bei voller Helligkeit einen Strom bis zu 50 mA ziehen. Es wird empfohlen, zwischen (+) und (–) einen Kondensator von 1000µF anzuschließen. Zusätzlich soll in der Datenleitung ein Widerstand von ca. 300 bis 500 Ohm eingesetzt werden. Die Strombegrenzungswiderstände für die LEDs sind in der Matrix bereits eingebaut. Damit ist der Verdrahtungsaufwand besonders gering.
In dem Beispiel wird die Matrix von Arduino Nano angesteuert.

RGB Matrix

Schaltplan

Schaltplan

Schaltplan (Arduino ohne USB-Anschluss: Vin > 6 V)

Testschaltung

Testschaltung


Programm

Für das Programm muss die passende Bibliothek installiert werden. In dem Beispiel wird die Bibliothek „Adafruit_NeoPixel.h“ verwendet.

Bibliothek


Mit dem Programm werden auf der Matrix vier einfache LEDs-Szenarien erzeugt. In dem Hauptprogramm „loop()“ werden entsprechend vier Unterprogramme „show1()“ bis „show4()“ nacheinander aufgerufen. „show1()“ schaltet die einzelnen LEDs mit einer bestimmten Farbe nacheinander ein. Diese Sequenz wird viermal wiederholt. „show2 ()“ schaltet die einzelnen LEDs nach dem Zufallsprinzip ein und aus. Die erste Zufallszahl „Pixel“ entscheidet hier, welche Leuchtdiode angesteuert wird. Die zweite Zufallszahl, „Farbe“, bestimmt die Farbe der Leuchtdiode. In dem dritten Unterprogramm „show3()“ wandern über die Matrix senkrechte und waagerechte Balken, die aus acht LEDs bestehen und jeweils eine andere Farbe aufweisen. Schließlich im Unterprogramm „show4()“ werden alle Leuchtioden der Matrix hochgedimmt. Auch hier kommen verschieden Farben zum Einsatz.

// ----------------------------------------------------------
// Arduino Nano steuert 8x8 RGB-Matrix
// ----------------------------------------------------------

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
 #include <avr/power.h> 
#endif

#define LED_PIN    6
#define LED_COUNT 64

Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin();           
  strip.show();            
  strip.setBrightness(50); 
}

void loop() {
  show1();
  show2();
  show3();
  show4();
}

void show1 () { 
  int i;
  for (i = 0; i < 64; i++) {  
    strip.show();
    strip.setPixelColor(i, 255, 0, 0);
    delay (40); }
  strip.clear();
  for (i = 63; i > -1; i--) {  
    strip.show();
    strip.setPixelColor(i, 0, 255, 0);
    delay (40); }  
  strip.clear();
  for (i = 0; i < 64; i++) {  
    strip.show();
    strip.setPixelColor(i, 0, 0, 255);
    delay (40); }  
  strip.clear();
  for (i = 63; i > -1; i--) {  
    strip.show();
    strip.setPixelColor(i, 127, 127, 127);
    delay (40); }   
}

void show2 () {
  for (int i = 1; i < 5000; i++) {
    strip.show();
    int Pixel = random (0,64);
    int Farbe = random (1, 5);
    switch (Farbe) {
      case 1: { strip.setPixelColor(Pixel, 255, 0, 0);
        break; }
      case 2: { strip.setPixelColor(Pixel, 0, 255, 0);
        break; }
      case 3: { strip.setPixelColor(Pixel, 0, 0, 255);
        break; }
      case 4: { strip.setPixelColor(Pixel, 0, 0, 0);
        break; }        
    } }
    strip.clear();
}

void show3 () {
  for (int i = 0; i < 8; i++) { 
    strip.clear();
    for (int j = i; j < 64; j = j + 8) {
      strip.setPixelColor(j, 0, 255, 0);       
      delay (30); } 
    strip.show(); }
  for (int i = 0; i < 57; i=i+8) { 
    strip.clear();
    for (int j = 0; j < 8; j++) {
      strip.setPixelColor(i+j, 255, 0, 0);       
      delay (30); } 
    strip.show(); }  
  for (int i = 7; i > -1; i--) { 
    strip.clear();
    for (int j = i; j < 64; j = j + 8) {
      strip.setPixelColor(j, 0, 0, 255);       
      delay (30); } 
    strip.show(); }  
  for (int i = 56; i > -1; i=i-8) { 
    strip.clear();
    for (int j = 0; j < 8; j++) {
      strip.setPixelColor(i+j, 127, 127, 127);       
      delay (30); } 
    strip.show(); }   
}

void show4 () {
  for (int a = 1; a < 4; a++) {
    unsigned int Farbton = a * 21500; 
    for(int i=0; i<256; i++) { 
      for (int j=0; j<64; j++) {
        strip.setPixelColor(j, strip.gamma32(strip.ColorHSV(Farbton, 255, i))); }
      strip.show();
      delay(10); }
    delay (500); }   
}
// ----------------------------------------------------------
        

Kurzvideo

Kurzvideo (Lichtspiele mit RGB-Matrix und Arduino Nano)


Weitere Themen:


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz