0
Offline
Jr. Member
Karma: 0
Posts: 77
Arduino rocks
|
 |
« on: November 21, 2010, 01:25:10 pm » |
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
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Jr. Member
Karma: 0
Posts: 77
Arduino rocks
|
 |
« Reply #1 on: November 21, 2010, 01:32:34 pm » |
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); }
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Edison Member
Karma: 17
Posts: 1926
Wo ein Wille ist, da ist auch ein Weg !
|
 |
« Reply #2 on: November 21, 2010, 01:45:46 pm » |
Vielleicht erst mal das Tutorial durchlesen: http://arduino.cc/en/Tutorial/ShiftOut
|
|
|
|
« Last Edit: November 21, 2010, 01:45:54 pm by Megaionstorm »
|
Logged
|
|
|
|
|
0
Offline
Jr. Member
Karma: 0
Posts: 77
Arduino rocks
|
 |
« Reply #3 on: November 21, 2010, 02:27:30 pm » |
Ich hab doch gesagt das es funktioniert. Nur, dass ich mit dem Ergebnis nicht zufrieden bin.
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Edison Member
Karma: 17
Posts: 1926
Wo ein Wille ist, da ist auch ein Weg !
|
 |
« Reply #4 on: November 21, 2010, 02:33:15 pm » |
Ich würde den 74HC595 mal mit dem Befehl shiftOut(dataPin, clockPin, MSBFIRST, bitsToSend) steuern !
Sind die RGB Leds common cathode oder common anode ?
|
|
|
|
« Last Edit: November 21, 2010, 02:35:42 pm by Megaionstorm »
|
Logged
|
|
|
|
|
0
Offline
Jr. Member
Karma: 0
Posts: 77
Arduino rocks
|
 |
« Reply #5 on: November 21, 2010, 02:49:41 pm » |
die updateLEDs(int val) habe ich aus dem Tutorial von ardx.com/CODE05 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
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Edison Member
Karma: 17
Posts: 1926
Wo ein Wille ist, da ist auch ein Weg !
|
 |
« Reply #6 on: November 21, 2010, 02:53:35 pm » |
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.
|
|
|
|
|
Logged
|
|
|
|
|
|
|
0
Offline
Edison Member
Karma: 17
Posts: 1926
Wo ein Wille ist, da ist auch ein Weg !
|
 |
« Reply #8 on: November 21, 2010, 05:45:35 pm » |
Ich vermute mal das jedesmal wenn man eine Taste drückt diese erleuchtet werden soll ? Button Pad 2x2 - Breakout PCB: http://www.sparkfun.com/products/9277Button Pad 2x2 - LED Compatible: http://www.sparkfun.com/products/7836Ist 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.
|
|
|
|
« Last Edit: November 21, 2010, 06:01:49 pm by Megaionstorm »
|
Logged
|
|
|
|
|
0
Offline
God Member
Karma: 1
Posts: 659
Arduino sucks
|
 |
« Reply #9 on: November 21, 2010, 06:01:32 pm » |
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
|
|
|
|
« Last Edit: November 21, 2010, 06:04:17 pm by saw0 »
|
Logged
|
|
|
|
|
0
Offline
Edison Member
Karma: 17
Posts: 1926
Wo ein Wille ist, da ist auch ein Weg !
|
 |
« Reply #10 on: November 21, 2010, 06:07:29 pm » |
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.
|
|
|
|
« Last Edit: November 21, 2010, 06:24:36 pm by Megaionstorm »
|
Logged
|
|
|
|
|
0
Offline
God Member
Karma: 1
Posts: 659
Arduino sucks
|
 |
« Reply #11 on: November 21, 2010, 06:13:47 pm » |
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.
|
|
|
|
« Last Edit: November 21, 2010, 06:14:42 pm by saw0 »
|
Logged
|
|
|
|
|
0
Offline
Edison Member
Karma: 17
Posts: 1926
Wo ein Wille ist, da ist auch ein Weg !
|
 |
« Reply #12 on: November 21, 2010, 06:45:20 pm » |
|
|
|
|
« Last Edit: November 21, 2010, 07:20:42 pm by Megaionstorm »
|
Logged
|
|
|
|
|
0
Offline
God Member
Karma: 1
Posts: 659
Arduino sucks
|
 |
« Reply #13 on: November 21, 2010, 07:29:40 pm » |
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.
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Edison Member
Karma: 17
Posts: 1926
Wo ein Wille ist, da ist auch ein Weg !
|
 |
« Reply #14 on: November 21, 2010, 07:33:31 pm » |
Vielleicht wird in der Beispielschaltung kein 74HC595 benutzt wegen dem PWM ?
|
|
|
|
|
Logged
|
|
|
|
|
|