RGB-LED am Arduino ansteuern
Farben mischen mit Pulsweitenmodulation
Mikrocontroller wählen
Pins, Schaltplan und Sketch in den Arbeitsschritten wechseln mit deiner Auswahl. Sie bleibt gespeichert.
Was ist eine RGB-LED?
Pulsweitenmodulation (PWM) verstehen
Drei einzelne Farben nacheinander
Pinbelegung Arduino UNO
Beim Arduino UNO schreibst du die Pin-Nummer direkt in den Sketch, also 5 und 7 ohne Zusatz.
int LEDrot = 5;
int LEDgruen = 6;
int LEDblau = 3;
int Pause = 1000; // Pause von 1000 ms, also 1 Sekunde
int Helligkeit = 150; // Zahlenwert zwischen 0 und 255 - gibt die Leuchtstärke der einzelnen Farbe an
void setup()
{
pinMode(LEDblau, OUTPUT);
pinMode(LEDgruen, OUTPUT);
pinMode(LEDrot, OUTPUT);
}
void loop()
{
analogWrite(LEDrot, Helligkeit); // rot einschalten
delay(Pause); // Pause
analogWrite(LEDrot, LOW); // rot ausschalten
analogWrite(LEDgruen, Helligkeit); // gruen einschalten
delay(Pause); // Pause
analogWrite(LEDgruen, LOW); // gruen ausschalten
analogWrite(LEDblau, Helligkeit); // blau einschalten
delay(Pause); // Pause
analogWrite(LEDblau, LOW); // blau ausschalten
}Download: programmcode-einzelfarben-arduino-uno.ino
Board in der Arduino IDEArduino Uno
Ein zusätzliches Board-Paket brauchst du dafür nicht. Der UNO ist in der Arduino IDE ab Werk dabei.
Pinbelegung Wemos D1 Mini
Den Pin-Nummern muss das D vorangestellt werden. Du schreibst also D6 und D7 in den Sketch, nicht 6 und 7.
int LEDrot = D1;
int LEDgruen = D2;
int LEDblau = D3;
int Pause = 1000; // Pause von 1000 ms, also 1 Sekunde
int Helligkeit = 150; // Zahlenwert zwischen 0 und 255 - gibt die Leuchtstärke der einzelnen Farbe an
void setup()
{
pinMode(LEDblau, OUTPUT);
pinMode(LEDgruen, OUTPUT);
pinMode(LEDrot, OUTPUT);
}
void loop()
{
analogWrite(LEDrot, Helligkeit); // rot einschalten
delay(Pause); // Pause
analogWrite(LEDrot, LOW); // rot ausschalten
analogWrite(LEDgruen, Helligkeit); // gruen einschalten
delay(Pause); // Pause
analogWrite(LEDgruen, LOW); // gruen ausschalten
analogWrite(LEDblau, Helligkeit); // blau einschalten
delay(Pause); // Pause
analogWrite(LEDblau, LOW); // blau ausschalten
}Download: programmcode-einzelfarben-wemos-d1-mini.ino
Board in der Arduino IDELOLIN(WEMOS) D1 R2 & mini
Dafür muss die ESP8266-Boardverwaltung installiert sein. Du fügst sie einmalig über die Einstellungen der Arduino IDE hinzu.
Pinbelegung ESP32-Wroom
Beim ESP32 schreibst du die GPIO-Nummer direkt in den Sketch, also 26 und 27 ohne D davor.
int LEDrot = 5;
int LEDgruen = 17;
int LEDblau = 16;
int Pause = 1000; // Pause von 1000 ms, also 1 Sekunde
int Helligkeit = 150; // Zahlenwert zwischen 0 und 255 - gibt die Leuchtstärke der einzelnen Farbe an
void setup()
{
pinMode(LEDblau, OUTPUT);
pinMode(LEDgruen, OUTPUT);
pinMode(LEDrot, OUTPUT);
}
void loop()
{
analogWrite(LEDrot, Helligkeit); // rot einschalten
delay(Pause); // Pause
analogWrite(LEDrot, LOW); // rot ausschalten
analogWrite(LEDgruen, Helligkeit); // gruen einschalten
delay(Pause); // Pause
analogWrite(LEDgruen, LOW); // gruen ausschalten
analogWrite(LEDblau, Helligkeit); // blau einschalten
delay(Pause); // Pause
analogWrite(LEDblau, LOW); // blau ausschalten
}Download: programmcode-einzelfarben-esp32-wroom.ino
Board in der Arduino IDEESP32 Dev Module
Dafür muss die ESP32-Boardverwaltung installiert sein. Du fügst sie einmalig über die Einstellungen der Arduino IDE hinzu.
Pinbelegung NodeMCU
Auch beim NodeMCU steht vor der Pin-Nummer ein D. D1 entspricht GPIO 5, D2 entspricht GPIO 4.
int LEDrot = D1;
int LEDgruen = D2;
int LEDblau = D3;
int Pause = 1000; // Pause von 1000 ms, also 1 Sekunde
int Helligkeit = 150; // Zahlenwert zwischen 0 und 255 - gibt die Leuchtstärke der einzelnen Farbe an
void setup()
{
pinMode(LEDblau, OUTPUT);
pinMode(LEDgruen, OUTPUT);
pinMode(LEDrot, OUTPUT);
}
void loop()
{
analogWrite(LEDrot, Helligkeit); // rot einschalten
delay(Pause); // Pause
analogWrite(LEDrot, LOW); // rot ausschalten
analogWrite(LEDgruen, Helligkeit); // gruen einschalten
delay(Pause); // Pause
analogWrite(LEDgruen, LOW); // gruen ausschalten
analogWrite(LEDblau, Helligkeit); // blau einschalten
delay(Pause); // Pause
analogWrite(LEDblau, LOW); // blau ausschalten
}Download: programmcode-einzelfarben-nodemcu.ino
Board in der Arduino IDENodeMCU 1.0 (ESP-12E Module)
Dafür muss die ESP8266-Boardverwaltung installiert sein. Du fügst sie einmalig über die Einstellungen der Arduino IDE hinzu.
Farben mischen
int LEDrot = 5;
int LEDgruen = 6;
int LEDblau = 3;
int Pause = 1000; // Pause von 1000 ms, also 1 Sekunde
int Helligkeit = 150; // Zahlenwert zwischen 0 und 255 - gibt die Leuchtstärke der einzelnen Farbe an
void setup()
{
pinMode(LEDblau, OUTPUT);
pinMode(LEDgruen, OUTPUT);
pinMode(LEDrot, OUTPUT);
}
void loop()
{
// gruen und rot ein = gelb
analogWrite(LEDgruen, Helligkeit);
analogWrite(LEDrot, Helligkeit);
delay(Pause);
// gruen und rot aus = gelb aus
analogWrite(LEDgruen, LOW);
analogWrite(LEDrot, LOW);
// gruen und blau ein = türkis
analogWrite(LEDgruen, Helligkeit);
analogWrite(LEDblau, Helligkeit);
delay(Pause);
// gruen und blau aus = türkis aus
analogWrite(LEDgruen, LOW);
analogWrite(LEDblau, LOW);
// rot und blau ein = lila
analogWrite(LEDrot, Helligkeit);
analogWrite(LEDblau, Helligkeit);
delay(Pause);
// rot und blau aus = lila aus
analogWrite(LEDrot, LOW);
analogWrite(LEDblau, LOW);
}Download: programmcode-farbmischung-arduino-uno.ino
int LEDrot = D1;
int LEDgruen = D2;
int LEDblau = D3;
int Pause = 1000; // Pause von 1000 ms, also 1 Sekunde
int Helligkeit = 150; // Zahlenwert zwischen 0 und 255 - gibt die Leuchtstärke der einzelnen Farbe an
void setup()
{
pinMode(LEDblau, OUTPUT);
pinMode(LEDgruen, OUTPUT);
pinMode(LEDrot, OUTPUT);
}
void loop()
{
// gruen und rot ein = gelb
analogWrite(LEDgruen, Helligkeit);
analogWrite(LEDrot, Helligkeit);
delay(Pause);
// gruen und rot aus = gelb aus
analogWrite(LEDgruen, LOW);
analogWrite(LEDrot, LOW);
// gruen und blau ein = türkis
analogWrite(LEDgruen, Helligkeit);
analogWrite(LEDblau, Helligkeit);
delay(Pause);
// gruen und blau aus = türkis aus
analogWrite(LEDgruen, LOW);
analogWrite(LEDblau, LOW);
// rot und blau ein = lila
analogWrite(LEDrot, Helligkeit);
analogWrite(LEDblau, Helligkeit);
delay(Pause);
// rot und blau aus = lila aus
analogWrite(LEDrot, LOW);
analogWrite(LEDblau, LOW);
}Download: programmcode-farbmischung-wemos-d1-mini.ino
int LEDrot = 5;
int LEDgruen = 17;
int LEDblau = 16;
int Pause = 1000; // Pause von 1000 ms, also 1 Sekunde
int Helligkeit = 150; // Zahlenwert zwischen 0 und 255 - gibt die Leuchtstärke der einzelnen Farbe an
void setup()
{
pinMode(LEDblau, OUTPUT);
pinMode(LEDgruen, OUTPUT);
pinMode(LEDrot, OUTPUT);
}
void loop()
{
// gruen und rot ein = gelb
analogWrite(LEDgruen, Helligkeit);
analogWrite(LEDrot, Helligkeit);
delay(Pause);
// gruen und rot aus = gelb aus
analogWrite(LEDgruen, LOW);
analogWrite(LEDrot, LOW);
// gruen und blau ein = türkis
analogWrite(LEDgruen, Helligkeit);
analogWrite(LEDblau, Helligkeit);
delay(Pause);
// gruen und blau aus = türkis aus
analogWrite(LEDgruen, LOW);
analogWrite(LEDblau, LOW);
// rot und blau ein = lila
analogWrite(LEDrot, Helligkeit);
analogWrite(LEDblau, Helligkeit);
delay(Pause);
// rot und blau aus = lila aus
analogWrite(LEDrot, LOW);
analogWrite(LEDblau, LOW);
}Download: programmcode-farbmischung-esp32-wroom.ino
int LEDrot = D1;
int LEDgruen = D2;
int LEDblau = D3;
int Pause = 1000; // Pause von 1000 ms, also 1 Sekunde
int Helligkeit = 150; // Zahlenwert zwischen 0 und 255 - gibt die Leuchtstärke der einzelnen Farbe an
void setup()
{
pinMode(LEDblau, OUTPUT);
pinMode(LEDgruen, OUTPUT);
pinMode(LEDrot, OUTPUT);
}
void loop()
{
// gruen und rot ein = gelb
analogWrite(LEDgruen, Helligkeit);
analogWrite(LEDrot, Helligkeit);
delay(Pause);
// gruen und rot aus = gelb aus
analogWrite(LEDgruen, LOW);
analogWrite(LEDrot, LOW);
// gruen und blau ein = türkis
analogWrite(LEDgruen, Helligkeit);
analogWrite(LEDblau, Helligkeit);
delay(Pause);
// gruen und blau aus = türkis aus
analogWrite(LEDgruen, LOW);
analogWrite(LEDblau, LOW);
// rot und blau ein = lila
analogWrite(LEDrot, Helligkeit);
analogWrite(LEDblau, Helligkeit);
delay(Pause);
// rot und blau aus = lila aus
analogWrite(LEDrot, LOW);
analogWrite(LEDblau, LOW);
}Download: programmcode-farbmischung-nodemcu.ino