WS2812 – SK6812 – RGB – RGBW – NeoPixel: controllare con Arduino
FunduinoUltimo aggiornamento il
Einzelne Pixel, Helligkeitsstufen und Farben am LED-Ring steuern
Den Befehl setPixelColor verstehen
Farbwerte für RGB-LEDs
pixels.setPixelColor(x, pixels.Color(255,0,0)); // Rot pixels.setPixelColor(x, pixels.Color(0,255,0)); // Grün pixels.setPixelColor(x, pixels.Color(0,0,255)); // Blau pixels.setPixelColor(x, pixels.Color(255,255,0)); // Gelb pixels.setPixelColor(x, pixels.Color(0,255,255)); // Türkis pixels.setPixelColor(x, pixels.Color(255,255,255)); // Weiß
RGB-LEDs oder RGBW-LEDs
RGB- oder RGBW-LEDs festlegen
// Verwendung von RGB-LEDs: Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); // Verwendung von RGBW-LEDs: Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRBW + NEO_KHZ800);
Farbwerte für RGBW-LEDs
pixels.setPixelColor(x, pixels.Color(255,0,0,0)); // Rot pixels.setPixelColor(x, pixels.Color(0,255,0,0)); // Grün pixels.setPixelColor(x, pixels.Color(0,0,255,0)); // Blau pixels.setPixelColor(x, pixels.Color(255,255,0,0)); // Gelb pixels.setPixelColor(x, pixels.Color(0,255,255,0)); // Türkis pixels.setPixelColor(x, pixels.Color(255,255,255,0)); // Weiß durch Farbmischung der drei farbigen LEDs pixels.setPixelColor(x, pixels.Color(0,0,0,255)); // Weiß durch separate Ansteuerung der weißen LED
Den LED-Ring verkabeln
Eine LED im Kreis wandern lassen
Programmcode – Eine LED wandert im Kreis
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
int i = 0;
#define PIN 9 // Hier wird angegeben, an welchem digitalen Pin die WS2812 LEDs bzw. NeoPixel angeschlossen sind
#define NUMPIXELS 40 // Hier wird die Anzahl der angeschlossenen WS2812 LEDs bzw. NeoPixel angegeben
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int pause = 100; // 100 Millisekunden Pause bis zur Ansteuerung der nächsten LED.
void setup()
{
pixels.begin(); // Initialisierung der NeoPixel
}
void loop()
{
pixels.setPixelColor(i, pixels.Color(0,150,0)); // Pixel leuchtet in der Farbe Grün
pixels.setPixelColor(i-1, pixels.Color(0,0,0)); // Der vorherige Pixel wird abgeschaltet
pixels.show(); // Durchführen der Pixel-Ansteuerung
if (i==0) pixels.setPixelColor(39, pixels.Color(0,0,0)); // Im Fall von Pixel "0" muss die vorherige (39) ausgeschaltet werden.
pixels.show(); // Durchführen der Pixel-Ansteuerung
delay(pause);
i = i+1; // Die Variable "i" wird um eine Zahl vergrößert. Die neue Zahl "i" ist dann die nächste LED im LED-Ring
if (i==40) i=0; // Wenn die Variable den Wert 40 erreicht hat, wird sie auf "0" zurückgesetzt, da die Nummerierung der LEDs nur von 0 bis 39 geht.
}Mehrere LEDs nacheinander ansteuern
Programmcode – Fünf LEDs nacheinander in abnehmender Helligkeit
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN 9 // Hier wird angegeben, an welchem digitalen Pin die WS2812 LEDs bzw. NeoPixel angeschlossen sind
#define NUMPIXELS 40 // Hier wird die Anzahl der angeschlossenen WS2812 LEDs bzw. NeoPixel angegeben
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int pause = 100; // 100 Millisekunden Pause bis zur Ansteuerung der nächsten LED.
void setup()
{
pixels.begin(); // Initialisierung der NeoPixel
}
void loop()
{
pixels.setPixelColor(0, pixels.Color(0,255,0)); // Der erste Pixel (Nummer 0) leuchtet grün
pixels.show(); // Durchführen der Pixel-Ansteuerung
delay(pause); // Pause, in dieser Zeit wird nichts verändert.
pixels.setPixelColor(1, pixels.Color(0,150,0)); // Der zweite Pixel (Nummer 1) leuchtet etwas schwächer
pixels.show(); // Durchführen der Pixel-Ansteuerung
delay(pause); // Pause, in dieser Zeit wird nichts verändert.
pixels.setPixelColor(2, pixels.Color(0,50,0)); // Der dritte Pixel (Nummer 2) leuchtet noch schwächer
pixels.show(); // Durchführen der Pixel-Ansteuerung
delay(pause); // Pause, in dieser Zeit wird nichts verändert.
pixels.setPixelColor(3, pixels.Color(0,10,0)); // Der vierte Pixel (Nummer 3) leuchtet nur noch schwach
pixels.show(); // Durchführen der Pixel-Ansteuerung
delay(pause); // Pause, in dieser Zeit wird nichts verändert.
pixels.setPixelColor(4, pixels.Color(0,1,0)); // Der fünfte Pixel (Nummer 4) glimmt nur noch
pixels.show(); // Durchführen der Pixel-Ansteuerung
delay(pause); // Pause, in dieser Zeit wird nichts verändert.
// Zurücksetzen aller Pixelfarben auf Stufe "0" (aus)
pixels.setPixelColor(0, pixels.Color(0,0,0));
pixels.setPixelColor(1, pixels.Color(0,0,0));
pixels.setPixelColor(2, pixels.Color(0,0,0));
pixels.setPixelColor(3, pixels.Color(0,0,0));
pixels.setPixelColor(4, pixels.Color(0,0,0));
pixels.show(); // Durchführen der Pixel-Ansteuerung
delay(pause); // Pause, die LEDs bleiben in dieser Zeit aus
}Bedrahtete WS2812-LEDs verkabeln und ansteuern
1 / 2
Programmcode – Drei bedrahtete WS2812-LEDs
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
#define PIN 6 // Pin für die Datenleitung
#define NUMPIXELS 3 // Anzahl der WS2812 LEDs bzw. NeoPixel
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
void setup()
{
pixels.begin(); // Initialisierung der LEDs
}
void loop() {
pixels.setPixelColor(0, pixels.Color(0, 150, 0));
pixels.show(); // Senden der aktualisierten Daten an die WS2812 LEDs
delay(500);
pixels.clear(); // Deaktivieren aller LEDs
pixels.setPixelColor(1, pixels.Color(150, 0, 0));
pixels.show(); // Senden der aktualisierten Daten an die WS2812 LEDs
delay(500);
pixels.clear(); // Deaktivieren aller LEDs
pixels.setPixelColor(2, pixels.Color(0, 0, 150));
pixels.show(); // Senden der aktualisierten Daten an die WS2812 LEDs
delay(500);
pixels.clear(); // Deaktivieren aller LEDs
}Fatto!
Valuta le istruzioni