Si desea obtener dieciséis niveles de brillo lineal, y si su frecuencia de PWM es lo suficientemente alta o no necesita cambiar los niveles de brillo de las luces con demasiada frecuencia, solo puede enviar cuatro actualizaciones por fotograma. El truco es enviar un cuadro de datos que se enviará a 8/15 de un "intervalo PWM", un cuadro que se emitirá a 4/15, un cuadro que se emitirá a 2/15 y otro que se emitirá salida para 1/15.
Si sería difícil enviar dos cuadros de datos separados por solo 1/15 de un intervalo PWM, se podría usar la señal de control de habilitación de salida para acortar el tiempo que se envía el cuadro 'corto'. En una versión algo extrema de tal escenario, uno podría enviar una trama para 8/32 de un intervalo PWM con la salida habilitada todo el tiempo, una trama forma 8/32 de un intervalo PWM con la salida habilitada para la mitad de eso (es decir, 4/32 de todo el intervalo), una trama para 8/32 con la salida habilitada durante un trimestre (2/32) y una para 8/32 con la salida habilitada para un octavo (1/32). Esto significaría que incluso con el brillo máximo, la salida solo estaría en aproximadamente la mitad del tiempo, pero la tasa de desplazamiento de la salida sería uniforme. Probablemente, uno no querría llevar las cosas tan lejos en la dirección de una tasa de cuadros uniforme, pero podría formular fácilmente otros patrones que cambiarían la tasa de desplazamiento máxima para el ciclo de trabajo máximo.
Otra alternativa sería usar cuatro conjuntos de 74HC595, y hacer arreglos para que alguna lógica haga salir uno de ellos la mitad del tiempo, uno de ellos una cuarta parte del tiempo (mientras que el primero estaba inactivo), uno de salida un octavo de la época (mientras que las dos primeras estaban inactivas), y una decimosexta (mientras que las tres anteriores estaban inactivas).
En cualquiera de estos métodos, es importante tener en cuenta que actualizar la configuración de brillo de un LED puede ocasionar que sea momentáneamente un poco más brillante o más tenue de lo que debería, especialmente entre configuraciones consecutivas en las que muchos bits cambian (por ejemplo, de 7 a 7). -0111 a 8--1000). Este efecto se puede minimizar dividiendo el intervalo de tiempo asociado con los bits más significativos en múltiples partes más pequeñas, pero dicha división se puede realizar más fácilmente en hardware que en software. Sin embargo, si uno no puede permitirse una solución de "hardware puro", puede utilizar una solución híbrida (por ejemplo, dos 595 por bit; uno se carga una vez por 'marco' con el MSB del brillo, mientras que el otro obtiene Cargado varias veces por cuadro, con los otros bits). El uso de dos 595 reduciría a la mitad la velocidad de actualización de datos requerida; el uso de tres 595 reduciría la tasa de actualización en un factor de cuatro. El uso de cuatro 595 para 16 niveles de brillo reduciría la tasa de actualización requerida a cero (ya que el hardware podría mantener el "pwm" automáticamente).