Paso 3: Software, parte 2
Esta es la parte del programa que produce los pulsos. El bucle interno produce una serie de pulsos a una determinada intensidad. Se enciende el LED por un número de microsegundos que determina la luminosidad actual nivel, entonces apaga el resto de 5 milisegundos. Esto significa que el programa genera una señal de frecuencia constante, que hace que la sincronización sea más sencillo. El número de pulsos es determinado por sunrisespeed, que a su vez determina cómo rápidamente la lámpara ilumina.
Los pasos de bucle externo a través de la matriz de valores de brillo, lectura en orden y produciendo una serie de pulsos de brillo especificado. En este caso, se multiplica el valor de la tabla de búsqueda por 5, porque calculan inicialmente los valores al rango de 0-1000, pero el Arduino no es preciso en intervalos de tiempo menos de 5 microsegundos. He utilizado 5 milisegundos como la frecuencia del pulso como un compromiso-tratando de pulso más rápido que esto reduce el número de valores de brillo posible debido a limitaciones de tiempo de Arduino, pero pulsos mucho más largos que 5 ms comienzan a ser visibles para el ojo humano como parpadeo.
Una vez que llega el bucle final sólo vuelve en el ajuste de brillo más bajo - ideal en este punto le sería despierto, por lo que puede establecer el temporizador para apagar el Arduino después del tiempo de un ciclo completo (en mi caso unos 25 minutos).