Hello everyone,
first of all thanks for your code "Mortonkopf" I am working with your code to make spinning Pov-Display with Lpd8806 LED Strips with 2 Wings.
but because i used two lpd8806 LED Strips i have speed problem.
If first strip shows 1 slice of image then second strip has to show 88 slice of image to get whole image when the propeller spins.
I put almos same code twice to seperate image. So the Teensy Cpu has to complie longer so the frequency becomes slower.
How can i make frequency more faster? (leds should blink faster / now i have 264ms but purpose is 200ms)
Is there anyone who can help me?
i use total 56 leds.
image size ist 56 * 176
int rightWing[29] = {0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26 , 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56};
int leftWing[29] = {0, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55};
int lastVersion[176] = {88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120 ,121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ,11 ,12 ,13 ,14 ,15 ,16 ,17 ,18 ,19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56 ,57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87};
for (int row=0; row<bmpHeight; row++) {
{ if(flip)
pos1 = bmpImageoffset + (bmpHeight - 1 - lastVersion[row]) * rowSize;
else
pos1 = bmpImageoffset + lastVersion[row] * rowSize;
if(bmpFile.curPosition() != pos1) {
bmpFile.seekSet(pos1);
buffidx = sizeof(sdbuffer);
}
for (int col=0; col<bmpWidth; col++) {
// read more pixel data
if (buffidx >= sizeof(sdbuffer)) {
povidx = 0;
bmpFile.read(sdbuffer, sizeof(sdbuffer));
buffidx = 0;
}
// set pixel
r = sdbuffer[buffidx++];
g = sdbuffer[buffidx++];
b = sdbuffer[buffidx++];
povbuffer[povidx++] =(((uint32_t)b & 0x80 )<<16 | ((uint32_t)g & 0x80)<<8 | (uint32_t)r & 0x80);
}
for(int i=0;i<28;i++){
leds1 = povbuffer[leftWing];
}
}
{
if(flip) // Bitmap is stored bottom-to-top order (normal BMP)
pos = bmpImageoffset + (bmpHeight - 1 - row) * rowSize;
else // Bitmap is stored top-to-bottom
pos = bmpImageoffset + row * rowSize;
if(bmpFile.curPosition() != pos) { // Need seek?
bmpFile.seekSet(pos);
buffidx = sizeof(sdbuffer); // Force buffer reload
}
for (int col=0; col<bmpWidth; col++) { // For each column...
// read more pixel data
if (buffidx >= sizeof(sdbuffer)) {
povidx = 0;
bmpFile.read(sdbuffer, sizeof(sdbuffer));
buffidx = 0; // Set index to beginning
}
// set pixel
r = sdbuffer[buffidx++];
g = sdbuffer[buffidx++];
b = sdbuffer[buffidx++];
//we need to output BRG 24bit colour//
povbuffer[povidx++] =(((uint32_t)b & 0x80 )<<16 | ((uint32_t)g & 0x80)<<8 | (uint32_t)r & 0x80);
//Color(b,r,g);//octo colour, but you might need to change this
}
for(int i=0;i<28;i++){
leds = povbuffer[rightWing];
}
}
FastLED.show();