Paso 3: Diseño de Software
El hecho de que hay ocho ánodos en el SSD y ocho bits en un byte era demasiado obvio para ignorar, por lo que todo el diseño es informado por esta asociación. Usando una interrupción fue requerida para permitir que el Arduino hacer algo más entre actualizaciones SSD. Esto significa que todas las decisiones de seleccionar pin ocurren en función interrumpir la rutina de servicio de temporizador. ISRs deben ser lo más eficiente posible a fin de tener una cantidad mínima de tiempo para ejecutar. Si el tiempo de ejecución ISR no es substancialmente más corto que el período de tiempo, pocos avances se harán ejecutar las sentencias en la función loop(). Podrás ver comentarios de la función ISR sobre evitar desperdiciadores de tiempo salta (por ejemplo, declaraciones de "if") siempre que sea posible. Darse cuenta de que sólo un SSD es atendida durante cada interrupción y está activo desde finales de la ISR hasta la próxima señal de temporizador.
Parte del diseño de hardware se hizo con la programación de la mente. Por ejemplo, no es necesario de hardware para elegir una línea select a favor de otro para conectar al cátodo común de un SSD particular. Sin embargo, es una simplificación que las primeras cuatro líneas seleccionadas, los cátodos comunes de SSD y los tres primeros segmentos tienen relaciones interdependientes posicionalmente.
El ISR resultante es pequeño y bastante rápido sin tener que recurrir al uso de los registros del puerto. La programación habría sido mucho más complicado e ineficiente si era necesario para dar cabida a un diseño de cableado arbitraria. Así que al pensar en sus proyectos, prestar atención a la simbiosis entre el hardware y software y buscar compensaciones adecuadas.
Charlieplexing es una gran técnica en su bolsa de trucos.