Im inneren der RGB-LED sind 3 einzelne LEDs miteinander verschaltet (Rot, Grün, Blau). Die Pins für Rot/Gelb/Blau können unterschiedlich angeordnet sein und auch hier gibt es Bauteile mit einer gemeinsamen Kathode oder einer gemeinsamen Anode.
Die digitalen PWM-Pins schalten das Signal sehr schnell ein und aus: Mit ihnen kannst du Helligkeit, Drehzahl und Leistung steuern. Sie werden beispielsweise verwendet, um
• eine RGB-LED anzusteuern
• eine LED zu dimmen
• RGB-Streifen zu programmieren
• die Position bei einem Servo-Motor einzustellen
• die Drehzahl bei Motoren zu regulieren
Eine LED leuchtet nicht so hell, wenn weniger Strom fließt.
Aber die PWM-Pins sind digitale Pins und können nur HIGH (5V) oder LOW (0V). Sie schalten sich sehr schnell an und aus. Das Dimmen ist also nur ein sehr schnelles ein- und ausschalten und die Helligkeit wird über den Duty Cycle ( = wie lange ist die LED an) bestimmt.
Da unser Auge nicht erkennt, dass die LED ein- und ausgeschaltet wird, sieht es so aus als würde sie weniger stark leuchten.
Der Befehl erzeugt ein PWM-Signal: Du kannst also nur die PWM-Pins verwenden. Bei unserem Mikrocontroller sind das die Pins 11 – 10 – 9 – 6 – 5 – 3 -> Achte auf die Tilde ~
Die Zahlen werden durch die (maximale) Auflösung von unserem Mikrocontroller bestimmt: 8 Bit
8 Bit ⇒ 28 = 256 mögliche Werte ⇒ [ 0 – 255 ]
255 ist die maximale Auflösung, die wir mit 8 Bit erreichen
// 0% Leuchtkraft (= LED aus)
analogWrite(13, 0);
// 50% Leuchtkraft (= LED 50% gedimmt)
analogWrite(13, 128);
// 1000% Leuchtkraft (= LED an)
analogWrite(13, 255);
Mit einem einfachen Programm testen wir, welche Pinbelegung unser Bauteil hat: Programmiere die RGB so, dass sie entweder ROT oder GRÜN oder Blau leuchtet.
Hinweis: Das Programm steuert nacheinander alle 3 Pins an – du kannst natürlich auch jeden Pin einzeln ansteuern (nicht automatisch durchlaufend).
void setup(){
pinMode(6, OUTPUT);
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
}
void loop(){
// Pin 6 leuchtet (Farbe ?)
analogWrite(6,255);
delay(2000);
analogWrite(6,0);
// Pin 5 leuchtet (Farbe ?)
analogWrite(5,255);
delay(2000);
analogWrite(5,0);
// Pin 3 leuchtet (Farbe ?)
analogWrite(3,255);
delay(2000);
analogWrite(3,0);
}
Kannst du die RGB so programmieren, dass sie gelb – orange – violett anzeigt?
Hinweis: Im Video werden alle 256 x 256 x 256 = 16.777.216 Farben automatisch abgespielt.
Hier findest du Beispiele: Du musst natürlich nicht genau diese Werte verwenden, zu orange haben wir 2 unterschiedliche RGB-Codes verwendet.
Hinweis: Das ist ein Projekt für Fortgeschrittene (elegant programmiert) oder ein Projekt mit sehr viel Code 8dann programmiere nicht alle Farben!).