Arrays and framebuffers
hi all,
i need little code isn't doing want reliably.
aim: allow arduino accept stream of data creates frames (as in, video frames, if like) of data can played out rgb leds
so code works degree -- gets bit of miss.
i write data on serial this
end+ denotes end of frame - should write temporary buffer in framebuffer.
the framebuffer large buffer want fill frames of data played out leds
i apologise profusely if code horribly messy.
i need little code isn't doing want reliably.
aim: allow arduino accept stream of data creates frames (as in, video frames, if like) of data can played out rgb leds
so code works degree -- gets bit of miss.
i write data on serial this
code: [select]
<data>end+
end+ denotes end of frame - should write temporary buffer in framebuffer.
the framebuffer large buffer want fill frames of data played out leds
i apologise profusely if code horribly messy.
code: [select]
//setup software serial buffer
const int buffersize = 6;
char buff[num_leds*3*buffersize];
int buffpos = 0;
char buffchar;
//stuff compare to
char codeframe[4] = "end";
char codecheck[4];
const int fbuffsize = 6;
char fbuff[num_leds*3*fbuffsize];
int fbuffpos = 0;
void setup ()
{
serial.begin (115200);
//clear buffers
memset(fbuff, '0', sizeof(fbuff));
memset(buff, '0', sizeof(buff));
}
void loop()
{
while (serial.available() > 0) {
buffchar = serial.read();
if (buffchar == '+') {
//copy last 4 characters codecheck variable
memcpy(codecheck, buff + (buffpos-3), 4);
//check see if codecheck compares codeframe variable (is end of frame code?)
if (!memcmp(codecheck, codeframe, 3)) {
//clear section of framebuffer want use , write it
memset(fbuff+((fbuffpos%fbuffsize)*(num_leds*3)), '0', (num_leds*3));
memcpy(fbuff+((fbuffpos%fbuffsize)*(num_leds*3)), buff, (num_leds*3));
//clear serial buffer
memset(buff, 0, sizeof(buff));
//move serial buffer start again
buffpos = 0;
//clear codecheck variable
memset(codecheck, 0, sizeof(codecheck));
//move framebuffer position next slot
fbuffpos++;
serial.println(fbuffpos);
serial.println(fbuff);
} else {
//if turns out wasn't end frame code write buffer
buff[buffpos] = buffchar;
buffpos++;
serial.println(buffchar);
serial.println(" addded buffer");
}
} else {
//write character buffer
buff[buffpos] = buffchar;
buffpos++;
serial.println(buffchar);
serial.println(" addded buffer");
}
}
//update leds
fastled.show();
}
(...)
so code works degree -- gets bit of miss.
(...)
what mean this? have example?
Arduino Forum > Using Arduino > Programming Questions > Arrays and framebuffers
arduino
Comments
Post a Comment