//programa RIEGO EN CIERTAS HORAS – HORA DE RIEGO 1 -2 - 3 //Las 2 bombas de este ejemplo se activan por medio de 0(cero) en los pines 3 y 14 #include // Librería del reloj float TRIEGO; float M1RIEGO= 8; //Hora de riego 1 float M2RIEGO= 14; //Hora de riego 2 float M3RIEGO= 19; //Hora de riego 3 int DURARIEGO= 8000; // Dura DURARIEGO milisegundos el riego int TESTIGO= 0; //Variable testigo para establecer un riego a MxRIEGO // Un riego en cada hora elegida // Inicializacion del modulo. /* Conexion Modulo Reloj con Arduino * * GND = GND * CLK = 8 * DAT = 7 * RST = 6 */ //Configuración del reloj DS1302 rtc(6, 7, 8); // Fijamos los pines de conexión con el Arduino Time t; void setup() { for (int i=2; i<6; i++) // declara i y prueba si es menor //que 6, incrementa i. { pinMode(i, OUTPUT); // configura ‘pin’ como Salida digitalWrite(i, HIGH); //todos los fija en alto } pinMode(13, OUTPUT); // configura ‘pin’ como Salida digitalWrite(13, LOW); //fija en BAJO pinMode(14, OUTPUT); // configura ‘pin’ como Salida digitalWrite(14, HIGH); //fija en alto //Arranca bombas DURARIEGO milisegundos por unica vez al iniciar o resetear Arduino //Debemos recordar que los módulos reles tienen optoacoplador y se activan con 0 (cero) delay(500); // Demora de estabilización digitalWrite(14,LOW ); //Activa rele bomba 1 delay(300); digitalWrite(3,LOW); //Activa rele bomba 2 delay(DURARIEGO); //tiempo en el cual se esta regando digitalWrite(14,HIGH ); //Desactiva rele bomba 1 delay(300); digitalWrite(3,HIGH ); //Desactiva rele bomba 2 //fin inicio activo de bombas al resetear programa // Inicializacion del puerto serie. Serial.begin(9600); } void loop() { delay(5000); // Demora para no sobrecargar las comunicaciones con el modulo. //dos parpadeos LED 13 – Es una indicación visual para el usuario de que el programa esta corriendo digitalWrite(13,HIGH ); delay(300); digitalWrite(13,LOW); delay(300); digitalWrite(13,HIGH ); delay(300); digitalWrite(13,LOW); //fin parpadeo LED 13 // Obtencion de datos t = rtc.getTime(); // Publicar datos de fecha y hora en MONITOR SERIE // Se publicara el dia de la semana Serial.print("HOY:"); if (t.dow == 1) Serial.print("lunes"); // La variable t.dow (dia de la semana) tendra valor de 1 //para día lunes y 7 para domingo. if (t.dow == 2) Serial.print("martes"); if (t.dow == 3) Serial.print("miercoles"); if (t.dow == 4) Serial.print("jueves"); if (t.dow == 5) Serial.print("viernes"); if (t.dow == 6) Serial.print("sabado"); if (t.dow == 7) Serial.print("domingo"); Serial.println(); // Linea aparte // Se publicaran datos de fecha, en números. Serial.print("DIA:"); Serial.print(t.date, DEC); // Dia del mes Serial.println(); // Mes Serial.print("MES:"); Serial.print(t.mon); Serial.println(); // Año Serial.print("DE:"); Serial.print(t.year, DEC); Serial.println(); Serial.print("HORA:"); // Hora en formato 0-23. Serial.print(t.hour, DEC); Serial.print(", MIN:"); // Minutos. Serial.print(t.min, DEC); //************************************************** // Almacenamiento en variable de la HORA TRIEGO = t.hour, DEC;// carga el dato HORA de tiempo actual //El contenido de esta variable se utilizara para saber si se debe regar //************************************************** //SEGUNDOS Serial.print(", SEG:"); // Segundos. Serial.print(t.sec, DEC); Serial.println(); Serial.println(); Serial.println(); // Se termina de mostrar por MONITOR SERIE datos de fecha y hora //Se chequea si es momento de regar if (((TRIEGO == M1RIEGO) || (TRIEGO == M2RIEGO) || (TRIEGO == M3RIEGO))&& TESTIGO == 0) { digitalWrite(14,LOW ); delay(300); digitalWrite(3,LOW ); TESTIGO= 1; //Hace testigo igual a 1 para que solo se riegue una vez cuando TESTIGO=0 Serial.println("------------------------"); Serial.print("Regando a las= "); Serial.println(TRIEGO); Serial.println("------------------------"); delay(DURARIEGO);//Regando este tiempo digitalWrite(14,HIGH ); delay(300); digitalWrite(3,HIGH ); delay(1000);//Tiempo muerto } //Va a recuperar el valor de testigo para que se pueda regar en proximo momento if ((TRIEGO == M1RIEGO +1) || (TRIEGO == M2RIEGO +1) || (TRIEGO == M3RIEGO+1)) { TESTIGO= 0; //Restaura TESTIGO a 0 para que se pueda regar en proximo momento de riego } }