Buenas noches a todos , bueno yo en algun post pregunte sobre el timestamp (unixtime) y me ayudaron , me dijieron que ponga la libreria y eso..
Bueno yo obtenia la hora de otra forma y realize mi circuito de riego en base a eso
Ahora que me cambio la forma de obtener la hora y agrege la libreria , el circuito dejo de funcionar.
Este es el circuito completo.
#include "Wire.h"
#include "RTClib.h"RTC_DS1307 RTC;
int bomba= 2;
int canilla1= 3;
int canilla2= 4;
int canilla3= 5;int humedad1 = 0;
int sector1 = 0;
int sector2 = 0;
int sector3 = 0;
int bomba1 = 0;
int humedadno = 0;int second;
int minute;
int hour;
int monthDay;
int month;
int year;
int unix;void setup()
{
Serial.begin(9600) ;
Wire.begin();
pinMode(bomba, OUTPUT);
pinMode(canilla1, OUTPUT);
pinMode(canilla2, OUTPUT);
pinMode(canilla3, OUTPUT);
// pinMode(ledriego, OUTPUT);
// pinMode(ledbomba, OUTPUT);
// pinMode(boton, INPUT);
// pinMode(botonriego, INPUT);
// pinMode(botonbomba, INPUT);
}void loop()
{
DateTime now = RTC.now();
second = now.second();
minute = now.minute();
hour = now.hour();
monthDay = now.day();
month = now.month();
year = now.year();
unix = now.unixtime();
humedad1 = analogRead(0);
Medir_Humedad();
comenzar_riego();
leer_datos();}
void Medir_Humedad()
{
humedad1 = analogRead(0);
if(humedad1 >= 500) {
humedadno = 1;
}
else {
humedadno = 0;}
}bool canilla1_on = false;
int canilla1_prendida_hora[3] = {-1,-1,-1};
bool canilla2_on = false;
int canilla2_prendida_hora[3] = {-1,-1,-1};
bool canilla3_on = false;
int canilla3_prendida_hora[3] = {-1,-1,-1};void comenzar_riego(){
if (hour == 22 && minute >= 43 && minute <= 48){
if (!canilla1_on){
digitalWrite(canilla1, HIGH);
digitalWrite(canilla2, HIGH);
canilla1_on = true;
canilla1_prendida_hora[0] = hour;
canilla1_prendida_hora[1] = minute;
canilla1_prendida_hora[2] = second;
}
if (canilla1_on && canilla1_prendida_hora[0] == hour && canilla1_prendida_hora[1] == minute && canilla1_prendida_hora[2]+3 >= second){
digitalWrite(bomba, HIGH);
}
} else {
canilla1_on = false;
canilla1_prendida_hora[0] = -1;
canilla1_prendida_hora[1] = -1;
canilla1_prendida_hora[2] = -1;
digitalWrite(bomba, LOW);
digitalWrite(canilla1, LOW);
digitalWrite(canilla2, LOW);
}
if (hour == 22 && minute >= 48 && minute <= 50){
if (!canilla2_on){
digitalWrite(canilla2, HIGH);
digitalWrite(canilla3, HIGH);
canilla2_on = true;
canilla2_prendida_hora[0] = hour;
canilla2_prendida_hora[1] = minute;
canilla2_prendida_hora[2] = second;
}
if (canilla2_on && canilla2_prendida_hora[0] == hour && canilla2_prendida_hora[1] == minute && canilla2_prendida_hora[2]+3 >= second){
digitalWrite(bomba, HIGH);}
} else {
canilla2_on = false;
canilla2_prendida_hora[0] = -1;
canilla2_prendida_hora[1] = -1;
canilla2_prendida_hora[2] = -1;
digitalWrite(bomba, LOW);
digitalWrite(canilla2, LOW);
digitalWrite(canilla3, LOW);
}
if (hour == 22 && minute >= 52 && minute <= 56){
if (!canilla3_on){
digitalWrite(canilla3, HIGH);
digitalWrite(canilla1, HIGH);
canilla3_on = true;
canilla3_prendida_hora[0] = hour;
canilla3_prendida_hora[1] = minute;
canilla3_prendida_hora[2] = second;
}
if (canilla3_on && canilla3_prendida_hora[0] == hour && canilla3_prendida_hora[1] == minute && canilla3_prendida_hora[2]+3 >= second){
digitalWrite(bomba, HIGH);}
} else {
canilla3_on = false;
canilla3_prendida_hora[0] = -1;
canilla3_prendida_hora[1] = -1;
canilla3_prendida_hora[2] = -1;
digitalWrite(canilla3, LOW);
digitalWrite(canilla1, LOW);
digitalWrite(bomba, LOW);}
}void mostrar_hora()
{
DateTime now = RTC.now();
Serial.print(monthDay);
Serial.print("/");
Serial.print(month);
Serial.print("/");
Serial.print(year);
Serial.print(" ");
Serial.print(hour);
Serial.print(":");
Serial.print(minute);
Serial.print(":");
Serial.println(second);
Serial.print("Hora Unix:");
Serial.print(" ");
Serial.print(now.unixtime());
Serial.println();
}void Mostrar_humedad()
{
Serial.print("Humedad:");
Serial.println(analogRead(0));
Serial.print("Estado Humedad:");
Serial.println(humedadno);}
void leer_datos(){
char dato = Serial.read();
if (dato=='1'){
if (sector1){
digitalWrite(canilla1, LOW);
sector1 = 0;
} else {
digitalWrite(canilla1, HIGH);
sector1 = 1;
}
} else if (dato=='2'){
if (sector2){
digitalWrite(canilla2, LOW);
sector2 = 0;
} else {
digitalWrite(canilla2, HIGH);
sector2 = 1;
}
}
else if (dato=='3'){
if (sector3){
digitalWrite(canilla3, LOW);
sector3 = 0;
} else {
digitalWrite(canilla3, HIGH);
sector3 = 1;
}
}
else if (dato=='b'){
if (bomba1){
digitalWrite(bomba, LOW);
bomba1 = 0;
} else {
digitalWrite(bomba, HIGH);
bomba1 = 1;
}
}
else if (dato=='m')
{
mostrar_hora();
Mostrar_humedad();
}
}
Bueno como veran es un poco desastrozo , es mi primer trabajo en arduino
pero bueno vamos al caso si veen esta la funcion leer_datos()
Esa funcion es para leer los datos del Bluethoo , hasta ahi perfecto:
Cuando pongo 1 , abre el relay 1 , osea canilla 1
Cuando pongo 2 ......
Asi todas las cosas que estan ahi , que sucede ahora ?
Es algo medio extraño el problema que cuando en el loop cargo la funcion "comenzar_riego" esto de leer datos no deja de funcionar pero la arduino tira poco voltaje (? , osesa que los relay no abren pero la luz se prende muy poco...
Lo extraño es que cuando saco del loop la funcion comenzar_riego , el circuito vuelve a funcionar todo correctamente.
Esto me paso despues de que cambie la forma de obtener la hora y agregue la libreria rtc