Ciao a tutti, ho un problema nell'utilizzo di un led driver con l'arduino. Il led driver in questione è il TLC 5916IN. Leggendo il datasheet l'ho così collegato:
PIN 1(GND): collegato a massa dell'arduino
PIN 2(SDI): collegato al pin 7 dell'arduino
PIN 3(CLK): collegato al pin 5 dell'arduino
PIN 4(LE): collegato al pin 6 dell'arduino
PIN 5-12(OUT): collegati anodi dei led
PIN 13(OEnegato): collegato al pin 8 dell'arduino
PIN 14(SDO):
PIN 15(R-EXT): una resistenza da 2.2 Kohm collegata a massa
PIN 16(Vdd): collegato ai 5V dell'arduino
Da quanto ho letto nel datasheet il led driver ad ogni fronte di salita del segnale di clock legge il segnale in ingresso in SDI e lo memorizza nei registri. Poi quando viene abilitato LE questi dati sono passati in parello in output, se OE è abilitato ( ovvero se è OEnegato è basso).
Questo è il codice, spero qualcuno mi illumini su dove sbaglio, grazie in anticipo!
Michele
/
int data = 7;
int strob = 6;
int clock = 5;
int oe = 8;
int count = 0;
int dato = 0;
void setup()
{
pinMode(data, OUTPUT);
pinMode(clock, OUTPUT);
pinMode(strob, OUTPUT);
pinMode(oe, OUTPUT);
}
void PulseClock(void) {
digitalWrite(clock, LOW);
delayMicroseconds(20);
digitalWrite(clock, HIGH);
delayMicroseconds(50);
digitalWrite(clock, LOW);
}
void loop()
{
for (count = 0; count < 8; count++) {
digitalWrite(data, HIGH);
PulseClock();
}
digitalWrite(strob, HIGH);
delayMicroseconds(20);
digitalWrite(strob, LOW);
delayMicroseconds(20);
digitalWrite(oe,LOW);
delay(100);
digitalWrite(oe,HIGH);
delay(100); // waits for a moment
}