RGB-LED: Zeigt weiß an?

Hallo,

bringe gerade eine RGB-LED aus dem Fritzing Starter Kit zum glühen; und bin etwas ratlos. Es handelt sich um eine "common anode"-RGB-LED mit 4 Beinchen. Das längste ist die Anode.

Verbindung wie folgt mit dem Arduino Uno: Anode mit 5V verbunden, die drei anderen Beinchen mit einem 220 Ohm Widerstand mit DigitalPIN 11,10,9

Es funktioniert auch - nur verstehe ich eines nicht: Wenn ich alle drei PINs auf Helligkeit 0 stelle, erhalte ich weißes Licht. "Sollte" das so sein? Komischerweise erhalte ich auch ausschließlich starkes, rotes Licht wenn ich R und G jeweils 255 zuweise, und B 0. Wenn ich "nur" R mit 255 und die anderen mit 0 füttere, ist es etwa halb so hell.

Hier mal mein Code:

int ledR = 10;           // the pin that the LED is attached to
int ledG = 11;           // the pin that the LED is attached to
int ledB = 9;           // the pin that the LED is attached to

// the setup routine runs once when you press reset:
void setup()  { 
  pinMode(ledR, OUTPUT);
  pinMode(ledG, OUTPUT);
  pinMode(ledB, OUTPUT);
} 

// the loop routine runs over and over again forever:
void loop()  { 
  analogWrite(ledR, 138);    
  analogWrite(ledG, 69);    
  analogWrite(ledB, 19);    

  delay(100);                            
}

Update Ich dachte mir, ich schließe mal drei Poti's an, um über diese die einzelnen Farben direkt am Ardu anzusteuern. Komischerweise ist die LED nun auch aus, wenn alle Potis auf ganz links gedreht sind. Auch die Farben sind sehr stark. An meinem ursprünglichen Code hat sich nichts geändert - auch die Poti's sind einfach angeklemmt (links 5V, rechts GND, mitte auf A0-A2). Kann sich das jemand erklären?

int ledR = 10;           // the pin that the LED is attached to
int ledG = 11;           // the pin that the LED is attached to
int ledB = 9;           // the pin that the LED is attached to

// the setup routine runs once when you press reset:
void setup()  { 
  pinMode(ledR, OUTPUT);
  pinMode(ledG, OUTPUT);
  pinMode(ledB, OUTPUT);
} 

// the loop routine runs over and over again forever:
void loop()  { 
  int potiR = analogRead(A0);
  int potiG = analogRead(A1);
  int potiB = analogRead(A2);
  int colR = 0;
  int colG = 0;
  int colB = 0;
  
  colR = map(potiR, 0, 1023, 0, 255);
  colG = map(potiG, 0, 1023, 0, 255);
  colB = map(potiB, 0, 1023, 0, 255);
  
  analogWrite(ledR, colR);    
  analogWrite(ledG, colG);    
  analogWrite(ledB, colB);    

  delay(100);                            
}

Ja, ich kann mir das erklaeren.

1) Du brauchst fuer jede farbe einen individuellen widerstand, nicht nur einen fuer alle. 2) Bei gemeinsamer anode ist die korrelation zwischen helligkeit und PWM wert invers (0 = voll an).

Des weiteren ist es unermaesslich hilfreich einen schaltplan (oder verdrahtungsbildchen bei einfachen dingen) zu posten. Die beschreibung in worten ist meistens mehrdeutig und verhindert sehr effektiv das geben von sinnvolle antworten.

madworm er hat schon 3 Widerstände an den 3 Kathoden angeschlossen.

Da Du die Andode fix auf +5V schaltest braucht es ein LOW Level an den Kathoden damit die LED leuchtet. Ein dauer-LOW gibt der PWM Ausgang bei analogWrite(pin,0) aus.

Der von Dir beschriebene Effekt ist richtig.

Grüße Uwe

Individuelle widerstaende... das passt aber mit dem folgenden irgendwie nicht zusammen

Komischerweise erhalte ich auch ausschließlich starkes, rotes Licht wenn ich R und G jeweils 255 zuweise, und B 0

madworm: Individuelle widerstaende... das passt aber mit dem folgenden irgendwie nicht zusammen

Komischerweise erhalte ich auch ausschließlich starkes, rotes Licht wenn ich R und G jeweils 255 zuweise, und B 0

Da wird er wohl R un B vertauscht haben. ;) ;)

die drei anderen Beinchen mit einem 220 Ohm Widerstand mit DigitalPIN 11,10,9

interpretire ich, daß er je einen Widerstand verwendet hat.

Grüße Uwe

Hallo,

ja, ich habe an jeder LED-Kathode einen 220 OHM-Widerstand dran. Ich habe auch gelesen, dass z.B. die rote LED einen anderen Widerstand brauchen könnte - da aber nur 220 Ohm (und dann 1k Ohm)-Widerstände im Fritzing-Kit enthalten waren, und ich auch kein Datenblatt für die enthaltene RGB-LED finden konnte, habe ich halt 3x 220 Ohm verwendet.

2) Bei gemeinsamer anode ist die korrelation zwischen helligkeit und PWM wert invers (0 = voll an). Ehrm, okay. Das habe ich nicht getestet - dann müsste also die LED auf "voll" leuchten, die 0 statt 255 als Wert hat. Was ich dann aber nicht verstehe: Mit den drei Poti's funktioniert die LED so, wie sie soll. Da mappe ich zwar die 1023 Stufen auf 255 - aber auf 0 gestellt, sollte die RGB von der Helligkeit doch auch "0" als Wert zugewiesen bekommen; ergo voll leuchten? Also, wenn alle drei Poti's auf 0 stehen, leuchtet die RGB nicht. Gleichwohl: wenn alle Potis auf "voll" stehen (also jede den Wert 255 zugewiesen bekommen müsste), habe ich kein rein-weißes-Licht (wie vorher ohne die Potis); da erkenne ich ein wenig Rotton; also nicht rein-weiß.

Das kommt darauf an wie Du die Potentiometer angeschlossen hast. Je nach Polung an den Endkontakten hat der Schleifkontakt voll nach rechts gedreht entweder 0 V oder +5V. Grüße Uwe