Paso 4: El código
Este código es bastante muy modificado de lo que JonBush inicialmente publicado. Los principales cambios son:
- Eliminado el uso de la función delay(). En el código original se pasó el tiempo entre cada corte (cambio de iluminación) en un estado delay(). Esto provoca un problema de lectura de los sensores (ollas y botón) desde el Arduino no detecta los eventos o cambios hasta que caduque el delay(). No es un problema para las macetas, pero para el botón podría tener presionado durante 4 segundos antes de que lo tiene recogido. Este código dedica todo su tiempo tan rápidamente como posible buscando cambios de sensores o contadores de tiempo de colocación.
- Utiliza la función multiMAP() (del rob.tillaart para convertir la distribución lineal generada por la función random() en otra cosa. He probado varias distribuciones: Gaussian, lognormal y algunos apenas compone. Salí de allí en los comentarios. Al final, no estoy seguro alguno de ellos hizo mucha diferencia, lineal fue probablemente muy bien.
- Añadido un temporizador para acabar con el espectáculo de luz después de cierto tiempo. Controlado por una olla.
- Añadido un multiplicador de velocidad de corte, controlado por una olla.
- Añadido una interrupción del espectáculo de luces, controlada por pulsador.
- Ha añadido una función de reinicio suave después de 24 horas (86,400,000 ms). Esto hace que todos los contadores y el show de luces para reiniciar a la misma hora cada día.
- Había añadido un LED de actividad en el pin 13.
- Inicializa todos los varios parámetros del programa a valores razonables para que alguna o todas las ollas y el interruptor, pueden ser eliminados.
- La rutina softReset() fuerza un salto de programa para la dirección 0. Esto tiene el efecto de restablecer todos los contadores y reiniciar el código desde el principio. Es un truco para simular pulsando el botón de reset. No compilar para el Abalorio, pero funciona en la baratija Pro y Uno. No sé qué otros Arduinos podría o podría no funcionar en.
- Fade a negro. Esto que nunca consiguió alrededor a la aplicación. No.
También comenté el código bastante completo, así que lea a través de él si usted tiene preguntas.