Paso 3: Algoritmo de regulación - la Cruz fade efecto y doble búfer
No es necesario tener LEDs individuales para ser controlado en los niveles de brillo distintos para hacer un fundido cruzado. Justo necesitaba el primer patrón con un brillo y el segundo con un brillo bajo. Entonces durante un breve periodo sería disminuir un poco el brillo de la primera y aumentar la segunda... esto sería seguir hasta el segundo modelo al completo. Entonces el reloj sería esperar hasta el siguiente patrón debía Mostrar y habría otra transición.
Por lo tanto necesitaba almacenar dos patrones. La muestra actualmente y el segundo modelo que estaba a punto de mostrarse. Estas son las matrices [] de nLedsA y nLedsB. (tenga en cuenta nada que ver con los puertos en este caso). Este es el búfer doble.
La función de update_display() fue modificada para recorrer ocho Marcos y mostrar un número de fotogramas de la primera matriz, luego el otro. Cambiar el número de marcos asignados a cada buffer a lo largo de los ocho ciclos definidos cómo brillante cada patrón sería. Cuando terminamos de ciclismo entre buffers nos cambiamos el 'display' y 'próximo display' neutraliza, por lo que el patrón de generación de función entonces escribiría sólo al buffer 'a continuación Mostrar'.
El siguiente diagrama muestra esta suerte. Usted debe ser capaz de ver que la transición tendrá 64 marcos de análisis. En la imagen, muestra en el recuadro pequeño el fram de exploración del diagrama de la página anterior ingeniosamente reducido.
Una palabra sobre la tasa de re-fresh. Todo esto debe hacerse muy rápidamente. Tenemos ahora dos niveles de cómputo extra, uno para la pantalla de ambiente dimmness y uno de los ciclos de ocho marco pasó haciendo una transición entre dos tampones. Así era este código debe ser escrito en Asamblea, pero es lo suficientemente bueno en 'C'.