Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: Es posible que esta función no esté disponible en algunos navegadores.
En los 1000 cree xte royal blue y blancos.Que tienes conectado en los 700 y que tienes en los 1000?
//////////// lcd ///////////
////// lcd
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
////////////////////
/////// blue ///////
///////////////////
#include <SoftwareSerial.h>
//SoftwareSerial bt(10, 11); // RX del bt al TX del nano que es 11
SoftwareSerial bt(53, 52); // bTX>53rx esto es para el mega
///////////////////////
//////// luces ////////
///////////////////////
long segActual=0;
long on= (13*60)+30;// encendemos a las 13h y 30 minutos que despues multiplicamos por segundos
long off=(23*60)+45;// apagamos a 23h y 45min
int Tdimmeo=30*60;// es el tiempo en segundo que tarda el dimmeo de 0% a 100% 30 minutos
int dimmer=0;// primer canal
int dimmerb=0;// segundo canal
int retraso=15*60;// segundo canal entra 15 minutos mas tarde
int Pazul=8;
int Pblanco=9;
void luces(){
// AZUL //
segActual=segActu(); // leemos el segundo acutual de dia
if (segActual>=on&&segActual<=off-Tdimmeo){// tramo que enciende y apaga
//enciende
/*explico el map (regla de tres)
* segundo actual, "on" es el segundo en el que empezamos(0%) y "on+Tdimmeo" es cuando termina (100%)
* ejemplo: si el segundo actual es el 23% del tiempo que hemos dimmeado , el valor devuelto es el 23% del dimmer(de 0 a 255)
* con esto conseguimos que si se reinicia el arduino a medio dimmeo va a continuar por el porcentaje exacto segun el segundo del dia.
*/
dimmer=map(segActual,on,on+Tdimmeo,0,255);// calculamos el dimmer exacto segun el segundo que estamos
if (dimmer>=255) dimmer=255;
}else if (segActual>off-Tdimmeo && segActual<=86400){
//apaga
dimmer=map(segActual,off-Tdimmeo,off,255,0);
if (dimmer<=0) dimmer=0;
}else{
dimmer=0;
}
// BLANCO //
if (segActual>=on+retraso&&segActual<=off-Tdimmeo-retraso){
//enciende
dimmerb=map(segActual,on+retraso,on+Tdimmeo+retraso,0,255);
if (dimmerb>=255) dimmerb=255;
}else if (segActual>off-Tdimmeo-retraso && segActual<=86400){
//apaga
dimmerb=map(segActual,off-Tdimmeo-retraso,off-retraso,255,0);
if (dimmerb<=0) dimmerb=0;
}else{
dimmerb=0;
}
analogWrite(Pazul,dimmer);
analogWrite(Pblanco,dimmerb);
}
///////////////////
///// blue ////////
///////////////////
void leerb(){
String a;
String variable="";
String valor="";
float temp1=0.0;
float temp2=0.0;
int temp=0;
while(bt.available()) {
a= bt.readString();// read the incoming data as string
variable =a.substring( 0,a.indexOf (".") );
valor =a.substring( a.indexOf (".")+1,a.length() );
}
if (variable!=""){
bt.println(a);
//bt.println(variable);
//bt.println(valor);
///////////// humedad suelo//////////////////////
if (variable=="fecha"){
Serial.println("fecha");
RTC.adjust(DateTime(
a.substring( a.indexOf ( "/" )+4 ,a.length()).toInt(),//ano
a.substring( a.indexOf ( "/" )+1 ,a.indexOf ( "/" )+3).toInt(),//mes
a.substring( a.indexOf ( " " )+1 ,a.indexOf ( "/" )+1).toInt(),//dia
a.substring( a.indexOf ( "=" )+1 ,a.indexOf ( ":" )+1).toInt(),//hora
a.substring( a.indexOf ( ":" )+1 ,a.indexOf ( ":" )+3).toInt(),//minu
a.substring( a.indexOf ( ":" )+4 ,a.indexOf ( ":" )+7).toInt()//seg
));
/* Serial.println (valor.substring( valor.indexOf ( "/" )+4 ,valor.length()).toInt());//año
Serial.println (valor.substring( valor.indexOf ( "/" )+1 ,valor.indexOf ( "/" )+3).toInt());//mes
Serial.println (valor.substring( valor.indexOf ( " " )+1 ,valor.indexOf ( "/" )+1).toInt());//dia
Serial.println (valor.substring( 0 ,valor.indexOf ( ":" )+1).toInt());//hora
Serial.println (valor.substring( valor.indexOf ( ":" )+1 ,valor.indexOf ( ":" )+3).toInt());//minu
Serial.println (valor.substring( valor.indexOf ( ":" )+4 ,valor.indexOf ( ":" )+7).toInt());//seg
*/
// 2016,12,30,12,59,59
}else if (variable=="enciende"){
Serial.println("enciende");
temp= valor.substring(0,valor.indexOf ( ":" )).toInt();//HORA
on=temp*60;
Serial.println(on);
temp= valor.substring( valor.indexOf ( ":" )+1 ,valor.length()).toInt();//minuto
on=on+temp;
on=on*60;
Serial.println(on);
bt.println("enciende");
///////////// hora //////////
}else if (variable=="apaga"){
temp= valor.substring(0,valor.indexOf ( ":" )).toInt();//HORA
off=temp*60;
temp= valor.substring( valor.indexOf ( ":" )+1 ,valor.length()).toInt();//minuto
off=off+temp;
off=off*60;
bt.println("apaga");
///////////// hora //////////
}else if (variable=="info"){
// leer_hora();
bt.print("hora:");bt.print(hora,DEC);bt.print(":");bt.print(minuto,DEC);bt.print(":");bt.println(segundo,DEC);
bt.print("Temperature: ");
bt.print(RTC.getTemperature());
bt.println(" C");
Serial.println(dimmerb);
Serial.println(dimmer);
Serial.println(segActual);
bt.print("blancas ");bt.print( map(dimmerb,0,255,0,100) );bt.println("%");
bt.print("azules ");bt.print( map(dimmer,0,255,0,100) );bt.println("%");
bt.println(variable);
}else if (variable=="temp"){
temp1= a.substring( a.indexOf ( "." )+1 ,a.length()).toFloat();
bt.print("temperatura ");bt.println(temp1-3);
}else if (variable=="retraso"){
temp1= a.substring( a.indexOf ( "." )+1 ,a.length()).toFloat();
bt.print("temperatura ");bt.println(temp1-3);
}else if (variable=="dimmer"){
temp1= a.substring( a.indexOf ( "." )+1 ,a.length()).toFloat();
bt.print("temperatura ");bt.println(temp1-3);
}else if (variable=="maximo"){
temp1= a.substring( a.indexOf ( "." )+1 ,a.length()).toFloat();
bt.print("temperatura ");bt.println(temp1-3);
}else {
//no hay nada}
bt.println("nada");
}
}
}
/////////////////////////////
/////// RELOJ !!!NO¡¡¡ TINY //////////
/////////////////////////////
#include "RTClib.h"
//RTC_DS1307 RTC;
RTC_DS3231 RTC;
char diasemana[7][12] = {"Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado"};
int segundo, minuto, hora, diaSemana, dia, mes, ano;
int minuto_cambia=61;
int horaH=0;
unsigned long time;
int retardo=3000;
int mt(int horad,int minuto){
return (horad*60)+minuto;
}
/******************************
***** FUNCIONES DEL RELOJ *****
******************************/
/***** MODIFICA LA HORA ******/
void modificar_hora(){
RTC.adjust(DateTime(__DATE__, __TIME__)); // Establece la fecha y hora (Comentar una vez establecida la hora)
//año , month, day, hour, min, sec
// RTC.adjust(DateTime(2016,12,30,12,59,59)); // Establece la fecha y hora (Comentar una vez establecida la hora)
}
void leer_hora(){
// Serial.println("entra");
DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC
dia=now.day();
mes=now.month();
ano=now.year();
hora=now.hour();
minuto=now.minute();
segundo=now.second();
diaSemana= now.dayOfTheWeek();
horaH=mt(hora,minuto);
//Serial.print(hora,DEC);Serial.print(":");Serial.print(minuto,DEC);Serial.print(":");Serial.println(segundo,DEC);
//Serial.print("Temperature: ");
// Serial.print(RTC.getTemperature());
// Serial.println(" C");
}
///// actuales segundos //////
long segActu(){
leer_hora();
segActual=hora*60;
segActual=segActual+minuto;
segActual=segActual*60;
segActual=segActual+segundo;
return segActual; // devolvemos el segundo que en que estamos en el dia(24h)
}
////// SETUP /////
void setup()
{
//// lcd ////
lcd.init();
// lcd.createChar (0, Grado);
lcd.backlight();
// bluetooth
bt.begin(9600);
bt.write("encedido bt");
pinMode(A3,OUTPUT);// bateria del reloj
digitalWrite(A3,HIGH);
pinMode(Pazul,OUTPUT);
pinMode(Pblanco,OUTPUT);
on=on*60;
off=off*60;
if (! RTC.begin()) {Serial.println("No hay reloj");}
/// serial /////
Serial.begin(9600);
Serial.println("comienza...");
Serial.print("enciende ");
Serial.println(on);
Serial.print("apaga ");
Serial.println(off);
// modificar_hora();
// RTC.adjust(DateTime(__DATE__, __TIME__)); // Establece la fecha y hora (Comentar una vez establecida la hora)
}
void loop(){
luces();// dimeamos
leerb();// leemos el bluetooth
linea1();// linea 1 del lcd y columna 0
lcd.print("bl ");lcd.print( map(dimmerb,0,255,0,100) );lcd.print("% ");// convertimos el 255 de dim en % y mostramos en pantalla
lcd.print("az ");lcd.print( map(dimmer,0,255,0,100) );lcd.print("%"); //idem
linea2();
lcd.print(hora,DEC);lcd.print(":");lcd.print(minuto,DEC);lcd.print(":");lcd.println(segundo,DEC);
//lcd.print(dia,DEC);lcd.print("/");lcd.print(mes,DEC);lcd.print("/");lcd.println(ano,DEC);
}
///////////// VARIOS //////////////
void linea1(){
lcd.setCursor(0,0);
}
void linea2(){
lcd.setCursor(0,1);
}
void linea3(){
lcd.setCursor(0,2);
}
void linea4(){
lcd.setCursor(0,3);
}