adafruit / Adafruit_CircuitPython_NeoTrellis

CircuitPython library for the Adafruit RGB Trellis
MIT License
8 stars 14 forks source link

Improve performance with (optional, disabled by default) manual sync #22

Closed meh2481 closed 1 year ago

meh2481 commented 1 year ago

Digging through the Arduino side of things, I found there's a manual sync step after any pixel change, whereas the CircuitPython libraries will by default auto-sync any time a pixel is changed. This is ideal from a user standpoint, but if you update more than one pixel at a time it slows down significantly, as there's an I2C transmit every time you update a single neopixel. For anyone who wants to update multiple pixels at a time, I've added a way to do a single manual sync after a lot of pixels are changed. Based on my tests, this really improves performance if making animations across e.g. a 2x2 multitrellis.

Of course, I've left the default behavior as-is for backwards compatibility.