da ich noch ziemlich am Anfang stehe mit C Programmierung bräuchte ich etwas Hilfe.
Es geht um den Aufruf der setRGBData Funktion im FastSPI:
// call this method whenever you want to output a block of rgb data. It is assumed that
// rgbData is nNumLeds * 3 bytes long.
void setRGBData(unsigned char *rgbData) { memcpy(m_pData,rgbData,m_nLeds); m_nDirty=1;}
Wie rufe ich die genau auf im sketch? "FastSPI_LED.setRGBData ..." ? oder muss ich zuvor noch den definierten struct aufrufen?
Falls die Info noch notwendig sein sollte, ich nutze derzeit die WS2801 ICs, jedoch muss ich auf die WS2811 für ein kleines Projekt umsteigen,da die günstiger sind und die Adafruit library kann das wohl nicht. Die LEDs laufen alle mit FastSPI, ich hänge wirklich nur an dem Aufruf der Funktion
Ich hab grad mal eine LED mit einem ws2811 angeschlossen zum testen und es funktioniert
Aufruf der FastSPI mit:
FastSPI_LED.setChipset(CFastSPI_LED::SPI_WS2811);
rot und grün müssen getauscht werden, wenn man vorher die WS2801 genutzt hat
und diese Zeile sollte dann auch entfernt werden: FastSPI_LED.setDataRate(2);
/edit
bei 10 Stück funktioniert das ganze auch einwandfrei
ich habe mittlerweile ziemlich viele ICs durchprobiert. Darunter WS2801/3, TM1804, HL1606, TLC5941, UCS5903/LPD6803 und natürlich den LPD8806.
Der HL1606 ist eine Katastrophe, dass er nicht so viel kann ist nicht mal das Problem, auch elektrisch ist er sehr störanfällig.
Der WS280/3 ist ok, allerdings ist die 500us "Latch"-Pause nervig. Das Tm1804-Protokoll hat sowieso ein vergleichsweise aufwendiges Timing, hat aber durch das 1-Draht Protokoll natürlich Vorteile bei der Verdrahtung. Da man Hardware-SPI eh nicht verwenden kann, kann man jeden Port eines uC nutzen und sogar relativ leicht einige Strips parallel ansprechen.
Der LPD8806 ist jedoch m.E. für den Programmierer das angenehmste IC, denn er ist nahezu unempfindlich gegenüber Timing. Da die PWM-Informationen immer mit einer Startsequenz aus einigen 0-Bytes eingeleitet wird und die Daten angezeigt werden, sobald der Chip alle Informationen hat, kann auf der einen Seite die volle Bitrate des Hardware-SPI reinjagen (bis zu 20MHz hat bei mir problemlos funktioniert), ohne irgendwelche Pausen einbauen zu müssen. Auf der anderen Seite kann man über einen Debugger die PWM-Informationen sogar per Einzelschritt dem Strip übergeben und werden LED für LED angezeigt. Das kann bei machen Animationen durchaus praktisch sein.
Dass die PWM nur 7-Bit sind ist zwar ein kleiner Wermutstropfen, aber wer mehr Stufen braucht kann dank der hohen Datenrate ein paar zusätzliche Bits simulieren.