Paso 3: Código fuente y IDE
El código fuente del proyecto se puede acceder desde mi repositorio en GitHub de electrónica. No dude en examinar el código, utilizar (sólo dar el crédito cuando es debido) y sugerir mejoras.
Utilizamos el cableado v.1.0.1-dev como IDE (Integrated Development Environment), que está actualmente disponible únicamente en Windows y Mac OS (: (echamos de menos la versión para GNU/Linux).
Para usar las bibliotecas de Arduino comunes como TMRpcm (para la reproducción de archivos WAV de tarjetas SD) en el cableado, es necesario modificar su código fuente, por ejemplo, mediante la inclusión de Wiring.h en lugar de Arduino.h. Puesto que resultó ser un poco de dolor, también compartimos toda la carpeta cableado, incluyendo bibliotecas configuradas para evitar tal proceso.
EEPROM
Para hacer hora y alarma configuración perdurable utilizamos la EEPROM (memoria eléctricamente borrable programable generador) (2 KB) proporcionada por el cableado S. El código se ha optimizado de tal manera que previene para escribir en la misma dirección EEPROM demasiadas veces (memoria EEPROM tiene una vida útil basado en el número de operaciones de lectura/escritura). Por ejemplo, al ajustar minutos, sólo escribimos el número final y los intermedios no. Utilizamos 11 direcciones EEPROM para almacenar 4 variables (habilitado, tipo, horas y minutos) para la alarma 1, 4 (habilitado, tipo, horas y minutos) para alarma 2 y 3 (habilitado, horas y minutos) para el modo de advertencia.
Cálculo de la fase de luna
Prestado la función para calcular la fase lunar de http://www.ben-daglish.net/moon.shtml y adaptarla a código C++. Es una función basada en un algoritmo de John Conway, que generalmente da la fase de luna correcta. No es exacto, pero el error es insignificante para nuestros propósitos.