iamable
February 28, 2013, 8:26am
1
Moin moin.
hab heute eine Rolle von den LPD8806 mit den 52 LEDs pro Meter bekommen zum testen.
Habe bisher immer die mit den 32 verwendet.
Eigentlich dachte ich, das ließe sich einfach um stecken und gut ist.
Anscheinend nicht....
Kann es sein, dass es für diese eine neue library gibt?
Wenn ja wo findet man die?
Danke und viele Grüße
pylon
February 28, 2013, 10:25am
2
Wieviele LEDs Du pro Meter hast, ist nicht relevant. Zähl mal die Chips, die der ganze Strip hat. Diese Zahl musst Du dann im Sketch als Anzahl LEDs eingeben. Ich nehme an, Du hast geprüft, dass im Strip wirklich der LPD8806 verbaut ist...
iamable
February 28, 2013, 12:53pm
3
ja es sind LPD8806 verbaut.
aber selbst wenn die anzahl der LEDs nicht stimmt sollte doch zumindest irgendetwas leuchten.
Es bleibt aber leider komplett dunkel
iamable
February 28, 2013, 1:08pm
4
Ich habe hier mal ein script, dass mit den alten strips wunderbar läuft.
Das neue strip bleibt aus
#include "LPD8806.h"
#include "SPI.h"
#include "SimpleTimer.h"
int dataPin1 = 5;
int clockPin1 = 4;
int stripLengthv = 38;
int totalLength = stripLengthv;
LPD8806 strip1 = LPD8806(stripLengthv, dataPin1, clockPin1);
int aktPixel;
int aktPart;
char incoming = '0'; // incoming serial data
unsigned char incomingString[5];
int counter = 0;
unsigned long millisdelaydelta=1000; // for blinking
unsigned long startMillis;
uint8_t aktR;
uint8_t aktG;
uint8_t aktB;
uint8_t d; // dimmfactor
#define EOL_DELIMITER '\n' // for flash
#define LED_PIN 13
int rainbowIndex = 0;
//----SETUP-------------------------------------------------------------------------------------------------------------------------
void setup()
{
Serial.flush();
counter = 0;
for(int i=0; i<6; i++)
{
strip1.begin();
strip1.show();
}
//stripLength = strip.numPixels(); // NEW
Serial.begin(9600);
Serial.print("INITIALIZING");
Serial.print(EOL_DELIMITER);
Serial.print("READY");
Serial.print(EOL_DELIMITER);
//clearAllLeds();
pinMode(LED_PIN, OUTPUT);
//blinkTimer.setInterval(100, LedBlink);
Serial.flush();
}
//----LOOP-------------------------------------------------------------------------------------------------------------------------
void loop()
{
rainbowIndex = (rainbowIndex+1)%384;
Wheel(rainbowIndex);
for (int i=0; i < totalLength; i++) {
paint(i);
}
showStrip();
delay(10);
}
void showStrip()
{
for(int i=0; i<6; i++)
{
strip1.show();
}
}
void paint(int pixelPos)
{
strip1.setPixelColor(pixelPos, aktR, aktG, aktB);
}
void Wheel(uint16_t WheelPos)
{
byte r, g, b;
switch(WheelPos / 128)
{
case 0:
r = 127 - WheelPos % 128; //Red down
g = WheelPos % 128; // Green up
b = 0; //blue off
break;
case 1:
g = 127 - WheelPos % 128; //green down
b = WheelPos % 128; //blue up
r = 0; //red off
break;
case 2:
b = 127 - WheelPos % 128; //blue down
r = WheelPos % 128; //red up
g = 0; //green off
break;
}
aktR = r;
aktG = g;
aktB = b;
}
pylon
February 28, 2013, 1:11pm
5
Versuch mal den Leitungen bis zum Chip zu folgen und mit dem alten, funktionierenden Strip zu vergleichen. Die China-Strips neigen dazu, hier unangekündigt Änderungen vorzunehmen und die Leitungen falsch anzuschreiben. Du findest genügend Beispiele dafür im Forum.