I'm not trying to rain on your parade here, as what you have shown demonstrates the willingness to understand, divide and conquer, until the working project emerged. I know you are proud of what you have done, and so you should be. If what you have is working to your satisfaction, then go with it.
My only reason to suggest an alternative, was as I noticed, several interval timers and several timeout periods were being used along with multiple Neopixel writes. The 'flicker' or 'noise' as you put it, could occur, when those intervals or timeouts overlap while attempting to update the output within the Graphics buffer.
I had recently been playing with lengthy Neopixel strips, but using a FlatString and linear array to format the data, but with the requirement of only one Neopixel.write() statement. I haven't noticed any 'noise' even with timings around 20-50msec, which I believe is still faster than those in your project. For the clock, it is quite possible that the data is becoming corrupt, an overlapping non cleared array for instance, and that might explain the flicker.
As I believe the matrix panels you have are just a zig-zag connected continuous strip of Neopixels, (correct me if I'm wrong here) it would be possible to create a 'blank' array outside of the Graphics buffer that could be used in place of gt.buffer to 'clear' the panel before the actual desired data to write there. At a minimum, this would/might prove if the data within the Graphics buffer is not stable, which is resulting in the 'noise.'
Just a thought, but if you are satisfied, go with what is there now. You have completed quite an impressive project indeed.
© Espruino, powered by microcosm.
Report a problem