🌈

RGB-LED Farbmischer

Projekt B05 - Farben mischen mit PWM

Beginner
RGB-LED
3x PWM
3x Poti
1
Lernziele

Was du lernst

  • Mehrkanal-PWM - Drei PWM-Signale gleichzeitig steuern
  • Additive Farbmischung - Rot + Grün + Blau = Weiß
  • RGB-LED - Drei LEDs in einem Gehäuse
  • Interaktive Steuerung - Mit drei Potis Farben mischen

Voraussetzungen

Projekt B04 (Potentiometer) abgeschlossen

2
Theorie

Additive Farbmischung

Wie entstehen Farben?

Bei RGB-LEDs werden drei Farben überlagert:

  • Rot + Grün = Gelb
  • Rot + Blau = Magenta
  • Grün + Blau = Cyan
  • Rot + Grün + Blau = Weiß
  • Alle aus = Schwarz

RGB-Werte

Jede Farbe wird durch 3 Werte definiert:

  • (255, 0, 0) = Rot
  • (0, 255, 0) = Grün
  • (0, 0, 255) = Blau
  • (255, 255, 0) = Gelb
  • (255, 128, 0) = Orange
  • (128, 0, 128) = Lila

Komponenten

Was du brauchst

🌈

RGB-LED (gemeinsame Kathode)

Eine LED mit vier Pins: Rot, Grün, Blau und gemeinsame Kathode (GND).

Wichtig: Bei "gemeinsamer Kathode" ist der längste Pin GND.

🎛️

3x Potentiometer 10kΩ

Jeweils ein Poti für Rot, Grün und Blau.

Benötigt: 3 ADC-Pins (A0, A1, A2)

Vorwiderstände

Jede Farbe braucht einen eigenen Widerstand: 220Ω für alle drei Kanäle.

3
Code

RGB-LED mit 3 Potis steuern

// B05: RGB-LED Farbmischer

const int POTI_R = A0;
const int POTI_G = A1;
const int POTI_B = A2;

const int LED_R = 9;   // PWM-Pins!
const int LED_G = 10;
const int LED_B = 11;

void setup() {
  pinMode(LED_R, OUTPUT);
  pinMode(LED_G, OUTPUT);
  pinMode(LED_B, OUTPUT);
  Serial.begin(9600);
  Serial.println("RGB-Farbmischer gestartet!");
}

void loop() {
  // Potis lesen und auf 0-255 mappen
  int r = map(analogRead(POTI_R), 0, 1023, 0, 255);
  int g = map(analogRead(POTI_G), 0, 1023, 0, 255);
  int b = map(analogRead(POTI_B), 0, 1023, 0, 255);

  analogWrite(LED_R, r);
  analogWrite(LED_G, g);
  analogWrite(LED_B, b);
  delay(50);
}

Bonus: Automatischer Regenbogen

Farbübergänge ohne Potis

// Regenbogen-Effekt

const int LED_R = 9;
const int LED_G = 10;
const int LED_B = 11;

void setup() {
  pinMode(LED_R, OUTPUT);
  pinMode(LED_G, OUTPUT);
  pinMode(LED_B, OUTPUT);
}

void setColor(int r, int g, int b) {
  analogWrite(LED_R, r);
  analogWrite(LED_G, g);
  analogWrite(LED_B, b);
}

void loop() {
  // Rot → Gelb → Gruen → Cyan → Blau → Magenta → Rot
  for (int i = 0; i < 255; i++) { setColor(255, i, 0); delay(10); }
  for (int i = 255; i > 0; i--) { setColor(i, 255, 0); delay(10); }
  for (int i = 0; i < 255; i++) { setColor(0, 255, i); delay(10); }
  for (int i = 255; i > 0; i--) { setColor(0, i, 255); delay(10); }
  for (int i = 0; i < 255; i++) { setColor(i, 0, 255); delay(10); }
  for (int i = 255; i > 0; i--) { setColor(255, 0, i); delay(10); }
}
🌈

Geschafft!

Du kannst jetzt Farben mischen

Mehrkanal-PWM

3 PWM gleichzeitig

RGB-Farben

Additive Mischung

Interaktion

Mit 3 Potis steuern

Nächstes Projekt

B06: Piezo-Summer - Töne und Melodien erzeugen

← →
1 / 7