Conexión del módulo al arduino uno
Tomado de: http://www.geekfactory.mx/wp-content/uploads/2015/03/arduino_tinyrtc_diagrama_conexion.png
Imagen propia
Luego de conectar el módulo al arduinio, procedemos con el siguiente sketch para programar la fecha y hora de acuerdo al pc donde hemos conectado nuestro arduino, siguiendo el siguiente programa, descarga primero la libreria RTClib.h, (ver cómo agregarla):
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
void setup () {
Wire.begin(); // Inicia el puerto I2C
RTC.begin(); // Inicia la comunicación con el RTC
RTC.adjust(DateTime(__DATE__, __TIME__));
// Establece la fecha y hora (Comentar una vez establecida la hora)
Serial.begin(9600); // Establece la velocidad de datos del puerto serie
}
void loop ()
{
}
Una vez subido este programa, ya se debe haber configurado el ds1307 con la fecha y hora, para poderla conocer en el monitor serial, cargamos el siguiente programa:
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
void
setup () {
Wire.begin();
// Inicia el puerto I2C
RTC.begin();
// Inicia la comunicación con el RTC
//RTC.adjust(DateTime(__DATE__, __TIME__)); // Establece la fecha y hora (Comentar una vez establecida la hora)
Serial.begin(9600);
// Establece la velocidad de datos del puerto serie
}
void
loop(){
DateTime now = RTC.now();
// Obtiene la fecha y hora del RTC
Serial.print(now.year(), DEC);
// Año
Serial.print(
'/'
);
Serial.print(now.month(), DEC);
// Mes
Serial.print(
'/'
);
Serial.print(now.day(), DEC);
// Dia
Serial.print(
' '
);
Serial.print(now.hour(), DEC);
// Horas
Serial.print(
':'
);
Serial.print(now.minute(), DEC);
// Minutos
Serial.print(
':'
);
Serial.print(now.second(), DEC);
// Segundos
Serial.println();
delay(1000);
// La información se actualiza cada 1 seg.
}
tomado de: http://www.tuelectronica.es/tutoriales/arduino/reloj-rtc-i2c-con-arduino.html
Aquí algunos tips con alarmas que pueden servir en nuestro proyecto:
Un vistazo a lo que llevo del código del temporizador, con el cual esperamos encender
un reflector led de 10W de las 6:00 a las 20:00 horas, al igual que un aireador cuatro veces al día.
un reflector led de 10W de las 6:00 a las 20:00 horas, al igual que un aireador cuatro veces al día.
Aún no está completo el código, pero ya funciona con el modulo ds1307 con los horarios establecidos,
falta aún el sensor DTH11 y el módulo bluetooth HC06, pero con este código ya se puede
empezar a experimentar con las lechugas en la maqueta construida.
falta aún el sensor DTH11 y el módulo bluetooth HC06, pero con este código ya se puede
empezar a experimentar con las lechugas en la maqueta construida.
#include <Wire.h> #include "RTClib.h" RTC_DS1307 RTC; int hora=0; int minutos=0; int segundos=0; int luz=13; int aire=12; void setup () { //Inicializamos el puerto serie, wire y el modulo RTC Serial.begin(9600); Wire.begin(); RTC.begin(); //Si quitamos el comentario de la linea siguiente, se ajusta la hora y la fecha con la del ordenador //RTC.adjust(DateTime(__DATE__, __TIME__)); pinMode(luz,OUTPUT); pinMode(aire,OUTPUT); } void loop () { // Se llama a la función fecha() para imprimir la fecha en el monitor serie ----- fecha(); //------------------------------------------- //lee el tiempo del modulo ds1307, previamente se ha configurado con la hora. DateTime now = RTC.now(); hora=(now.hour(),DEC); minutos=(now.minute(),DEC); segundos=(now.second(),DEC); // tanto el temporizador de luz como aire se puede incluir en un if mayor // para dar la opción de manual o automático y poder mostrar desde el celular // como se puede accionar con la app. //-------------------------- TEMPORIZADOR DIGITAL PARA ENCENDER LA ILUMINACION ------------------------ // el foto periodo inicia a las 6am y termina a las 20:00 horas o 8pm. // 14 horas de luz, con un periodo de 10 sin la misma. // hay que buscar la manera de modificar esto desde android, pero que quede grabado en rom. if (now.hour()>= 6 && now.hour()<20) { digitalWrite(luz,HIGH); Serial.println("led on"); } else { digitalWrite(luz,LOW); Serial.println("led off"); } //--------------------TEMPORIZADOR PARA ENCENDER Y APAGAR EL AIREADOR ----------------------------------- // Este se encenderá 4 veces al día, de las 1:00 a las 3:00; 2 horas // de las 9:00 a las 11:00 2 horas // de las 13:00 a las 14:00 1 hora // de las 18:00 a las 20:00 2 horas total 7 horas, potencia del aireador 5W if (now.hour()>= 1 && now.hour()<3) { digitalWrite(aire,HIGH); Serial.println("aireador on"); } else if (now.hour()>= 9 && now.hour()<11) { digitalWrite(aire,HIGH); Serial.println("aireador on"); } else if (now.hour()>= 13 && now.hour()<14) { digitalWrite(aire,HIGH); Serial.println("aireador on"); } else if (now.hour()>= 18 && now.hour()<20) { digitalWrite(aire,HIGH); Serial.println("aireador on"); } else { digitalWrite(aire,LOW); Serial.println("aireador off"); } delay(1000); }//cierre del void loop //-------------- función para leer la fecha del ds1307----- //-------------- también escribe en el monitor serie ------ void fecha(){ //lee el tiempo del modulo ds1307, previamente se ha configurado con la hora. DateTime now = RTC.now(); hora=(now.hour(),DEC); minutos=(now.minute(),DEC); segundos=(now.second(),DEC); //imprimimos por el monitor serial para ver la información en el pc //Imprimimos el dia Serial.print(now.day(), DEC); Serial.print('/'); //Imprimimos el mes Serial.print(now.month(), DEC); Serial.print('/'); //Imprimimos el año Serial.print(now.year(), DEC); Serial.print(' '); //Imprimimos la hora Serial.print(now.hour(), DEC); Serial.print(':'); //Imprimimos los minutos Serial.print(now.minute(), DEC); Serial.print(':'); //Imprimimos los segundos Serial.print(now.second(), DEC); Serial.println(); } //---------------- FIN FUNCION FECHA-------------------------------------------
No hay comentarios:
Publicar un comentario