Jeje, lo de utilizar motores como contrapeso es un derroche de recursos

Te cuento un par de cosas raras que he visto en tu código.
En primer lugar,
respecto al scroll del texto, haces lo siguiente:
- recorres el string desde
tamanhoMax-1 hasta
0 descendende.
- en cada iteración sustituyes el caracter actual por el anterior
- cuando llegas a
0, sustituyes el caracter actual por el que esté en la posición
tamanhoMax-1Ahí veo un problema, puesto que en la posición
tamanhoMax-1 ya habías hecho la sustitución en la primera iteración del bucle por lo que no estarás depositando el caracter que esperas, sino el anterior.
Posibles soluciones:
- utilizar una variable temporal para almacenar el valor de
tamanhoMax-1- ampliar el string y el bucle hasta
tamanhoMax. En la última iteración te encontrarás en esa posición el carácter que quieres poner en el
0En segundo lugar,
respecto a la sincronización del proceso:
¿para qué haces un delay_us(600) con los leds apagados?. Creo que ahí está la clave de que los leds brillen poco. Yo de ti los dejaría encendidos siempre. La consecuencia inmediata será que los pixeles serán más anchos, pero también mucho más brillantes. Es probable que por eso la cámara no te lo grabe bien.
Otra cosa más: si una de cada 10 veces haces el scroll horizontal del texto, hazlo después de representar el texto. De lo contrario, el tiempo que el PIC pierde en procesar el scroll se lo estás robando a la impresión del texto, y puede que salga un poco movido.