тфу блин это ваше работает не работает, там же сдвиговые регистры. как же лень в их коде копаться.
в общем подключаете все нужные модули, настраиваете в коде на 2-3 модуля, выводите что-нибудь в последнем и смотрите. выведенное должно повторятся на куче модулей.
время. частота spi задаётся делителем относительно частоты мк. в данном случае у вас SPI.setClockDivider(SPI_CLOCK_DIV128), т.е. 125кгц. можно прикинуть какая минимальная частота нужно и выставить. можно сразу выставить побольше, глюки вывода будут только при слишком низкой.
отрисовка выплёвывание данных происходит в ф-и ScanDMD (вызывает dmd.scanDisplayBySPI). вызывается постоянно в таймере. менять частоту вызова, думайте сами.
память. у 328й меги 2кб озу. матрица 32*16, т.е. 512 бит, т.е. 64 байта. 18 матриц это 1152 байта, 30 матриц уже 1920 байт. +остальная часть программы и прочего память на что-то использует.
получается куча вариантов. можно просто взять плату, у которой будет мк с большем ко-вом памяти. можно всякие ухищрения. вогнать в буфер данные, отрисовывать первую часть, вогнать в буфер данные для второй части и выплюнуть. можно внешнюю флеш подкинуть и просто гнать поток данных. можно подключить внешнюю флеш или фрам и использовать как внешний буфер. и т.д. сами подумайте, что вы там отрисовываете и как, знаете только вы.