Bei einer RGB LED sind LEDs der Farben Rot, Grün und Blau in einem Element verbaut und können einzeln angesteuert werden. Dadurch sind nicht nur die Grundfarben selbst, sondern auch Mischfarben (Rot + Grün = Gelb) möglich und man braucht zur Realisierung von z.B. Statusanzeigen nur eine LED anstatt mehrerer. Zur Ansteuerung wird aber weiterhin ein PWM-Pin pro Grundfarbe benötigt.
Im Video zum Projekt werden die Werte von 3 Potentiometern eingelesen und damit die Helligkeit der Grundfarben der RGB LED gesteuert.
Hier das Video:
Und hier der Arduino Sketch zum Auslesen der Daten von den Potentiometern und zur Ansteuerung der RGB LED:
// Analog-Pins für Potentiometer
int Rin = 5;
int Gin = 4;
int Bin = 3;
// PWM-Pins für RGB-LED Ansteuerung
int Rout = 6;
int Gout = 9;
int Bout = 10;
// RGB Werte zwischenspeichern
int Rvalue = 0;
int Gvalue = 0;
int Bvalue = 0;
void setup() {
Serial.begin(9600);
// Pins zur LED-Ansteuerung auf OUTPUT setzen
pinMode(Rout, OUTPUT);
pinMode(Gout, OUTPUT);
pinMode(Bout, OUTPUT);
}
void loop() {
// Werte einlesen und von 10bit auf 8bit vierteln
Rvalue = analogRead(Rin)/4;
Gvalue = analogRead(Gin)/4;
Bvalue = analogRead(Bin)/4;
// Ausgabe auf Serial Monitor
Serial.print(Rvalue);
Serial.print(" - ");
Serial.print(Gvalue);
Serial.print(" - ");
Serial.print(Bvalue);
// Werte auf LED setzen
analogWrite(Rout, Rvalue);
analogWrite(Gout, Gvalue);
analogWrite(Bout, Bvalue);
}
Code-Sprache: Arduino (arduino)
Dank für die klasse Anregung, bin noch Anfänger.
Könnte man das auch mit einem Encoder mit Taster (Drehimpulsgeber) realisieren.
Wäre über Tips und Hinweise wie man das machen könnte sehr dankbar.
Gruß Axel
Hallo Axel,
einen digitalen Encoder kannst du für die Steuerung natürlich auch verwenden, das Auslesen der Daten ist da aber etwas komplizierter und geht am besten über interrupt-gesteuerte Funktionen. Mehr Infos und Beispielcode dazu findest du hier: http://playground.arduino.cc/Main/RotaryEncoders
Ein ganz einfaches Beispiel, bei der die Daten in der loop() ausgelesen werden, findest du hier:
http://www.circuitsathome.com/mcu/reading-rotary-encoder-on-arduino
Das funktioniert aber nur, wenn der Arduino in der loop() nicht zu viel weiteren Code auszuführen hat, ansonsten wirds zu langsam.
Ich hab auch seit Monaten ein paar Drehimpulsgeber herumliegen, vielleicht ein gutes Thema für eines der nächsten Videos.
Hey,
sag mal ich schaue deinen Blog fast wöchentlich mind. 3 mal an und stelle immer wieder fest, das du geniale Potentiometer hast – kannst du mir sagen von welcher Firma?
Ich will die auch, weil die Füße und Co einfach genial angeordnet sind und bei meinen immer das Problem ist, dass mind. 1 Fuß abnkickt – die sind teilweise vom Ausgang her so doof angeordnet, dass sie unter meinem Poti sind – auf Grund der Größe
Hi Stefan,
von diesen Potis hab ich leider auch nur 3 – und die sind aus dem Original Arduino Starter Kit. Ich schau in jedem Shop, hab diese Potentiometer bisher aber noch nirgends gefunden.
lg, Adi
Schade,
genau das ist auch mein Problem – versuche die Krampfhaft zu finden ;-(
Na gut – dann heißt es weitersuchen
Jetzt hab ich grade wieder mal im offiziellen Arduino-Shop geschaut, schau mal hier:
http://store.arduino.cc/category/22
Hab aber keine Ahnung welche Versandkosten die haben.
Für die Interssierten, die ebenfalls diese Potis haben möchten.
Habe gerade auf Grund des Versandpreises von der Arduino.cc – Seite mal ein wenig weiter gebohrt und geforscht.
Bei unserem großen Händler reichelt.de habe ich folgendes gefunden:
Poti und passend dazu Achse.
Viel Spaß beim Shoppen….habe gerade ein paar geordert :-) Die schwarzen Achsen gibt’s auch – sind aber leider momentan nicht lieferbar!
Hallo Adi,
hier bekommt die LED den Strom ja vom Arduino.
Wie müsste ich denn vorgehen wenn ich z.B. einen LED Streifen so ansteuern möchte? Da muss ich doch sicher eine externe Stromquelle anschließen?
Ciao Vigo
Hi Vigo,
Informationen dazu findest du in meinen Youtube-Video hier: https://www.youtube.com/watch?v=UVISnxXh_VY
Da gehts auch um die Stromversorgung von viele LEDs.
lg, Adi