Si meto el código ahora... detecta que hemos pasado las 10 y las 12 y me activa los dos relés o tengo que esperar hasta que el reloj pase por las 10, entonces me enciende el primer rele y luego por las 12 para que me encienda el segundo relé?
no se si me explico, porque he metido el código y los reles no hacen nada.
este es el codigo:
#include <OneWire.h> //temperatura
#include <DallasTemperature.h>//temperatura
#define ONE_WIRE_BUS 7//temperatura, pin de entrada
OneWire oneWire(ONE_WIRE_BUS);//temperatura
DallasTemperature sensors(&oneWire);//temperatura
#include <Wire.h> //libreria para el reloj
#define DS1307_I2C_ADDRESS 0x68//reloj
#include <SLCD.h> //LCD
#define numRows 2 //LCD
#define numCols 16 //LCD
SLCD lcd = SLCD(numRows, numCols); //LCD
int Rele1 = 3; //rele1, luces1.
int Rele2 = 4; //rele2, luces2.
int Rele3 = 5; //rele3, libre.
int Rele4 = 6; //rele4, libre.
byte decToBcd(byte val)//RELOJ
{
return ( (val/10*16) + (val%10) );
}
byte bcdToDec(byte val)
{
return ( (val/16*10) + (val%16) );
}
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;//RELOJ
//El setup:
void setup()
{
pinMode(Rele1, OUTPUT);
pinMode(Rele2, OUTPUT);
pinMode(Rele3, OUTPUT);
pinMode(Rele4, OUTPUT);
Wire.begin(); //RELOJ
lcd.init(); //LCD
Serial.begin(9600); //LCD
sensors.begin();//Temperatura
}
//funciones secundarias
//Iniciar LCD
void Lcdini ()
{
lcd.brightness(99);
lcd.displayOn();
lcd.clear();
}
//Apagar LCD
void lcdoff()
{
lcd.displayOff();
lcd.brightness(0);
}
// Pausa 3 segundos
void p ()
{
delay (3000);
}
//control de las luces segun la hora:
void Luces()
{
if(hour == 10 && minute == 1)
{
digitalWrite (Rele1, HIGH);
}
if(hour == 12 && minute == 1)
{
digitalWrite (Rele2, HIGH);
}
if(hour == 20 && minute == 1)
{
digitalWrite (Rele2, LOW);
}
if(hour == 22 && minute == 1)
{
digitalWrite (Rele1, LOW);
}
}
//El loop:
void loop ()
{
lcdoff();
getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); // LEEMOS LA HORA
InfoLcd();
if (second < 10)//asi lo comprueba 1 vez por minuto en el bucle.
{
Luces();
}
}
// reloj. no se toca nada. si hay que poner en hora ir al sketch del reloj solo.
void getDateDs1307(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.send(0);
Wire.endTransmission();
Wire.requestFrom(DS1307_I2C_ADDRESS, 7);
*second = bcdToDec(Wire.receive() & 0x7f);
*minute = bcdToDec(Wire.receive());
*hour = bcdToDec(Wire.receive() & 0x3f); // Need to change this if 12 hour am/pm
*dayOfWeek = bcdToDec(Wire.receive());
*dayOfMonth = bcdToDec(Wire.receive());
*month = bcdToDec(Wire.receive());
*year = bcdToDec(Wire.receive());
}
// INOFORMACION EN PANTALLA LCD
void InfoLcd ()
{
//Nombre proyecto
Lcdini();
lcd.print(" KICO'S REEF ", 0, 2);
lcd.print(" VER 1.0", 1, 4);
p();
// ahora para mostrar fecha y hora
p();
Lcdini();
lcd.print("Hora:",0,1);
if (hour < 10) Serial.print("0");
Serial.print(hour, DEC);
Serial.print(":");
if (minute < 10) Serial.print("0");
Serial.print(minute, DEC);
Serial.print(":");
if (second < 10) Serial.print("0");
Serial.print(second, DEC);
switch (dayOfWeek)
{
case 1:
lcd.print("Lun , ",1,0);
break;
case 2:
lcd.print("Mar , ",1,0);
break;
case 3:
lcd.print("Mie , ",1,0);
break;
case 4:
lcd.print("Jue , ",1,0);
break;
case 5:
lcd.print("Vie , ",1,0);
break;
case 6:
lcd.print("Sab , ",1,0);
break;
case 7:
lcd.print("Dom , ",1,0);
break;
}
Serial.print(dayOfMonth, DEC);
Serial.print("/");
if (month < 10) Serial.print("0");
Serial.print(month, DEC);
Serial.print("/");
Serial.print("20");
if (year < 10) Serial.print("0");
Serial.print(year, DEC);
p();
Lcdini();
sensors.requestTemperatures();
lcd.print("Temp. Acuario: ",0,1);
Serial.print(sensors.getTempCByIndex(0));
p();
//FadeLcd();
Lcdini();
lcd.print("Temp. Ambiente: ",0,0);
Serial.print(sensors.getTempCByIndex(1));
p();
lcdoff();
}