Paso 2: Software, parte 1
El software consta de dos anidados bucles, uno para llevar a cabo el real encendido y apagado (PWM) y al pasar por los mayores niveles de brillo. Escribí un lazo para hacer el PWM a mano porque PWM incorporado de Arduino sólo tiene 255 niveles disponibles de brillo, que significó que las luces saltaría en brillo cuando enciende por primera. Escribí un simple bucle PWM con 1000 niveles de brillo, que hace más suave.El código de inicialización declara dos constantes: pasos y sunrisespeed. pasos representa el número de diferentes niveles de luz a utilizar el controlador. Usa 64 como una elección arbitraria, y porque hace las matemáticas más fácil. Sunrisespeed determina cuánto tiempo el programa va a gastar en cada nivel de luz, específicamente, cuántos pulsos generará para un ancho de pulso determinado. Cada pulso de encendido y apagado en el PWM es 5 milisegundos, por lo que un sunrisespeed de 200 producirá 1 segundo (200 pulsos de 5 ms) de cada nivel de luz. Con 64 pasos esto significa el amanecer todo proceso tomaría aproximadamente un minuto, así que para hacer la salida del Sol duran más realista media hora le ponemos sunrisespeed a 200 * 30 = 6000.
búsqueda de int [64] es una matriz, una lista de números que se pueden acceder individualmente dando una posición en la lista. Algo que escribir un programa con las matemáticas necesarias para calcular una creciente lista de números que se cuenta para la respuesta no lineal del ojo humano, era más fácil elaborar la lista y guardarla en el programa. Se trata de una técnica de programación conocida como una tabla de búsqueda, utilizada a menudo cuando un programa quiere acceso a una lista de números que tardan mucho tiempo para calcular pero no pueden cambiar.
deber, me y j son variables que el programa de generación de los pulsos.