8xRGB

Hi zusammen.

Meine Frage heute ist wie gehe ich mit vielen RGB LEDs richtig um?

Mein Ansatz bisher: Alle RGB Kabel zusammen genommen und 3 Pins (mit jeweils 560 Ohm Wiederstand) vom Arduino belegt.
Für die 8 Grounds habe ich den 74595 genommen.
Damit rattere ich nun durch jedes LED und stelle die Farbe ein. Soweit so gut.
2 Probleme springen aber sofort ins Auge:
Die Farben "schlieren"... also je nach vorhergehender Farbe hab ich davon noch ein bisschen was in der nächsten. Ungewollte Pastelltöne.
Und natürlich leuchten die LEDs nicht mehr so hell wie sie könnten.

Ein delay(1) hilft einwenig die Farben intensiver und satter zu machen.
Allerdings bemerkt man schon mit delay(2) ein kleineres Flackern der LEDs. Und ich vermute mal wenn alle angeschlossen sind wird das nur noch schlimmer. (es kommen mindestens nochmals so viele.

Das Schema der Anschlüsse kommt von zwei der 2x2 ButtonPads

Hab den Source vergessen, sry.

int i = 0;
int led[] = {B11111101, B11111110, B11011111, B11101111, B11110111, B11111011, B01111111, B10111111};
void loop()            
{
  for(i=0;i<8;++i)
  {
    updateLEDs(led[i]);
    switch(i)
    {
      case 0: rgb(0,0,1); break;
      case 1: rgb(0,1,0); break;
      case 4: rgb(1,0,0); break;
      case 5: rgb(0,0,0); break;
      
      case 2: rgb(1,1,1); break;
      case 3: rgb(1,0,0); break;
      case 6: rgb(0,1,0); break;
      case 7: rgb(0,0,1); break;
    }
    delay(1);
  }
}

void rgb(boolean r, boolean g, boolean b)
{
  digitalWrite(red, r); digitalWrite(grn, g); digitalWrite(blu, b);
}

Vielleicht erst mal das Tutorial durchlesen:

Ich hab doch gesagt das es funktioniert. Nur, dass ich mit dem Ergebnis nicht zufrieden bin.

Ich würde den 74HC595 mal mit dem Befehl shiftOut(dataPin, clockPin, MSBFIRST, bitsToSend) steuern !

Sind die RGB Leds common cathode oder common anode ?

die updateLEDs(int val) habe ich aus dem Tutorial von ardx.com is available for purchase - Sedo.com

void updateLEDs(int value){
  digitalWrite(latch, LOW);     //Pulls the chips latch low
  shiftOut(data, clock, MSBFIRST, value); //Shifts out the 8 bits to the shift register
  digitalWrite(latch, HIGH);   //Pulls the latch high displaying the data
}

Nur verwende ich ihn umgekehrt weil ich 8 Grounds habe. Also common cathode würd ich jetzt mal sagen... 3xPlus, 1xMinus

Ich würde mit dem 74HC595 common cathode RGB Leds benutzen und die 3 Anoden, wie im Tutorial, mit dem 74HC595 verbinden. Desweiteren bei 5V für jeden Anodenanschluss einen 220Ohm Widerstand.

Ich kann an dem SetUp nichts ändern, da es die 2x2 ButtonPads sind.

Es muss doch möglich sein damit schöne satte Farben hinzukriegen. Ich vermute es ist nur ein Kniff mit dem Programmieren, den ich nicht sehe.

Ich vermute mal das jedesmal wenn man eine Taste drückt diese erleuchtet werden soll ?

Button Pad 2x2 - Breakout PCB:

Button Pad 2x2 - LED Compatible:

Ist das dass richtige Produkt ?

Wenn ja, hast Du die empfohlenen 1N4148 Dioden eingelötet ?

Wieviele Pads benutzt Du zur selben Zeit ?

Bei dem oben erwähnten Pads müssen Common Cathode RGB Leds benutzt werden.

Die Dioden sind nur zum Debouncen. Das Problem ist ja hier, dass auf einen LedTreiber verzichtet wird, obwohl ein Pad durch einen TLC einwandfrei angesteuert werden könnte.

Kann der 595 überhaupt soviel sinken? Ich dachte irgendwie nicht dass man den so verwenden kann.

Grüsse

Wenn ich mir das Breakout so anschaue bin ich der Meinung das man die mit Rot, Grün und Blau gekennzeichneten Anschlusse jeweils über einen Widerstand mit 5V verbinden sollte.

Grün und Blau jeweils 100Ohm und Rot 150Ohm.

Das kommt auf die Leds an, ist ja auch egal ob es CC oder CA Leds sind, daran ändert ja das Breakout nichts.

Das mit den Widerständen: Nein. Immer die Farben getrennt mit Widerständen versehen, nie den gleichen Wert und nie die zusammengelegte Anode oder Kathode

Getrennte R braucht man, da man für ROT in RGB Leds eine niedrigere Spannung benötigt, sonst dominiert sie in der Farbmischung und raucht zudem schneller ab.

Imgur
Imgur
http://www.aarongoselin.com/active-posts/28-using-sparkfuns-2x2-rgb-led-button-pad-with-an-arduino SOURCECODE

Ich hoffe das diese Informationen ausreichend sind !

Der Link von Aaron aus den Comments von SFE ist allerdings ohne HC, und verbraucht viele Arduinopins, sonst hätt ich den auch schon gepostet.

Vielleicht wird in der Beispielschaltung kein 74HC595 benutzt wegen dem PWM ?

Jup, ich würde das wie gesagt auch nicht so lösen, besonders nicht mit delay(); sonst friert einem nur wegen bunten Farben der ganze Code ein.

Hallo apogee

Die Dioden sind nur zum Debouncen.

Die Dioden sind nicht zum Entprellen da sondern um die Tasten un der Matix voneinander zu isolieren und so einen Mehrfachtastendruck erkennen zu können.

Grüße Uwe

Hi zusammen und danke erstmal.

Das tut von Aaron hab ich mir natürlich schon angesehen.

Ich habe nun alle 16 RGBs angeschlossen und damit rumgespielt.
Was ich zum Beispiel machen will ist, dass alle LEDs blau leuchten. Dann mit einem roten Licht da entlangfahren... Wie bei KnightRider mit dem Unterschied das auch die übrigen LEDs blau leuchten.

Ist der TLC das da? -> TLC5945 data sheet, product information and support | TI.com

Wieviele brauche ich denn davon? Zwei? Einen für alle 16 Grounds und einen für die 12 RGB Kabel?

Vill. hab ich mir schon einen geordert. Werde mal nachsehn wenn ich wieder zuhause bin.

Verstehst du eigentlich so ganz was rgb leds sind? Deiner Rechnung nach zu urteilen nicht.

Du brauchst einen, da du 12 Kanäle hast.

4 mal 2x2 Button Pads (16 RGB LEDs)

Jedes ButtonPad hat 4 Grounds und 1xR 1xG 1xB (die Switches mal aussen vorgelassen)

4x4 Grounds = 16
4x3 RGB = 12
Was ist daran falsch?

Um die Farben pro Knopf zu steuern, muss ich sowohl die einzelnen Grounds wie auch die Farben kontrollieren können, da sonst alle 4 Knöpfe gleichzeitig in einer Farbe leuchten.