TLC5940 Vorwiderstände nötig + RGB Programmierung

Ich will mit einem TLC5940 RGB Leds ansteuern. In vielen Tutorials sieht man keine Vorwiderstände. Macht das TLC5940 diese überflüssig?

Der hat Konstantstromsenken. Der Strom wird über einen einzelnen Widerstand eingestellt. Siehe Datenblatt Seite 14:

Vielen Dank, d.h. mit ca 2kOhm an Iref habe ich ca. 20mA pro Kanal....das sollte für die RGB Leds passen. Oder?

So ich habe das ganze zum laufen bekommen. Leider gehen manche Ausgänge mit dem BasicUsage Beispiel-Sketch nicht.

Channel: 0,3,4,7,8,11,12,14

Eine Idee woran sowas liegen könnte?

Edit: habe erstmal nur normale Leds genommen (kein RGB)

Wie sieht dein Schaltplan dazu aus? Wie der Sketch?

genau wie hier, nur das ich den 10kOhm Widerstand nicht da hab und daher weggelassen habe. Und ich nur ein TLC nutze.

http://tlc5940arduino.googlecode.com/svn/wiki/images/breadboard-arduino-tlc5940.png

Der Code sieht so aus (erstmal ganz simpel gehalten, auf einem Arduino Nano):

#include "Tlc5940.h"

void setup()
{
  Tlc.init();
}

void loop()
{
    Tlc.setAll(1000);
    Tlc.update();
}

Kommando zurück...anscheinend ein Defekt am TLC, habe gerade einen anderen ausprobiert...da läuft alles!

Wie initialisiere ich am bestendie RGB Leds? Gibt es eine Funktion um die Farben zu berechnen?

Jeder Kanal hat 12 Bit (eine Zahl zwischen 0 und 4095). Wenn Du die unteren 4 Bit nicht verwendest sind die Farben einfache RGB Werte wie auf dem Bildschirm bzw Malprogramm.
Die RGB-LED müssen eine gemeinsame Anode haben oder alle Anoden/Kathoden herausgeführt sein. LED mit gemeinsamer Kathode funktionieren am TLC nicht.
Grüße Uwe

Danke, werde ich mal versuchen!

Anbei mein erster Test. Gibt es eventuell schon irgendwo fertige Animationen für die RGB Leds, welche man Nutzen kann? Ist schon recht aufwendig selber gescheite Animationen zu basteln :slight_smile:

Im Moment steige ich noch nicht so recht durch die Fade Funktionalität. Reicht eventuell ein Update nach der For-Schleife? Läuft das ganze asynchron zum Loop?

Wie bekomme ich es hin das die Funktion nur einmal Aufgerufen wird? Sie im Setup Aufzurufen hat leider nicht funktioniert.

#include "Tlc5940.h"
#include "tlc_fades.h"

#define NUM_LEDS 5 
int startValue = 0;
int endValue = 255;

void setup() {
  Tlc.init();
}

void loop() {
 
}

void setLed(byte num,int red,int green,int blue) {
  Tlc.set(num*3,red);
  Tlc.set(num*3+1,green);
  Tlc.set(num*3+2,blue);
  Tlc.update();
}

void buzzerAnimation() {
  unsigned long start = millis();
  unsigned long end = start + 3000;
  for(int i=0; i<NUM_LEDS; i+=1) {
    tlc_addFade(i*3, startValue, endValue, start, end);
    tlc_addFade(i*3+1, startValue, endValue, start, end);
    tlc_addFade(i*3+2, startValue, endValue, start, end);
    tlc_updateFades(millis());
    start+=1000;
    end+=1000;
  }
}

Ein Fading durch einen einmaligen Aufruf einer Funktion?
Scheint mir unmöglich.

Das Fading an sich macht ja die Funktion tlc_updateFades(); Ich will nur meine Funktion einmalig ausführen. Sonst schreibt er ja bei jedem Aufruf wieder in den FadeBuffer

Edit:

Irgendwie muss es ja möglich sein den Buffer nur einmalig zu füllen bzw die Funktion nur einmal auszuführen, z.B. beim drücken eines Tasters.

void buzzerAnimation() {
  for(int i=0; i<NUM_LEDS; i+=1) {
    current = millis();
    if(!tlc_isFading(i*3)) {
      tlc_addFade(i*3, startValue, endValue, current, current+2000);
    }
    tlc_updateFades(millis());
  }
}

Gibt es eine Software mit der man Animationen für den TLC erstellen kann?