Para poder completar el proyecto, teníamos que encargarnos de programar la placa base que consistiría en un programa creado con Arduino donde se estrucyuraría las diferentes partes y condiciones con las que el programa debía funcionar. Después de algunas semanas, mis compañeros acabaron la codificación quedando de esta manera:
int humedad1PIN = A0;
int humedad2PIN = A1;
int valvulaRiegoPIN = 11;
int valvulaRiegoPIN1 = 12;
int sensorhumedad1 = 0;
int sensorhumedad2 = 0;
int nivelagua = 0;
int caso = 0;
#include <Wire.h>
#include "RTClib.h"
// RTC_DS1307 rtc;
RTC_DS3231 rtc;
String daysOfTheWeek[7] = { "Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado" };
String monthsNames[12] = { "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre" };
void setup() {
Serial.begin(9600);
if (!rtc.begin()) {
Serial.println(F("Couldn't find RTC"));
while (1);
}
// Si se ha perdido la corriente, fijar fecha y hora
if (rtc.lostPower()) {
// Fijar a fecha y hora de compilacion
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// Fijar a fecha y hora específica. En el ejemplo, 21 de Enero de 2016 a las 03:00:00
// rtc.adjust(DateTime(2016, 1, 21, 3, 0, 0));
}
// put your setup code here, to run once:
pinMode(humedad1PIN, INPUT);
pinMode(humedad2PIN, INPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(8, INPUT);
pinMode(9, INPUT);
pinMode(10, INPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
}
void printDate(DateTime date)
{
Serial.print(date.year(), DEC);
Serial.print('/');
Serial.print(date.month(), DEC);
Serial.print('/');
Serial.print(date.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[date.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(date.hour(), DEC);
Serial.print(':');
Serial.print(date.minute(), DEC);
Serial.print(':');
Serial.print(date.second(), DEC);
Serial.println();
}
void loop() {
//SENSOR HUMEDAD
sensorhumedad2 = analogRead(humedad2PIN);
sensorhumedad1 = analogRead(humedad1PIN);
if(sensorhumedad2 < 1000 and sensorhumedad1 < 1000){
if(sensorhumedad2 > 700 or sensorhumedad1 > 700){
digitalWrite(valvulaRiegoPIN, LOW);
digitalWrite(valvulaRiegoPIN1, LOW);
delay(10000);
digitalWrite(valvulaRiegoPIN, HIGH);
digitalWrite(valvulaRiegoPIN1, HIGH);
delay(60000);
}
}
//SENSOR NIVEL
if (digitalRead(8)==0 and digitalRead(9)==1 and digitalRead(10)==1 ){
caso = 1;
}
if (digitalRead(9)==0 and digitalRead(10)==1){
caso=2;
}
if (digitalRead(10)==0){
caso = 3;
}
if (digitalRead(8)==1 and digitalRead(9)==0 and digitalRead(10)==0 ){
caso = 0;
}
if (digitalRead(8)==0 and digitalRead(9)==1 and digitalRead(10)==0 ){
caso = 0;
}
if (digitalRead(8)==1 and digitalRead(9)==1 and digitalRead(10)==0 ){
caso = 0;
}
if (digitalRead(8)==1 and digitalRead(9)==1 and digitalRead(10)==1 ){
caso = 0;
}if (digitalRead(8)==1 and digitalRead(9)==0 and digitalRead(10)==1 ){
caso = 0;
}
switch(caso){
case 1: //Nivel Bajo
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(13,HIGH);
break;
case 2: //Nivel Medio
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(2,LOW);
digitalWrite(13, LOW);
break;
case 3: //Nivel Alto
digitalWrite(4, HIGH);
digitalWrite(3,LOW);
digitalWrite(2,LOW);
digitalWrite(13, LOW);
break;
case 0: //Ninguno
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(13, HIGH);
digitalWrite(2, HIGH);
delay(500);
digitalWrite(2, LOW);
delay(500);
break;
}
DateTime now = rtc.now();
printDate(now);
int Bomba = 13;
pinMode(Bomba, OUTPUT);
int A=4;
if (now.hour() == 00){
A+=1;
}
if(A==8){
A=1;
}
if(daysOfTheWeek[A] != "Sabado" or daysOfTheWeek[A] != "Domingo" ){
if(now.hour()>= 8 and now.hour()<= 15){
digitalWrite(Bomba, LOW);
}
}
}