Neo pixel Commands
Posted: Tue May 10, 2016 7:13 am
The neo() command works well, but if you want to update a series of neopixels you can see it happening which can be annoying. This happens as each time you use neo() is updates all the pixels, for if you want to update 20 pixels, it will update 20 times which is quite slow.
I have added a neoq () command to Eval file. Its exactly like the neo command but doesnt update the pixel.
then when I use the neo() command next all the pixels are updated.
This is about 200% or more faster when updating a lot of pixels and appears to be instantaneous.
I dont know if neoq() is a good name for a command however, maybe neoset() ?.
Also would be nice to have a neoshift() command that will shift all the neopixels that amount.
ie neoshift(-1) would move them all down 1. This would allow much faster rolling animations, which at present are not really possible.
neoshift(1) would move them up 1. neoshift(5) would move them up 5. etc.
Thanks for considering this. Im not a good enough programmer to try adding this to Github etc,
Hamish
----------my code- all I did was add a command name and comment out pixels->show()
else if ( fname == F("neoq") && num_args > 0 ) {
// function neo(led no, r, g, b)
if (pixels == NULL)
{
pixels = new Adafruit_NeoPixel(512, 15, NEO_GRB + NEO_KHZ800);
pixels->begin();
}
pixels->setPixelColor(args[0], pixels->Color(args[1], args[2], args[3]));
//pixels->show();
return PARSER_STRING;
}
I have added a neoq () command to Eval file. Its exactly like the neo command but doesnt update the pixel.
then when I use the neo() command next all the pixels are updated.
This is about 200% or more faster when updating a lot of pixels and appears to be instantaneous.
I dont know if neoq() is a good name for a command however, maybe neoset() ?.
Also would be nice to have a neoshift() command that will shift all the neopixels that amount.
ie neoshift(-1) would move them all down 1. This would allow much faster rolling animations, which at present are not really possible.
neoshift(1) would move them up 1. neoshift(5) would move them up 5. etc.
Thanks for considering this. Im not a good enough programmer to try adding this to Github etc,
Hamish
----------my code- all I did was add a command name and comment out pixels->show()
else if ( fname == F("neoq") && num_args > 0 ) {
// function neo(led no, r, g, b)
if (pixels == NULL)
{
pixels = new Adafruit_NeoPixel(512, 15, NEO_GRB + NEO_KHZ800);
pixels->begin();
}
pixels->setPixelColor(args[0], pixels->Color(args[1], args[2], args[3]));
//pixels->show();
return PARSER_STRING;
}