Zwei Potentiometer dienen dazu, Farben und Helligkeit eines LED-Streifens zu manipulieren.
So sieht es aus (Drehpotentiometer am Grove-Shield):
Der LED-Streifen besteht aus mehreren miteinander verbundenen RGB-LEDs. Jede besitzt einen eigenen Controller und kann einzeln angesteuert werden. Er benötigt nur einen digitalen Eingang.
RGB ist eine Mischung der Farben Rot, Grün und Blau. Jede Farbe kann von 0 bis 255 gesetzt werden, die Werte werden durch Kommata getrennt.
Hier findest du einen Überblick über die 🔗RGB-Farbcodes (externer Link abgerufen am 25.4.22).
Beispiele:
Benötigte Bauteile:
- LED-Streifen
- 2 beliebige Potentiometer (Dreh- oder Schiebepotentiometer)
- Leitungsdrähte
Baue die Schaltung auf.
(Fahre mit der Maus über das Bild, um die Bezeichnungen der Bauteile zu sehen)
Das eigentliche Programm:
Als Erstes musst du eine Bibliothek installieren:
Sketch → Bibliothek einbinden → Bibliotheken verwalten
Jedem Befehl muss der Name des LED-Streifens vorangestellt werden.
Funktionen der Bibliothek Adafruit_NeoPixel (Auswahl)
Schlüsselwort | Aktion |
---|---|
begin() | LED-Ring starten |
numPixels() | Anzahl der LEDs lesen |
show() | LED-Ring einschalten |
clear() | LED-Ring ausschalten |
setPixelColor(LED-Nummer, rot, grün, blau) | Farbe einer LED setzen LED-Nummer rot -> 0 - 255 grün -> 0 - 255 blau -> 0 - 255 |
setBrightness() | Helligkeit setzen (0−255) |
Color(rot, grün, blau) | Farbe für alle LEDs setzen rot -> 0 - 255 grün -> 0 - 255 blau -> 0 - 255 Beispiel rot: int Farbe = LEDStreifen.Color(255, 0, 0); Beispiel grün: int Farbe = LEDStreifen.Color(0, 255, 0); Beispiel blau: int Farbe = LEDStreifen.Color(0, 0, 255); |
fill(Farbe, Start, Ende) | Farbe für die mit Start und Ende bezeichneten Pixel setzen |
Binde die benötigte Bibliothek ein und definiere die Variablen.
Beachte die Kommentare.
# include "Adafruit_NeoPixel.h"
// Pin des LED-Streifens
# define STREIFEN 7
// Anzahl der LEDs -> muss angepasst werden
# define AnzahlLED 15
// Anschlüsse der Potentiometer
# define PotiHelligkeit A0
# define PotiFarbe A1
/*
Initialisierung des LED-Streifens
Parameter:
LED-Streifen -> Name des LED-Streifens
AnzahlLED -> Anzahl der LEDs
STREIFEN -> verwendeter Pin
NEO_GRB + NEO_KHZ800 -> Typ des verwendeten LED-Streifens
*/
Adafruit_NeoPixel LEDStreifen = Adafruit_NeoPixel(AnzahlLED, STREIFEN, NEO_GRB + NEO_KHZ800);
// Farben in RGB-Schreibweise definieren
# define ROT LEDStreifen.Color(255, 0, 0)
# define ROSA LEDStreifen.Color(255, 50, 100)
# define BLAU LEDStreifen.Color(0, 0, 255)
# define HELLBLAU LEDStreifen.Color(100, 100, 255)
# define GRUEN LEDStreifen.Color(0, 255, 0)
# define HELLGRUEN LEDStreifen.Color(0, 100, 153)
# define GELB LEDStreifen.Color(255, 255, 0)
# define ORANGE LEDStreifen.Color(200, 50, 0)
# define PINK LEDStreifen.Color(255, 20, 147)
# define MAGENTA LEDStreifen.Color(139, 0, 139)
Der setup-Block startet den Seriellen Monitor und initialisiert den LED-Streifen.
void setup()
{
Serial.begin(9600);
// NeoPixel Bibliothek initialisieren
LEDStreifen.begin();
}
Der loop-Teil.
Beachte die Kommentare.
void loop()
{
// LEDs löschen
LEDStreifen.clear();
/*
PotiHelligkeit abfragen
map -> Bereich von 0 bis 1023
(dem mit analogRead gelesenen Wert des Potentiometers)
auf 0 bis 255 übertragen
(Helligkeit des LED-Streifens)
*/
int Helligkeit = map(analogRead(PotiHelligkeit), 0, 1023, 0, 255);
// Helligkeit setzen
LEDStreifen.setBrightness(Helligkeit);
/*
PotiFarbe abfragen
Bereich 0 bis 1023
Bereiche festlegen -> nach jeweils 128 Werten neue Farbe
*/
switch (analogRead(PotiFarbe))
{
case 0 ... 128:
LEDStreifen.fill(ROSA, 0, AnzahlLED);
LEDStreifen.show();
break;
case 129 ... 256:
LEDStreifen.fill(ROT, 0, AnzahlLED);
LEDStreifen.show();
break;
case 257 ... 384:
LEDStreifen.fill(HELLBLAU, 0, AnzahlLED);
LEDStreifen.show();
break;
case 385 ... 512:
LEDStreifen.fill(BLAU, 0, AnzahlLED);
LEDStreifen.show();
break;
case 513 ... 640:
LEDStreifen.fill(HELLGRUEN, 0, AnzahlLED);
LEDStreifen.show();
break;
case 641 ... 768:
LEDStreifen.fill(GRUEN, 0, AnzahlLED);
LEDStreifen.show();
break;
case 769 ... 896:
LEDStreifen.fill(GELB, 0, AnzahlLED);
LEDStreifen.show();
break;
case 897 ... 1023:
LEDStreifen.fill(ORANGE, 0, AnzahlLED);
LEDStreifen.show();
break;
default:
LEDStreifen.clear();
}
}
Verwandte Anleitungen:
- Blinkende LED
- Blinkende LED mit einem Potentiometer
- Blinkende LEDs mit Multithreading
- Farbenspiele mit einem LED-Streifen
- Interrupt - Lauflicht mit Drehgeber
- Interrupt: Farbenspiel mit einem NeoPixel-Ring
- Lauflicht
- Lauflicht mit blinkenden LEDs
- Wechselblinker mit einem Relais
- LEDs mit einem Joystick-Shield schalten
- LEDs mit dem UDP-Protokoll im LAN schalten
- LEDs ohne Pulsweitenmodulation dimmen
- LEDs schalten mit PORT/DDR
- LEDs mit dem Schieberegister 74HC595 steuern
- LEDs mit einem Taster steuern
- Wechselblinker
- Würfeln mit LEDs
Letzte Aktualisierung: