#include <Wire.h> // Incluye la librería Wire
#include "RTClib.h" // Incluye la librería RTClib
#include <OneWire.h>
#include <pitches.h> //Libreria para buzzer
RTC_DS1307 RTC; // Crea el objeto RTC
int LED1=5; //AMARILLO
int LED2=6; //VERDE
int LED3=7; //ROJO
void setup () {
Serial.begin(9600); // Establece la velocidad de datos del puerto serie
Wire.begin(); // Establece la velocidad de datos del bus I2C
RTC.begin();// Establece la velocidad de datos del RTC
//RTC.adjust(DateTime(__DATE__, __TIME__));
//pinMode(buz, OUTPUT);
//pinMode (boya, INPUT);
pinMode(9, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
}
void loop () {
int minute;
int hour;
int tiempo;
int segundo;
DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
Serial.print("Dia de la semana: ");
Serial.println(now.dayOfWeek(), DEC);
tiempo=(now.hour()*60)+now.minute();
/*if (tiempo < 60)
{
tiempo=tiempo+1440;*/
Serial.println();
Serial.print("Tiempo: ");
Serial.println(tiempo);
Luces (tiempo);
}
void Luces(int tiempo)
{
///////////tiempos de progamacion//////////
int PotLED;
int InicioAmanecerLED=720; //12:00
int FinAmanecerLED=780; //13:00 //
int InicioAnochecerLED=1320; //22:00//
int FinAnochecerLED=1380; //23:00//
int MaxLED=125; //Maximo que vamos a encender los LED sobre 255
//Noche
if (tiempo >FinAnochecerLED || tiempo < InicioAmanecerLED )
{
PotLED=0;
Serial.println();
Serial.print("NOCHE: ");
Serial.println(PotLED);
Serial.println();
analogWrite(9, PotLED);
digitalWrite(LED3, HIGH); // encendemos LED Rojo
delay(1000);
}
//Amanecer
if (tiempo >= InicioAmanecerLED && tiempo <= FinAmanecerLED)
{
PotLED=map(tiempo,InicioAmanecerLED,FinAmanecerLED,0,MaxLED);
Serial.println();
Serial.print("AMANECIENDO: ");
Serial.println(PotLED);
Serial.println();
analogWrite(9, PotLED);
digitalWrite(LED2, LOW); // apagamos LED Verde
digitalWrite(LED3, LOW); // apagamos LED Rojo
digitalWrite(LED1, HIGH); // encendemos LED Amarillo
delay(500);
digitalWrite(LED1, LOW); // apagamos LED Amarillo
delay(500);
}
//Dia
if (tiempo > FinAmanecerLED && tiempo < InicioAnochecerLED)
{
PotLED=MaxLED;
Serial.println();
Serial.print("DIA: ");
Serial.println(PotLED);
Serial.println();
analogWrite(9, PotLED);
digitalWrite(LED2, HIGH); // encendemos LED Verde
delay(1000);
}
//Anochecer
if (tiempo >= InicioAnochecerLED && tiempo <= FinAnochecerLED)
{
PotLED=map(tiempo,InicioAnochecerLED,FinAnochecerLED,MaxLED,0);
Serial.println();
Serial.print("ANOCHECIENDO: ");
Serial.println(PotLED);
Serial.println();
analogWrite(9, PotLED);
digitalWrite(LED2, LOW); // apagamos LED Verde
digitalWrite(LED3, LOW); // apagamos LED Rojo
digitalWrite(LED1, HIGH); // encendemos LED Amarillo
delay(500); //
digitalWrite(LED1, LOW); // apagamos LED Amarillo
delay(500);
}
//Control
if(PotLED < 0)
{
PotLED=0;
}
if(PotLED >MaxLED)
{
PotLED=MaxLED;
}
}