Paso 2: El código
El código utiliza las siguientes librerías:
- Wire.h - para comunicarse con el reloj DS1307
- LiquidCrystal.h - para mostrar la hora en la pantalla y el menú
- Math.h - esta biblioteca es aquí sólo porque quería ver o mostrar cómo puede utilizar en lugar de poco movimiento, pero se puede quitar fácilmente y fueron de los pocos lugares que se utiliza puede ser reemplaza con bitshifting
- EEPROM.h - esto se utiliza para almacenar los valores en la eeprom
El código es muy largo, pero se tarda aproximadamente la mitad del espacio disponible en Arduino, por lo que hay todavía espacio para mejoras.
Todo el código está en el adjunto así que sólo pondré algunas partes de él para explicar algunas cosas ya que el lenguaje utilizado en los comentarios es rumano no inglés (bueno, qué puedo decir... Escribo lo que hablo :)):
En la parte de definir el programa tenemos:
#define DS1307_I2C_ADDRESS 0x68 //this es la dirección de i2c del chip DS1307
#define PIN_STG 8 //the arduino pin utilizado para el botón izquierdo en el menú
#define PIN_MENU 2 //the arduino pin utilizado para el botón de menú
#define PIN_DR 10 //the arduino pin utilizado para el botón derechos del menú
#define PIN_COMMAND_A A1 //relay A
#define PIN_COMMAND_B A2 //relay B
#define PIN_COMMAND_C A3 //relay C
#define PIN_COMMAND_D A0 //relay D
#define PIN_COMMAND_E 7 //relay E
#define PIN_COMMAND_F 9 //relay F
#define PIN_COMMAND_G 13 //relay G
#define DESCHIS baja //Deschis significa abierto de modo que los relés se abrirá normalmente
#define //Inchis INCHIS alto medio cerrado de modo que cuando se enciende una alarma, los relés se cerrará
Yo diría que el resto del código es sencillo. Contiene algún código de galimatías que hace que el microcontrolador feliz y no tiene espacio para que puedo mover en el menú o leer la configuración etc.), pero el resto es sólo código de Arduino.