pixelmatix/SmartMatrix — pull request #17 by mrwastl (2014-11-15 00:56:41+00:00)
Title: SmartMatrix on > 1 displays

Ported GaryBoone's multi-panel patches to a current version of SmartMatrix (~ 2.1.0/master).

I'm driving a 96x64 display (six 32x32 panels), playback of streamed video output is rather smoothly and there's hardly any flickering - Pixelmatix seems to have optimised SmartMatrix a lot (compared to 1.x) !

My setup:
* Teensy 3.1: cpu speed set to 144 MHz (documentation: see README.md)
* Added a simple protocol to my library (serdisplib) which sends display content to a 'counterpart' library developed for arduino/teensy.
* A teensy program connects this library to my fork of SmartMatrix
* Communication is done using the Serial object (thus via standard full speed USB (12 mbit/s))
* Movie-content is generated using an old mplayer-hack that I've done some years ago which can use my library.
* Refresh rate is set to 80 (lower refresh rate would give even smoother video output but increased flickering. 80 seems to be a good compromise)
* Double buffering is used (swapBuffers(true)). Still the result is fast enough.
* I didn't use a naming scheme like 32x23.h for MatrixHardware_KitV1_32x32.h but I've used _generic.h instead (simpler when fooling around). I also pre-calculate some values like MATRIX_HEIGHT/WIDTH and even MATRIX_REFRESH_RATE (if not set by a user).

Limitations / annotations:
* I only need pixel-drawing operations, thus I haven't tested any printing / line-drawing functions
* The additions to serdisplib and the glue library for arduino/teensy which implement the protocol that is used for communication between my library and a teensy/arduino are not public yet (there's still a lot to be done)