Hallo, ich verwende einen Nano, habe die ws2801 versorgt, den SCK (Pin 13 an CI) und den MOSI (Pin 11) an DI angeschlossen.
Nun will ich über SPI die Daten von Modul zu Modul Shiften.
Nun meine Frage - wie muß ich die Daten über SPI ansteuern?
bzw wie könnten die LED "wandern", also der Reihe nach angehen.
/// PIN11 (MOSI) -> DAT
/// PIN13 (SCK) -> CLK
/// GND -> GND
// Include the SPI library.
#include <SPI.h>
uint8_t blue = 0;
uint8_t red = 0;
uint8_t green =254;
void setup()
{
SPI.begin(); // initialize SPI hardware
}
void loop()
{
green++;
if( green > 253) {green = 0;};
SPI.transfer( green );
SPI.transfer( blue );
SPI.transfer( red );
delay(20);
}
}
uwefed
October 22, 2017, 4:58pm
2
Wenn Du ein LED nach dem anderen aufleuchten lassen willst mußt Du immer wieder die Daten an die WS2801 senden und jedesmal die Daten verändern, ein LED löschen das andere setzen.
Grüße Uwe
hmmm, klappt noch gar nicht. Ie würde ich nur die erste LED ansteuern?
ich verwende HW SPI und versuche einen ganzen buffer immer zu übertragen.
#include <SPI.h>
#define len 12
struct LED{
byte blue;
byte red;
byte green;
};
LED stripe[len] = {0};
int z=0;
void setup()
{
SPI.begin(); // initialize SPI hardware
}
void SetSPI(){
for(int i=0; i++; i <len){
stripe[i].green = 0;
stripe[i].blue = 0;
stripe[i].red = 0;
}
stripe[z].green = 255;
stripe[z].blue = 255;
stripe[z].red = 255;
z++;
if (z >len) {z=0;}
delay (200);
}
void loop()
{
SetSPI();
SPI.transfer(stripe, len*3);
}
agmue
October 23, 2017, 1:54pm
4
Versuche es mal mit der Programmbibliothek FastLED, die nutzt, wenn man will, auch Hardware-SPI.