Projekt B05 - Farben mischen mit PWM
Projekt B04 (Potentiometer) abgeschlossen
Bei RGB-LEDs werden drei Farben überlagert:
Jede Farbe wird durch 3 Werte definiert:
Was du brauchst
Eine LED mit vier Pins: Rot, Grün, Blau und gemeinsame Kathode (GND).
Wichtig: Bei "gemeinsamer Kathode" ist der längste Pin GND.
Jeweils ein Poti für Rot, Grün und Blau.
Benötigt: 3 ADC-Pins (A0, A1, A2)
Jede Farbe braucht einen eigenen Widerstand: 220Ω für alle drei Kanäle.
// 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);
}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); }
}Du kannst jetzt Farben mischen
3 PWM gleichzeitig
Additive Mischung
Mit 3 Potis steuern
B06: Piezo-Summer - Töne und Melodien erzeugen