Inhaltsverzeichnis
Für dieses Projekt benötigst du
Eine RGB-LED ansteuern
Aufgabe: Eine RGB LED soll in verschiedenen Farben leuchten.
Was ist eine RGB-LED? Eine RGB-LED ist eine LED, die in verschiedenen Farben leuchten kann. Hinter der Bezeichnung RGB verbergen sich die Farben „Rot“, „Grün“ und „Blau“. Die LED besteht im Inneren aus drei einzeln ansteuerbaren LEDs, die in den drei Farben leuchten. Deswegen hat eine RGB-LED auch so viele Beinchen, nämlich genau vier. Das längste der vier Beinchen ist die gemeinsame Kathode (Common cathode). Mit den drei kürzeren Beinchen werden die einzelnen Farben der RGB-LED angesteuert.
Common cathode: Das längste Beinchen der LED ist „-“ (GND) und die drei kürzeren Beinchen werden über die digitalen Pins angesteuert.
Durch eine Mischung der Farben können noch sehr viele weitere Farben erzeugt werden. Zum Beispiel entsteht durch die Ansteuerung der Farben „Blau“ und „Grün“ die Farbe „Türkis“.
Mikrocontroller kennen an ihren digitalen Ausgängen nur „Spannung an“ oder „Spannung aus“. Damit man mit einer RGB-LED die vielen verschiedenen Farben erzeugen kann, müssen die einzelnen Farben der LED jedoch genauer angesteuert werden. Dazu verwendet man die Pulsweitenmodulation (externer Link, abgerufen am 09.01.24).
Beim Arduino UNO kann die PWM (Pulsweitenmodulation) nur an den digitalen Pins verwendet werden, an denen auf dem Board eine kleine Welle aufgedruckt ist.
Bei den anderen Mikrocontrollern können alle digitalen Pins verwendet werden.
Die PWM lässt die Spannung zwischen +5V und 0V pulsieren. Die Spannung wird also im Millisekundenbereich ein- und ausgeschaltet. Bei einer hohen PWM liegt das 5V Signal nahezu durchgehend am jeweiligen Pin an. Bei einer geringen PWM ist das 5V Signal kaum noch vorhanden (Da dies eine sehr kompakte Zusammenfassung ist, sollte man sich im Internet nach weiteren Erläuterungen umsehen). Mit dieser PWM kann man bei LEDs einen ähnlichen Effekt erreichen, als würde man die Spannung variieren.
Schaltpläne
Drei einzelne Farben
Arduino UNO
int LEDrot = 5;
int LEDgruen = 6;
int LEDblau = 3;
int Pause = 1000; // Pause mit 1000ms 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
}
Wemos D1 Mini
int LEDrot = D1;
int LEDgruen = D2;
int LEDblau = D3;
int Pause = 1000; // Pause mit 1000ms 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
}
ESP32-Wroom
int LEDrot = 5;
int LEDgruen = 17;
int LEDblau = 16;
int Pause = 1000; // Pause mit 1000ms 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
}
NodeMCU
int LEDrot = D1;
int LEDgruen = D2;
int LEDblau = D3;
int Pause = 1000; // Pause mit 1000ms 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
}
Farbmischung von drei Farben
Arduino UNO
int LEDblau = 3;
int LEDrot = 5;
int LEDgruen = 6;
int Pause = 1000; // Pause mit 1000ms 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);
}
Wemos D1 Mini
int LEDrot = D1;
int LEDgruen = D2;
int LEDblau = D3;
int Pause = 1000; // Pause mit 1000ms 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);
}
ESP32-Wroom
int LEDrot = 5;
int LEDgruen = 17;
int LEDblau = 16;
int Pause = 1000; // Pause mit 1000ms 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);
}
NodeMCU
int LEDrot = D1;
int LEDgruen = D2;
int LEDblau = D3;
int Pause = 1000; // Pause mit 1000ms 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);
}
Funduino - Dein Onlineshop für Mikroelektronik
-
Dauerhaft bis zu 10% Rabatt für Schüler, Studenten und Lehrkräfte
-
Mehr als 3.500 Artikel sofort verfügbar!
-
Über 8 Jahre Erfahrung mit Arduino, 3D-Druck und co.