I am experimenting with IO Expander board and Text Scrolling Marquee pattern.
First set has just a PB configured to run 512 LEDs in 8x64 Matrix configuration
(two 8x32 LED Matrix serially connected).
Second set has a PB + IO Expander. Overall configuration is the same except
each 8x32 LED Matrix is connected to two channels on IO Expander.
Both sets are running exactly the same pattern code and using exactly the
same Mapper code. Visually everything is identical and running just fine.
The reason for this experiment is to see what performance (FPS) improvement
could be achieved by using IO Expander.
All timing measurements where done on a physical LED Data Line with
The nature of this pattern is to refresh entire Render Buffer on every rendering
cycle in the beforeRender function.
Timing for the PB only configuration is 29mS per frame (15.6mS for sending serial
data to the LEDs plus 13.4mS for the processing data in between frames).
Timing for the PB + IO Expander configuration is 17.6mS per frame (7.8mS for
sending serial data to the LEDs (it is twice faster because all channels on the
IO Expander board are running synchronously in parallel) plus 9.8mS for data
processing in between frames (this is a bit faster most likely because serial driver
for the IO Expander is more efficient vs. serial driver for the LEDs)).
So, the performance (FPS) is only 1.65 times better with the IO Expander vs. PB itself.
Physical serial link between PB and IO Expander runs at 2mhZ vs 0.8mhZ for the
WS2812b LEDs ( I am lazy to calculate what is logical speed difference).
Taking this in account the performance increase could be about 2 times for the
But I am reading a lot of posts where people achieved amazing performance
increase by adding IO Expander.
My question is - What significant detail(s) I am missing?
Just link to the detailed explanation how to program PB + IO Expander for
achieving maximum performance will be OK.