| RGB-Matrix und Arduino NanoEine 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. RGB-Matrix CJMCU 8x8
SchaltplanSchaltplan (Arduino ohne USB-Anschluss: Vin > 6 V) TestschaltungProgrammFür das Programm muss die passende Bibliothek installiert werden. In dem Beispiel wird die Bibliothek
„Adafruit_NeoPixel.h“ verwendet. 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:
|