Paso 7: El código es el pegamento
Usé el último Arduino IDE 1.0 que tengo que decir que ha sido genial sobre todo como puede ahora programa usando el programador ISP y no tiene que preocuparse de USB dongles o circuitos. Una cosa que yo diría que necesita quemar el cargador de arranque en el chip ATmega328 en blanco otro modo depuración se convierte en un poco de un desafío como el entorno de Arduino no ha sido configurado correctamente!!!!!!
El código que he recopilado es 8.346 bytes en tamaño para que puedas usar el chip ATmega168 si tienes unas cuantas patadas.
Bibliotecas:
Arduino.h - la biblioteca estándar y de gran
DS1302.h - biblioteca de reloj de tiempo Real
LCD4Bit_mod.h - biblioteca suministrado para apoyar el LCD o el teclado - muy similar a la biblioteca estándar de
OneWire.h - proporciona la comunicación a la sonda de temperatura
Asignación de PIN y Variables globales:
Esto es donde usted necesita establecer su propia puesta de sol y amanecer dependiendo de su ubicación. Tenemos ahorros de verano en el Reino Unido, pero decidí mantener mi sistema de GMT que significa cuando miro el reloj en el verano, período de tiempo es una hora detrás de los tiempos de puesta de sol y amanecer a necesitar fijar por consiguiente ahorro.
Setup()
- Establece las conexiones para el motor
- Establece la luz de fondo de pantalla que esté apagado en el reinicio.
- El MotorState actual se establece en parada
- La línea superior de la pantalla es inicializada con los títulos de estado.
- En este momento comprobamos la temperatura para inicializar la configuración max min/min y mostrarla.
En el código te darás un comentado hacia fuera de la rutina 'set_time()' para fijar el RTC. Este debe ser no comentada para el primer tiempo de programación por lo que el reloj se puede ajustar. Comentar que y retome el ATmega328 otra vez de esta forma si se restablece la Junta o más se realizan cambios en el código de la RTC siempre tiene la hora correcta.
Necesita experimentar sobre la configuración de la RTC en sincronización con la hora del ordenador portátil. Descubrí en un entorno de Mac necesita 40 segundos para compilar y cargar para asegurarse de que los tiempos donde exactamente sincronizado.
Loop()
- Imprimir la hora actual
- Pausa de 0,5 segundos para que la pantalla se puede leer.
- Imprimir la hora de dormir en total minutos con el ' ^' símbolo delante de ella.
- Imprimir la temperatura mínima con el símbolo 'v' delante de él.
- Pausa de 0,5 segundos para que la pantalla se puede leer.
- Imprimir la hora para despertar que está en total minutos con el símbolo 'v' delante de él.
- Imprimir la temperatura máxima con la ' ^' símbolo delante de ella.
- Pausa de 0,5 segundos para que la pantalla se puede leer.
- Imprimir la hora actual
- Marque el botón de activación de puerta (pantalla on/off, cerrar puerta o abrir la puerta manualmente)
- Cambiar el estado del Motor de acuerdo con botón de activación
- Verifique para ver si es tiempo de Estela si así establece estado de Motor a DoorUp
- Verifique para ver si es tiempo de cama si así establece estado de Motor a DoorDown
- Mientras que el Motor de estado no es 'Stop' llamada door_change o cierre la puerta o abrirla y mostrar la situación en pantalla
Yo sugeriría usted familiarizarse usted mismo con el código y que se puede entenderlo suficiente para hacer tus propias modificaciones, es decir, sin sonda de temperatura pero un LDR en su lugar.
Como se puede ver en el código he creado una variable de estado motor que garantiza acciones finalicen antes de que el código del bucle principal va detrás en sí mismo.