-
Notifications
You must be signed in to change notification settings - Fork 0
Technical Advices
INFO : 288 pixels is an upper limit : big assembly, just a few bitmap in the 3Mb flash and Neopixels are too slow for 288 pixels.
Bigger is better, but not always :
-
Size : More pixels means a longer assembly and an assembly too long is painful to transport and to use. I use a 2m assembly and i find it already too big...
-
Power : More pixels means more amps and more amps means a big battery. With my 120 pixels assembly and an USB power bank, it will shut down if i power all the led at full brightness...
-
Weight : Not the weight of the assembly, but the weight of the bitmap that grows pixels square. So with too many pixels, the storage (3Mb) and the processing power of the ESP8266 will suffer...
In my opinion, the best assembly measure 1 m to 2 m. So with 144 pixels/m, it will be between 144 pixels and 288 pixels with an ideal of 200 pixels (1.4 m long).
INFO : I call delay the time in ms between the render of two consecutive line of the bitmap.
The "ideal delay" only depend on the density of your LED strip (30, 60 or 144 pixels per meter) and your speed. You can have a 3 m long assembly or a 1 m long, it's the same "ideal delay" as long as the LED strip have the same density and you keep the same speed.
I will consider a standard walking speed at 4 km/h = 1.11... m/s.
-
30 pixels/m : You need to anime (30 pixels/m) * (1.11... m/s) = 33.33... pixels/s. So the "ideal delay" would be (1000 ms) / (33.33... pixels/s) = 30 ms/pixel
-
60 pixels/m : You need to anime (60 pixels/m) * (1.11... m/s) = 66.66... pixels/s. So the "ideal delay" would be (1000 ms) / (66.66... pixels/s) = 15 ms/pixel
-
144 pixels/m : You need to anime (144 pixels/m) * (1.11... m/s) = 129.6 pixels/s. So the "ideal delay" would be (1000 ms) / (129.6 pixels/s)= 7.7 ms/pixel
Those "ideal delay" are good starting value to find your own "ideal delay".
INFO : I call performance fastest time in ms the bitmap can be render and precision the strict timing between the render of two consecutive line of the bitmap.
I try my best to keep the best performance and precision while adding lot of feature for a small ESP8266. The library NeoPixelBus was a game changer with good performance and an inbuilt animator for precision.
I have run some test for a bitmap of 200 x 356 pixels at full speed on an ESP8266 at 160Mhz :
- Dotstarts(APA102) :
Horizontal Cut Off | Horizontal Cut Off | No Horizontal cut | |
---|---|---|---|
Vertical Cut Off | 464 ms | 466 ms | 460 ms |
Vertical Cut Color | 465 ms | 467 ms | 459 ms |
No Vertical cut | 586 ms | 588 ms | 578 ms |
(588 ms) / (356 pixels) = 1.65... ms/pixel.
Conclusion : ImagePainting is fast and precise even with 144 pixels/m that require an "ideal delay" of 7 ms/pixel. 200 pixels is easily handle with Dotstarts.
- Neopixels(WS2812) :
Horizontal Cut Off | Horizontal Cut Off | No Horizontal cut | |
---|---|---|---|
Vertical Cut Off | 2375 ms | 2375 ms | 2376 ms |
Vertical Cut Color | 2375 ms | 2375 ms | 2376 ms |
No Vertical cut | 2376 ms | 2376 ms | 2376 ms |
(2376 ms) / (356 pixels) = 6,67 ms/pixel.
Conclusion : ImagePainting is just fast enough with 144 pixels/m that require an "ideal delay" of 7 ms/pixel and the precision may suffer. 200 pixels is the upper limit with Neopixels.