ÍndiceÍndice  RegistrarseRegistrarse  ConectarseConectarse  

NOS MUDAMOS. REGISTRATE EN LA NUEVA WEB : WWW.ACUARISTASDENAVARRA.COM
¿Quién está en línea?
En total hay 1 usuario en línea: 0 Registrados, 0 Ocultos y 1 Invitado

Ninguno

La mayor cantidad de usuarios en línea fue 32 el Vie 28 Jul 2017, 09:24.
Los posteadores más activos del mes

Comparte | 
 

 pantalla casera y arduino

Ir abajo 
Ir a la página : Precedente  1, 2
AutorMensaje
ficusrex
Guppy
Guppy
avatar

Mensajes : 222
Fecha de inscripción : 29/09/2013
Edad : 51

MensajeTema: Re: pantalla casera y arduino   Lun 24 Feb 2014, 17:50

Jajajaja... bravo Angel...la proxima clase me la das a mi que de arduino no tengo ni papa. albino albino

Por cierto, Ángel, necesito ponerme en contacto contigo para que me ayudes a solucionar una serie de problemas con un proyecto que puede ser la bomba para ahorrar pasta en electricidad. La gente en el taller ya vio como habia solucionado el problema de disipar el calor de los leds... pero mejor te cuento por telefono. Te puse un privado con mi tlfno. también tienen mi telefono husky, xerar o otros. Porfa ponte en contacto.
Volver arriba Ir abajo
Angel
Betta
Betta


Mensajes : 354
Fecha de inscripción : 23/01/2011
Edad : 49
Localización : Arre- Pamplona

MensajeTema: Re: pantalla casera y arduino   Miér 05 Mar 2014, 01:50

lol!  ya me han llegao todos los chismes del chinooooooooooooooooooooooo lol! 
na mas pueda me lio con las sondas y la pantalla
somos como niños chicos Twisted Evil 
Volver arriba Ir abajo
Angel
Betta
Betta


Mensajes : 354
Fecha de inscripción : 23/01/2011
Edad : 49
Localización : Arre- Pamplona

MensajeTema: Re: pantalla casera y arduino   Miér 05 Mar 2014, 01:53

ficus si puedes pasame algun programa de acuario...... ya se que no es llama programa pero me joe llamarlo sketh  Razz 
Volver arriba Ir abajo
ficusrex
Guppy
Guppy
avatar

Mensajes : 222
Fecha de inscripción : 29/09/2013
Edad : 51

MensajeTema: Re: pantalla casera y arduino   Miér 05 Mar 2014, 17:23

/*
Fading

This example shows how to fade an LED using the analogWrite() function.

The circuit:
* LED attached from digital pin 9 to ground.

Created 1 Nov 2008
By David A. Mellis
Modified 17 June 2009
By Tom Igoe

http://arduino.cc/en/Tutorial/Fading

This example code is in the public domain.

*/


int ledPin = 9; // LED connected to digital pin 9 blanco
int ledPin1 = 10; // LED connected to digital pin 10 blanco
int ledPin2 = 11; // LED connected to digital pin 11 blanco
int ledPin3 = 12; // LED connected to digital pin 12 blanco
int ledPin4 = 13; // LED connected to digital pin 13 azul
int ledPin5 = 6; // LED connected to digital pin 6 azul
int ledPin6 = 7; // LED connected to digital pin 7 azul
int ledPin7 = 8; // LED connected to digital pin 8 azul
void setup() {
// nothing happens in setup
}

void loop() {
// establece el valor de incremento en 1 paso de menos a más para los azules, pines 6,7,8 y 13:
for(int fadeValue1 = 0 ; fadeValue1 <= 255; fadeValue1 +=1)
{
analogWrite(ledPin4, fadeValue1);
analogWrite(ledPin5, fadeValue1);
analogWrite(ledPin6, fadeValue1);
analogWrite(ledPin7, fadeValue1);
delay(7059); // espera 7059 millisegundos para incrementar cada paso, 7.059*255=30 minutos
}

// establece el valor de incremento en 1 paso de menos a mas para los blancos:
for(int fadeValue = 0 ; fadeValue <= 230; fadeValue +=1)

{
// establece el valor desde 0 a 230 pasos en los blancos, pines 9, 10, 11 y 12:
analogWrite(ledPin, fadeValue);
analogWrite(ledPin1, fadeValue);
analogWrite(ledPin2, fadeValue);
analogWrite(ledPin3, fadeValue);

delay(7500); // espera 7500 millisegundos para incrementar cada paso, 7.5*240=30 minutos

}


delay(28800000); // Mantiene encendida la pantalla 10 horas


// establece el valor de decremento en 1 paso de más a menos para los blancos:
for(int fadeValue = 230 ; fadeValue >= 0; fadeValue -=1)
{
analogWrite(ledPin, fadeValue);
analogWrite(ledPin1, fadeValue);
analogWrite(ledPin2, fadeValue);
analogWrite(ledPin3, fadeValue);
// wait for 7500 milliseconds to see the dimming effect
delay(7500);
}
// establece el valor de decremento en 1 paso de más a menos para los azules:
for(int fadeValue1 = 255 ; fadeValue1 >= 0; fadeValue1 -=1)
{
analogWrite(ledPin4, fadeValue1);
analogWrite(ledPin5, fadeValue1);
analogWrite(ledPin6, fadeValue1);
analogWrite(ledPin7, fadeValue1);
// wait for 7059 milliseconds to see the dimming effect
delay(7059);
}


delay(50400000);// Mantiene apagada la pantalla 12 horas y vuelve a empezar:
}
Volver arriba Ir abajo
ficusrex
Guppy
Guppy
avatar

Mensajes : 222
Fecha de inscripción : 29/09/2013
Edad : 51

MensajeTema: Re: pantalla casera y arduino   Miér 05 Mar 2014, 17:28


#include <LiquidCrystal.h> //Incluir esta libreria para poder usar el lcd

int Ana1 = A0; //Entrada analogica de LM35
LiquidCrystal lcd(12,11,5,4,3,2); //Definimos la pantalla LCD
int Temp = 0;
char Grados = 'º';

void setup(){
Serial.begin(9600);
lcd.begin(16,2);
pinMode(13,OUTPUT);
digitalWrite(13, HIGH); //Activamos la retroiluminacion
}

void loop(){
Temp = analogRead(Ana1); //Leemos el valor de la entrada analogica
Temp = map(Temp,0,1024,-55,150); //Escalamos la señal a grados centigrados

//Mostramos los grados en el serial
Serial.print("Grados: ");
Serial.print(Temp);
Serial.print(Grados);
Serial.println("C");


//Mostramos los grados en la pantalla LCD
lcd.setCursor(0,0); //Con este comando decimos en que linea queremos escribir
lcd.print("Temperatura: ");
lcd.setCursor(0,1);
lcd.print(Temp);


delay(10000); //Al ser temperatura no hace falta leerlo tan seguido
}
Volver arriba Ir abajo
ficusrex
Guppy
Guppy
avatar

Mensajes : 222
Fecha de inscripción : 29/09/2013
Edad : 51

MensajeTema: Re: pantalla casera y arduino   Miér 05 Mar 2014, 17:29

/*********************************************/
/* Prueba de termometro con el DS1820 */
/* Basado en el programa de Trimbitas Sorin */
/*********************************************/


#include <OneWire.h>


OneWire ds(10);


void setup ()
{


Serial.begin(9600); // Iniciamos las comunicaciones serie para el terminal


}


//Declararemos varias funciones para simplificar el codigo


void buscasensor (byte direccion[8]) // Rutina de búsqueda de la dirección del sensor
{

if(!ds.search(direccion)) // Si no encuentra ningun sensor
{

ds.reset_search(); // Se reinicia la busqueda de los sensores
delay(250); // Espera de 250ms

}

}


void convert (byte* direccion) // Rutina que inicia la conversion del Ds1820
{

ds.reset(); // Se resetea el canal de comunicaciones
ds.select(direccion); // Se selecciona de nuevo el sensor
ds.write(0x44,1); // Se escribe un 1 en la direccion 0x44h para que comience la conversion, deja el bus a PullUP
delay (1000); // Una espera de un 1000ms para que no haya conflictos


}


void leerScratchpad (byte* direccion, byte* datos) // Rutina que lee el Scratchpad
{

ds.reset(); // Se resetea el canal de comunicaciones
ds.select(direccion); // Se selecciona de nuevo el sensor
ds.write(0xBE); // Se escribe un 1 en la direccion 0x44h para que comience la conversion
for (byte i=0; i<9; i++) // Hasta 9 por que la Scratchpad tiene 9 bytes
{
datos[i]=ds.read();
}

}


float leeTemp(byte* direccion) // Rutina que devuelve la lectura de la temperatura en grados centigrados
{

int TempR;
byte datos [9];

convert (direccion); // Se hace la llamada a la funcion convert para iniciar la conversion

leerScratchpad(direccion, datos); // Se lee el Scratchpad

TempR = datos [0]; // Se mueve a tr el valor de los 8 bits menos significativos


if (datos[1] > 0x80) // Se comprueba para datos negativos, si los 8 bits mas significativos son mayores que 0x80 es decir alguno a 1
{
TempR=!TempR + 1; // Se hace el complento a dos, como pone el datasheet
TempR = TempR * (-1); // Se le cambia el signo a tr para que salga negativo posteriormente
}


int CPC = datos [7]; // Se define el COUNTER PER C esta en la direccion 10h
int CR = datos [6]; // se define el COUNT REMAIN 0Ch


TempR = TempR >> 1; // Se desplaza el registro completo para "truncar" el bit0 de los datos de la temperatura


return TempR - (float)0.25 + (CPC - CR)/(float)CPC; // Formula obtenida del datasheet


}


void loop ()
{
byte direccion [8];
float temp;

buscasensor (direccion);

temp = leeTemp (direccion); // Se hace la llamada a la funcion que lee la temperatura del sensor

Serial.print("Temperatura = "); // Visualiza en pantalla la temperatura.
Serial.print(temp);
Serial.println(" C");
delay(1000);

}
Volver arriba Ir abajo
ficusrex
Guppy
Guppy
avatar

Mensajes : 222
Fecha de inscripción : 29/09/2013
Edad : 51

MensajeTema: Re: pantalla casera y arduino   Miér 05 Mar 2014, 17:31

#include <OneWire.h>
#include <LiquidCrystal.h>
#include <DallasTemperature.h>
#include <Wire.h> //
#define DS1307_I2C_ADDRESS 0x68
LiquidCrystal lcd(26, 27, 45, 47, 49, 51);
#define ONE_WIRE_BUS 40//temperatura, pin de entrada
OneWire oneWire(ONE_WIRE_BUS);//temperatura
DallasTemperature sensores(&oneWire);
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
int PinVentilador =42;//ventiladores
int PinCentilador =44;//ventiladores
//int PinUva=43; //uva
int PinPurple=34;//purple
int PinMixtas=35;// rele 16 mixtas
int PinCalentador = 36;//TERMOSTATO//
int PinCooler =37;//enfriador//
int PinFuente=38;//fuente 48v
int PinBatery=39;// batery 12v
//int PinActinic=33;//rele 8 actinico
int PinBlue=32;// rele 9 blue
int PinCoral=31;// rele 10 coral
int PinAzul=30;//rele 11 azul
//int PinWhite=29;//rele 12 white
int PinClaro=28;//rele 13 claro
int PinSol=25;//rele 14 sol
int PinBlancas=24;//15 rele blancas
int EstadoVentil=0;
int EstadoCentil=0;
int EstadoCalent=0;
int EstadoCooler=0;
int Retraso=5000;
//////////
//VARIOS//
//////////
// Convierte números normales decimales a BCD (binario decimal codificado)
byte decToBcd(byte val)
{
return ( (val/10*16) + (val%10) );
}
// Convierte BCD (binario decimal codificado) a números normales decimales
byte bcdToDec(byte val)
{
return ( (val/16*10) + (val%16) );
}

// Parar el DS1307, pero esto tiene el efecto secundario de segundos que se ponen a 0
// probablemente solo quiera usar esto para pruebas.
/*
void stopDs1307()
{
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.send(0);
Wire.send(0x80);
Wire.endTransmission();
}
*/
// 1) Sets the date and time on the ds1307
// 2) Starts the clock
// 3) Sets hour mode to 24 hour clock
// Assumes you're passing in valid numbers
void setDateDs1307(byte second, // 0-59
byte minute, // 0-59
byte hour, // 1-23
byte dayOfWeek, // 1-7
byte dayOfMonth, // 1-28/29/30/31
byte month, // 1-12
byte year) // 0-99
{
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.send(0);
Wire.send(decToBcd(second)); // 0 a bit 7 inicia el reloj
Wire.send(decToBcd(minute));
Wire.send(decToBcd(hour)); // Si usted quiere 12 hora am/pm usted tiene que poner el
// bit 6 (tambien tiene que cambiar readDateDs1307)
Wire.send(decToBcd(dayOfWeek));
Wire.send(decToBcd(dayOfMonth));
Wire.send(decToBcd(month));
Wire.send(decToBcd(year));
Wire.endTransmission();
}
// Establece la fecha y el tiempo del ds1307
void getDateDs1307(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
// Resetea el registro puntero
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.send(0);
Wire.endTransmission();

Wire.requestFrom(DS1307_I2C_ADDRESS, 7);
// Alguno de estos necesitan enmascarar porque ciertos bits son bits de control
*second = bcdToDec(Wire.receive() & 0x7f);
*minute = bcdToDec(Wire.receive());
*hour = bcdToDec(Wire.receive() & 0x3f); //¿Necesita cambiar esto si 12 horas am / pm
*dayOfWeek = bcdToDec(Wire.receive());
*dayOfMonth = bcdToDec(Wire.receive());
*month = bcdToDec(Wire.receive());
*year = bcdToDec(Wire.receive());
}
void setup()
{
pinMode(PinCentilador, OUTPUT);
pinMode(PinVentilador, OUTPUT);
//pinMode(PinUva,OUTPUT);
pinMode(PinPurple,OUTPUT);
pinMode(PinFuente, OUTPUT);
pinMode(PinCalentador, OUTPUT);
pinMode(PinCooler, OUTPUT);
pinMode(PinBatery, OUTPUT);
// pinMode(PinActinic, OUTPUT);
pinMode(PinBlue, OUTPUT);
pinMode(PinCoral, OUTPUT);
pinMode(PinAzul, OUTPUT);
//pinMode(PinWhite, OUTPUT);
pinMode(PinClaro, OUTPUT);
pinMode(PinSol, OUTPUT);
pinMode(PinBlancas, OUTPUT);
pinMode(PinMixtas, OUTPUT);
///pines pwm//
// pinMode(2, OUTPUT);//ACTINIC//
pinMode(3, OUTPUT);//BLUE//
pinMode(4, OUTPUT);//CORAL//
pinMode(5, OUTPUT);//AZULES//
pinMode(6, OUTPUT);//CLARO//
pinMode(7, OUTPUT);//SOL//
// pinMode(8, OUTPUT);//WHITE//
pinMode(9, OUTPUT);//blancas//
// pinMode(10, OUTPUT);//MISTAS//
pinMode(11, OUTPUT);//PURPLE//
//pinMode(12, OUTPUT);//UVA//
//Establecer el número de la pantalla LCD de columnas y filas:
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
byte smiley[8] = {//1ª parte del encendido//
B10001,
B01011,
B00111,
B10111,
B00111,
B01011,
B10001,
};
lcd.createChar(0, smiley);

byte smile[8] = {//2ªparte del encendido//
B10001,
B11010,
B11100,
B11101,
B11100,
B11010,
B10001,
};
lcd.createChar(1, smile);
byte off[8] = {//1ª parte de apagado//
B10001,
B01010,
B00100,
B10100,
B00100,
B01010,
B10001,
};
lcd.createChar(3, off);
byte off1[8] = {//2ª parte de apagado//
B10001,
B01010,
B00100,
B00101,
B00100,
B01010,
B10001,
};
lcd.createChar(4,off1);
byte ola[8] = {
B10101,
B01010,
B00000,
B10101,
B01010,
B00000,
B10101,
B01010,
};
lcd.createChar(5, ola);
byte ven[8] = {
B01110,
B10101,
B10101,
B11111,
B11111,
B10101,
B10101,
B01110,
};
lcd.createChar(6, ven);
byte GAS[8] = {//CO2//
B10101,
B01010,
B10101,
B01010,
B10101,
B01010,
B00000,
B11111,
};
lcd.createChar(7, GAS);
Wire.begin();
lcd.noBlink();
lcd.begin(20,4);
sensores.begin();
lcd.setCursor(0,0);
lcd.print("*PROYECTO*");
lcd.setCursor(8,1);

lcd.print(" MAY ");
lcd.setCursor(10,2);

lcd.print(" LED ");
lcd.setCursor(11,3);

lcd.print(" V.O1 ");
// Cambie estos valores a los que usted quiere poner su reloj.
// Usted probablemente solo quiere poner su reloj una vez y luego quitar
// la llamada de setDateDs1307.
// si desea poner en hora, active esta parte y luego vuelva a quitarla
/*
second = 00;
minute = 59;
hour = 23;
dayOfWeek = 4;
dayOfMonth = 30;
month =8;
year = 12;
setDateDs1307(second, minute, hour, dayOfWeek, dayOfMonth, month, year);
*/

delay(6000);
}
void loop() {
getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); //Obtenemos la hora
sensores.requestTemperatures();
// Luces(minute, hour);
Blx(minute, hour);
Co(minute, hour);
Az(minute, hour);

// Wh(minute, hour);
Cl(minute, hour);
So(minute, hour);
Bl(minute, hour);

// Extras(minute, hour);
Pu(minute, hour);
Mx(minute, hour);
Temperatura(minute, hour);
Fuente(minute, hour);
Batery(minute, hour);


lcd.noBlink();
if (minute < 2) Retraso=1000;
else if (hour < 5) Retraso=1000;
else Retraso=3000;
}
/* void Luces(int minutos, int horas) {

int LucesActinic;
int InicioAmanecerActinic=960;//540;// 9:00// 60x9=540
int FinAmanecerActinic=1020;//585;//9:45//
int InicioAnochecerActinic=1025;//1215;//20:15//
int FinAnochecerActinic=1080;//1260;//21:00//
int MaxActinic=250;
int PorcentActinic;

int Tiempo;
Tiempo=horas*60+minutos;
// if (Tiempo < 60)Tiempo=Tiempo+1440;
// Tiempo=Tiempo-60; //Horario de Invierno

//#################################actinica ###################################
//Noche
if (Tiempo < InicioAmanecerActinic ) LucesActinic=0;
//Amanecer
if (Tiempo >= InicioAmanecerActinic && Tiempo <= FinAmanecerActinic) LucesActinic=(Tiempo-InicioAmanecerActinic)*2;
//Dia
if ((Tiempo > FinAmanecerActinic) && (Tiempo < InicioAnochecerActinic)) LucesActinic=MaxActinic;
//Anochecer
if (Tiempo >= InicioAnochecerActinic && Tiempo <= FinAnochecerActinic) LucesActinic=(FinAnochecerActinic-Tiempo)*2;
//Control
if( LucesActinic <0) LucesActinic=0;
if( LucesActinic >MaxActinic) LucesActinic=MaxActinic;
analogWrite(2, LucesActinic);
PorcentActinic =Porcent(LucesActinic ,255)*2;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("ILUMINACION:");
lcd.setCursor(0,3);
if (hour < 10) lcd.print("0");
lcd.print(hour, DEC);
lcd.print(":");
if (minute < 10) lcd.print("0");
lcd.print(minute, DEC);
lcd.setCursor(0,1);
lcd.print("ACTINICA:");
if (PorcentActinic< 10);
lcd.print(PorcentActinic);
lcd.print("%");
lcd.print(" ");
lcd.setCursor(6,3);
if (dayOfMonth < 10) lcd.print("0");
lcd.print(dayOfMonth, DEC);
lcd.print("/");
if (month < 10) lcd.print("0");
lcd.print(month, DEC);
lcd.print("/");
lcd.print("20");
if (year < 10) lcd.print("0");
lcd.print(year, DEC);
lcd.print(" ");
lcd.setCursor(0,2);
if (Tiempo > InicioAmanecerActinic && Tiempo < FinAmanecerActinic) lcd.print ("AMANECER-ACTINIC");
if (Tiempo > FinAmanecerActinic && Tiempo < InicioAnochecerActinic) lcd.print ("PLENUM-ACTINIC");
if (Tiempo >= InicioAnochecerActinic && Tiempo <= FinAnochecerActinic) lcd.print ("ANOCHECER-ACTINIC");
if (Tiempo > FinAnochecerActinic || Tiempo < InicioAmanecerActinic) lcd.print ("ZENIT-ACTINIC");

lcd.setCursor(12, 1);
if (Tiempo >= InicioAmanecerActinic&& Tiempo <= FinAnochecerActinic )//decimos al rele el encendido y apagado//
{
digitalWrite(PinActinic, LOW);
lcd.write(0);
lcd.write(1);
}
else
{
digitalWrite(PinActinic, HIGH);
lcd.write(3);
lcd.write(4);
}
delay(Retraso);
}
*/
void Blx(int minutos, int horas) {
int BlxBlue;
int InicioAmanecerBlue=660;//11:00
int FinAmanecerBlue=720;//12:00 //
int InicioAnochecerBlue=1260;//21:00//
int FinAnochecerBlue=1320;//22:00//
int MaxBlue=100;
int PorcentBlue;
int PasoBlueAM=MaxBlue/(FinAmanecerBlue-InicioAmanecerBlue);
int PasoBluePM=MaxBlue/(FinAnochecerBlue-InicioAnochecerBlue);
int Tiempo;
Tiempo=horas*60+minutos;
// if (Tiempo < 60)Tiempo=Tiempo+1440;
// Tiempo=Tiempo-60; //Horario de Invierno
//#################################blue ###################################
if (Tiempo < InicioAmanecerBlue ) BlxBlue =0;
//Amanecer
if (Tiempo >= InicioAmanecerBlue && Tiempo <= FinAmanecerBlue ) BlxBlue =(Tiempo-InicioAmanecerBlue)*PasoBlueAM;
//Dia
if ((Tiempo > FinAmanecerBlue ) && (Tiempo < InicioAnochecerBlue )) BlxBlue =MaxBlue ;
//Anochecer
if (Tiempo >= InicioAnochecerBlue && Tiempo <= FinAnochecerBlue )BlxBlue =(FinAnochecerBlue-Tiempo)* PasoBluePM;
//Control*
if( BlxBlue <0) BlxBlue =0;
if( BlxBlue >MaxBlue)BlxBlue =MaxBlue;
analogWrite(3,BlxBlue);
PorcentBlue =Porcent(BlxBlue,255)*2;

lcd.clear();
lcd.setCursor(0,0);
lcd.print("ILUMINACION:");
lcd.setCursor(0,3);
if (hour < 10) lcd.print("0");
lcd.print(hour, DEC);
lcd.print(":");
if (minute < 10) lcd.print("0");
lcd.print(minute, DEC);
lcd.setCursor(0,1);
lcd.print("BLUE:");

if (PorcentBlue< 10);
lcd.print(PorcentBlue);
lcd.print("%");
lcd.print(" ");
lcd.setCursor(6,3);
if (dayOfMonth < 10) lcd.print("0");
lcd.print(dayOfMonth, DEC);
lcd.print("/");
if (month < 10) lcd.print("0");
lcd.print(month, DEC);
lcd.print("/");
lcd.print("20");
if (year < 10) lcd.print("0");
lcd.print(year, DEC);
lcd.print(" ");
lcd.setCursor(0,2);
if (Tiempo > InicioAmanecerBlue && Tiempo < FinAmanecerBlue) lcd.print ("AMANECE-BLUE");
if (Tiempo > FinAmanecerBlue && Tiempo < InicioAnochecerBlue) lcd.print ("PLENUM-BLUE");
if (Tiempo >= InicioAnochecerBlue && Tiempo <= FinAnochecerBlue) lcd.print ("ANOCHECER-BLUE");
if (Tiempo > FinAnochecerBlue || Tiempo < InicioAmanecerBlue) lcd.print ("ZENIT-BLUE");

lcd.setCursor(10, 1);
if (Tiempo >= InicioAmanecerBlue&& Tiempo <= FinAnochecerBlue )//decimos al rele el encendido y apagado//
{
digitalWrite(PinBlue, LOW);
lcd.write(0);
lcd.write(1);
}
else
{
digitalWrite(PinBlue, HIGH);
lcd.write(3);
lcd.write(4);
}
delay(1000);
}
void Co(int minutos, int horas) {
int CoCoral;
int InicioAmanecerCoral=690;//11:30
int FinAmanecerCoral=750;//12:30 //
int InicioAnochecerCoral=1290;//21:30//
int FinAnochecerCoral=1350;//22:30//
int MaxCoral=150;
int PorcentCoral;
int PasoCoralAM=MaxCoral/(FinAmanecerCoral-InicioAmanecerCoral);
int PasoCoralPM=MaxCoral/(FinAnochecerCoral-InicioAnochecerCoral);
int Tiempo;
Tiempo=horas*60+minutos;
// if (Tiempo < 60)Tiempo=Tiempo+1440;
// Tiempo=Tiempo-60; //Horario de Invierno
//################################# Coral ###################################
//Noche
if (Tiempo < InicioAmanecerCoral ) CoCoral=0;
//Amanecer
if (Tiempo >= InicioAmanecerCoral && Tiempo <= FinAmanecerCoral) CoCoral=(Tiempo-InicioAmanecerCoral)*PasoCoralAM;
//Dia
if ((Tiempo > FinAmanecerCoral) && (Tiempo < InicioAnochecerCoral) )CoCoral=MaxCoral;
//Anochecer
if (Tiempo >= InicioAnochecerCoral && Tiempo <= FinAnochecerCoral) CoCoral=(FinAnochecerCoral-Tiempo)*PasoCoralPM;
//Control
if( CoCoral <0)CoCoral=0;
if( CoCoral >MaxCoral) CoCoral=MaxCoral;
analogWrite(4, CoCoral);
PorcentCoral =Porcent(CoCoral,255)*2;

lcd.clear();
lcd.setCursor(0,0);
lcd.print("ILUMINACION:");
lcd.setCursor(0,3);
if (hour < 10) lcd.print("0");
lcd.print(hour, DEC);
lcd.print(":");
if (minute < 10) lcd.print("0");
lcd.print(minute, DEC);
lcd.setCursor(0,1);
lcd.print("CORAL:");
if (PorcentCoral< 10);
lcd.print(PorcentCoral);
lcd.print("%");
lcd.print(" ");
lcd.setCursor(6,3);
if (dayOfMonth < 10) lcd.print("0");
lcd.print(dayOfMonth, DEC);
lcd.print("/");
if (month < 10) lcd.print("0");
lcd.print(month, DEC);
lcd.print("/");
lcd.print("20");
if (year < 10) lcd.print("0");
lcd.print(year, DEC);
lcd.print(" ");
lcd.setCursor(0,2);
if (Tiempo > InicioAmanecerCoral && Tiempo < FinAmanecerCoral) lcd.print ("AMANECER-CORAL");
if (Tiempo > FinAmanecerCoral&& Tiempo < InicioAnochecerCoral) lcd.print ("PLENUM-CORAL");
if (Tiempo >= InicioAnochecerCoral && Tiempo <= FinAnochecerCoral) lcd.print ("ANOCHECER-CORAL");
if (Tiempo > FinAnochecerCoral || Tiempo < InicioAmanecerCoral) lcd.print ("ZENIT-CORAL");
lcd.setCursor(10, 1);
if (Tiempo >= InicioAmanecerCoral&& Tiempo <= FinAnochecerCoral )//decimos al rele el encendido y apagado//
{
digitalWrite(PinCoral, LOW);
lcd.write(0);
lcd.write(1);
}
else
{
digitalWrite(PinCoral, HIGH);
lcd.write(3);
lcd.write(4);
}
delay(1000);
}
void Az(int minutos, int horas) {

int AzAzules;
int InicioAmanecerAzul=720;//12:00
int FinAmanecerAzul=780;//13:00 //
int InicioAnochecerAzul=1320;//22:00//
int FinAnochecerAzul=1380;//23:00//
int MaxAzul=125;
int PorcentAzules;
int PasoAzulAM=MaxAzul/(FinAmanecerAzul-InicioAmanecerAzul);
int PasoAzulPM=MaxAzul/(FinAnochecerAzul-InicioAnochecerAzul);
int Tiempo;
Tiempo=horas*60+minutos;
// if (Tiempo < 60)Tiempo=Tiempo+1440;
// Tiempo=Tiempo-60; //Horario de Invierno
//################################# azules ###################################
//Noche
if (Tiempo < InicioAmanecerAzul ) AzAzules=0;
//Amanecer
if (Tiempo >= InicioAmanecerAzul && Tiempo <= FinAmanecerAzul) AzAzules=(Tiempo-InicioAmanecerAzul)*PasoAzulAM;
//Dia
if ((Tiempo > FinAmanecerAzul) && (Tiempo < InicioAnochecerAzul)) AzAzules=MaxAzul;
//Anochecer
if (Tiempo >= InicioAnochecerAzul && Tiempo <= FinAnochecerAzul) AzAzules=(FinAnochecerAzul-Tiempo)*PasoAzulPM;
//Control
if( AzAzules <0) AzAzules=0;
if( AzAzules >MaxAzul)AzAzules=MaxAzul;
analogWrite(5, AzAzules);
PorcentAzules =Porcent(AzAzules ,255)*2;

lcd.clear();
lcd.setCursor(0,0);
lcd.print("ILUMINACION:");

lcd.setCursor(0,3);
if (hour < 10) lcd.print("0");
lcd.print(hour, DEC);
lcd.print(":");
if (minute < 10) lcd.print("0");
lcd.print(minute, DEC);
lcd.setCursor(0,1);
lcd.print("AZULES:");

if (PorcentAzules< 10);
lcd.print(PorcentAzules);
lcd.print("%");
lcd.print(" ");
lcd.setCursor(6,3);
if (dayOfMonth < 10) lcd.print("0");
lcd.print(dayOfMonth, DEC);
lcd.print("/");
if (month < 10) lcd.print("0");
lcd.print(month, DEC);
lcd.print("/");
lcd.print("20");
if (year < 10) lcd.print("0");
lcd.print(year, DEC);
lcd.print(" ");
lcd.setCursor(0,2);
if (Tiempo > InicioAmanecerAzul && Tiempo < FinAmanecerAzul) lcd.print ("AMANECER-AZUL");
if (Tiempo > FinAmanecerAzul&& Tiempo < InicioAnochecerAzul) lcd.print ("PLENUM-AZUL");
if (Tiempo >= InicioAnochecerAzul && Tiempo <= FinAnochecerAzul) lcd.print ("ANOCHECER-AZUL");
if (Tiempo > FinAnochecerAzul|| Tiempo < InicioAmanecerAzul) lcd.print ("ZENIT-AZUL");

lcd.setCursor(10, 1);
if (Tiempo >= InicioAmanecerAzul&& Tiempo <= FinAnochecerAzul)//decimos al rele el encendido y apagado//
{
digitalWrite(PinAzul, LOW);
lcd.write(0);
lcd.write(1);
}
else
{
digitalWrite(PinAzul, HIGH);
lcd.write(3);
lcd.write(4);
}
delay(1000);
}/*
void Wh(int minutos, int horas) {
int WhWhite;
int InicioAmanecerWhite=960;//11:15
int FinAmanecerWhite=1020;//12:15 //
int InicioAnochecerWhite=1025;//18:00//
int FinAnochecerWhite=1080;//18:45//
int MaxWhite=250;
int PorcentWhite;

int Tiempo;
Tiempo=horas*60+minutos;
// if (Tiempo < 60)Tiempo=Tiempo+1440;
// Tiempo=Tiempo-60; //Horario de Invierno
//################################# White ###################################
//Noche
if (Tiempo < InicioAmanecerWhite)WhWhite=0;
//Amanecer
if (Tiempo >= InicioAmanecerWhite && Tiempo <= FinAmanecerWhite) WhWhite=(Tiempo-InicioAmanecerWhite)*6;
//Dia
if (Tiempo > FinAmanecerWhite && Tiempo < InicioAnochecerWhite) WhWhite=MaxWhite;
//Anochecer
if (Tiempo >= InicioAnochecerWhite && Tiempo <= FinAnochecerWhite) WhWhite=(FinAnochecerWhite-Tiempo)*6;
//Control
if( WhWhite <0) WhWhite=0;
if( WhWhite >MaxWhite)WhWhite=MaxWhite;
analogWrite(6, WhWhite );
PorcentWhite =Porcent(WhWhite,255)*2;

lcd.clear();
lcd.setCursor(0,0);
lcd.print("ILUMINACION:");
lcd.setCursor(0,3);
if (hour < 10) lcd.print("0");
lcd.print(hour, DEC);
lcd.print(":");
if (minute < 10) lcd.print("0");
lcd.print(minute, DEC);
lcd.setCursor(0,1);
lcd.print("WHITE:");

if (PorcentWhite< 10);
lcd.print(PorcentWhite);
lcd.print("%");
lcd.print(" ");
lcd.setCursor(6,3);
if (dayOfMonth < 10) lcd.print("0");
lcd.print(dayOfMonth, DEC);
lcd.print("/");
if (month < 10) lcd.print("0");
lcd.print(month, DEC);
lcd.print("/");
lcd.print("20");
if (year < 10) lcd.print("0");
lcd.print(year, DEC);
lcd.print(" ");
lcd.setCursor(0,2);
if (Tiempo > InicioAmanecerWhite && Tiempo < FinAmanecerWhite) lcd.print ("AMANECER-WHITE");
if (Tiempo > FinAmanecerWhite&& Tiempo < InicioAnochecerWhite) lcd.print ("PLENUM-WHITE");
if (Tiempo >= InicioAnochecerWhite && Tiempo <= FinAnochecerWhite) lcd.print ("ANOCHECER-WHITE");
if (Tiempo > FinAnochecerWhite|| Tiempo < InicioAmanecerWhite) lcd.print ("ZENIT-WHITE");


lcd.setCursor(10, 1);
if (Tiempo >= InicioAmanecerWhite&& Tiempo <= FinAnochecerWhite)//decimos al rele el encendido y apagado//
{
digitalWrite(PinWhite, LOW);
lcd.write(0);
lcd.write(1);
}
else
{
digitalWrite(PinWhite, HIGH);
lcd.write(3);
lcd.write(4);
}
delay(Retraso);
}*/
void Cl(int minutos, int horas) {
int ClClaro;
int InicioAmanecerClaro=840;//14:00//
int FinAmanecerClaro=900;//15:00//
int InicioAnochecerClaro=1140;//19:00//
int FinAnochecerClaro=1200;//20:00//
int MaxClaro=100;
int PasoClaroAM=MaxClaro/(FinAmanecerClaro-InicioAmanecerClaro);
int PasoClaroPM=MaxClaro/(FinAnochecerClaro-InicioAnochecerClaro);
int PorcentClaro;
int Tiempo;
Tiempo=horas*60+minutos;
// if (Tiempo < 60)Tiempo=Tiempo+1440;
// Tiempo=Tiempo-60; //Horario de Invierno
//################################# claro ###################################
//Noche
if (Tiempo < InicioAmanecerClaro) ClClaro=0;
//Amanecer
if (Tiempo >= InicioAmanecerClaro && Tiempo <= FinAmanecerClaro) ClClaro=(Tiempo-InicioAmanecerClaro)*PasoClaroAM;
//Dia
if (Tiempo > FinAmanecerClaro && Tiempo < InicioAnochecerClaro)ClClaro=MaxClaro;
//Anochecer
if (Tiempo >= InicioAnochecerClaro && Tiempo <= FinAnochecerClaro)ClClaro=(FinAnochecerClaro-Tiempo)*PasoClaroPM;
//Control
if( ClClaro<0) ClClaro=0;
if( ClClaro >MaxClaro)ClClaro=MaxClaro;
analogWrite(7, ClClaro);
PorcentClaro =Porcent(ClClaro ,255)*2;

lcd.clear();
lcd.setCursor(0,0);
lcd.print("ILUMINACION:");
lcd.setCursor(0,3);
if (hour < 10) lcd.print("0");

lcd.print(hour, DEC);
lcd.print(":");
if (minute < 10) lcd.print("0");
lcd.print(minute, DEC);
lcd.setCursor(0,1);
lcd.print("CLARO:");

if (PorcentClaro< 10);
lcd.print(PorcentClaro);
lcd.print("%");
lcd.print(" ");
lcd.setCursor(6,3);
if (dayOfMonth < 10) lcd.print("0");
lcd.print(dayOfMonth, DEC);
lcd.print("/");
if (month < 10) lcd.print("0");
lcd.print(month, DEC);
lcd.print("/");
lcd.print("20");
if (year < 10) lcd.print("0");
lcd.print(year, DEC);
lcd.print(" ");
lcd.setCursor(0,2);
if (Tiempo > InicioAmanecerClaro&& Tiempo < FinAmanecerClaro) lcd.print ("AMANECER-CLARO");
if (Tiempo > FinAmanecerClaro&& Tiempo < InicioAnochecerClaro) lcd.print ("PLENUM-CLARO");
if (Tiempo >= InicioAnochecerClaro&& Tiempo <= FinAnochecerClaro) lcd.print ("ANOCHECER-CLARO");
if (Tiempo > FinAnochecerClaro|| Tiempo < InicioAmanecerClaro) lcd.print ("ZENIT-CLARO");
lcd.setCursor(10, 1);
if (Tiempo >= InicioAmanecerClaro&& Tiempo <= FinAnochecerClaro)//decimos al rele el encendido y apagado//
{
digitalWrite(PinClaro, LOW);
lcd.write(0);
lcd.write(1);
}
else
{
digitalWrite(PinClaro, HIGH);
lcd.write(3);
lcd.write(4);
}
delay(1000);
}
void So(int minutos, int horas) {
int SoSol;
int InicioAmanecerSol=870;//14:30//
int FinAmanecerSol=930;//15:30//
int InicioAnochecerSol=1170;//19:30//
int FinAnochecerSol=1230;//20:30//
int MaxSol=150;
int PorcentSol;
int PasoSolAM=MaxSol/(FinAmanecerSol-InicioAmanecerSol);
int PasoSolPM=MaxSol/(FinAnochecerSol-InicioAnochecerSol);



int Tiempo;
Tiempo=horas*60+minutos;
// if (Tiempo < 60)Tiempo=Tiempo+1440;
// Tiempo=Tiempo-60; //Horario de Invierno
//################################# sol ###################################
//Noche
if (Tiempo < InicioAmanecerSol) SoSol=0;
//Amanecer
if (Tiempo >= InicioAmanecerSol && Tiempo <= FinAmanecerSol) SoSol=(Tiempo-InicioAmanecerSol)*PasoSolAM;
//Dia
if (Tiempo > FinAmanecerSol && Tiempo < InicioAnochecerSol) SoSol=MaxSol;
//Anochecer
if (Tiempo >= InicioAnochecerSol&& Tiempo <= FinAnochecerSol) SoSol=(FinAnochecerSol-Tiempo)*PasoSolPM;
//Control
if( SoSol<0) SoSol=0;
if( SoSol >MaxSol)SoSol=MaxSol;
analogWrite(8, SoSol);
PorcentSol =Porcent(SoSol ,255)*2;

lcd.clear();
lcd.setCursor(0,0);
lcd.print("ILUMINACION:");
lcd.setCursor(0,3);
if (hour < 10) lcd.print("0");
lcd.print(hour, DEC);
lcd.print(":");
if (minute < 10) lcd.print("0");
lcd.print(minute, DEC);
lcd.setCursor(0,1);
lcd.print("SOL:");
if (PorcentSol< 10);
lcd.print(PorcentSol);
lcd.print("%");
lcd.setCursor(6,3);
if (dayOfMonth < 10) lcd.print("0");
lcd.print(dayOfMonth, DEC);
lcd.print("/");
if (month < 10) lcd.print("0");
lcd.print(month, DEC);
lcd.print("/");
lcd.print("20");
if (year < 10) lcd.print("0");
lcd.print(year, DEC);
lcd.print(" ");
lcd.setCursor(0,2);
if (Tiempo > InicioAmanecerSol&& Tiempo < FinAmanecerSol) lcd.print ("AMANECER-SOL");
if (Tiempo > FinAmanecerSol&& Tiempo < InicioAnochecerSol) lcd.print ("PLENUM-SOL");
if (Tiempo >= InicioAnochecerSol&& Tiempo <= FinAnochecerSol) lcd.print ("ANOCHECER-SOL");
if (Tiempo > FinAnochecerSol|| Tiempo < InicioAmanecerSol) lcd.print ("ZENIT-SOL");

lcd.setCursor(10, 1);
if (Tiempo >= InicioAmanecerSol&& Tiempo <= FinAnochecerSol)//decimos al rele el encendido y apagado//
{
digitalWrite(PinSol, LOW);
lcd.write(0);
lcd.write(1);
}
else
{
digitalWrite(PinSol, HIGH);
lcd.write(3);
lcd.write(4);
}
delay(1000);
}
void Bl(int minutos, int horas) {
int BlBlancas;
int InicioAmanecerBlancas=900;//15:00//
int FinAmanecerBlancas=960;//16:00//
int InicioAnochecerBlancas=1200;//20:00//
int FinAnochecerBlancas=1260;//21:00//
int MaxBlancas=125;
int PorcentBlancas;
int PasoBlancasAM=MaxBlancas/(FinAmanecerBlancas-InicioAmanecerBlancas);
int PasoBlancasPM=MaxBlancas/(FinAnochecerBlancas-InicioAnochecerBlancas);
int Tiempo;
Tiempo=horas*60+minutos;
// if (Tiempo < 60)Tiempo=Tiempo+1440;
// Tiempo=Tiempo-60; //Horario de Invierno
//################################# BLANCAS ###################################
//Noche
if (Tiempo < InicioAmanecerBlancas) BlBlancas=0;
//Amanecer
if (Tiempo >= InicioAmanecerBlancas && Tiempo <= FinAmanecerBlancas)BlBlancas=(Tiempo-InicioAmanecerBlancas)*PasoBlancasAM;
//Dia
if (Tiempo > FinAmanecerBlancas && Tiempo < InicioAnochecerBlancas) BlBlancas=MaxBlancas;
//Anochecer
if (Tiempo >= InicioAnochecerBlancas && Tiempo <= FinAnochecerBlancas) BlBlancas=(FinAnochecerBlancas-Tiempo)*PasoBlancasPM;
//Control
if( BlBlancas <0) BlBlancas=0;
if( BlBlancas >MaxBlancas) BlBlancas=MaxBlancas;
analogWrite(9, BlBlancas );
PorcentBlancas =Porcent(BlBlancas ,255)*2;

lcd.clear();
lcd.setCursor(0,0);
lcd.print("ILUMINACION:");
lcd.setCursor(0,3);
if (hour < 10) lcd.print("0");
lcd.print(hour, DEC);
lcd.print(":");
if (minute < 10) lcd.print("0");
lcd.print(minute, DEC);
lcd.setCursor(0,1);
lcd.print("BLANCAS:");
if (PorcentBlancas< 10);
lcd.print(PorcentBlancas);

lcd.print("%");
lcd.setCursor(6,3);
if (dayOfMonth < 10) lcd.print("0");
lcd.print(dayOfMonth, DEC);
lcd.print("/");
if (month < 10) lcd.print("0");
lcd.print(month, DEC);
lcd.print("/");
lcd.print("20");
if (year < 10) lcd.print("0");
lcd.print(year, DEC);
lcd.print(" ");
lcd.setCursor(0,2);
if (Tiempo > InicioAmanecerBlancas&& Tiempo < FinAmanecerBlancas) lcd.print ("AMANECER-BLANCAS");
if (Tiempo > FinAmanecerBlancas&& Tiempo < InicioAnochecerBlancas) lcd.print ("PLENUM-BLANCAS");
if (Tiempo >= InicioAnochecerBlancas&& Tiempo <= FinAnochecerBlancas) lcd.print ("ANOCHECER-BLANCAS");
if (Tiempo > FinAnochecerBlancas|| Tiempo < InicioAmanecerBlancas) lcd.print ("ZENIT-BLANCAS");

lcd.setCursor(10, 1);
if (Tiempo >= InicioAmanecerBlancas&& Tiempo <= FinAnochecerBlancas)//decimos al rele el encendido y apagado//
{
digitalWrite(PinBlancas, LOW);
lcd.print(" "); lcd.write(0);
lcd.write(1);
}
else
{
digitalWrite(PinBlancas, HIGH);
lcd.print(" "); lcd.write(3);
lcd.write(4);
}
delay(1000);
}
void Mx(int minutos, int horas) {
int MxMixtas;
int InicioAmanecerMixtas=900;//15:00//
int FinAmanecerMixtas=960;//16:00//
int InicioAnochecerMixtas=1200;//20:00//
int FinAnochecerMixtas=1260;//21:00//
int MaxMixtas=75;
int PorcentMixtas;

int Tiempo;
Tiempo=horas*60+minutos;
// if (Tiempo < 60)Tiempo=Tiempo+1440;
// Tiempo=Tiempo-60; //Horario de Invierno
//################################# MIXTAS ###################################
//Noche
if (Tiempo < InicioAmanecerMixtas) MxMixtas=0;
//Amanecer
if (Tiempo >= InicioAmanecerMixtas && Tiempo <= FinAmanecerMixtas) MxMixtas=(Tiempo-InicioAmanecerMixtas)*10;
//Dia
if (Tiempo > FinAmanecerMixtas && Tiempo < InicioAnochecerMixtas)MxMixtas=MaxMixtas;
//Anochecer
if (Tiempo >= InicioAnochecerMixtas && Tiempo <= FinAnochecerMixtas) MxMixtas=(FinAnochecerMixtas-Tiempo)*10;
//Control
if( MxMixtas <0) MxMixtas=0;
if( MxMixtas >MaxMixtas) MxMixtas=MaxMixtas;
analogWrite(10, MxMixtas);
PorcentMixtas=Porcent(MxMixtas,255)*2;

lcd.clear();
lcd.setCursor(0,0);
lcd.print("ILUMINACION:");
lcd.setCursor(0,3);
if (hour < 10) lcd.print("0");
lcd.print(hour, DEC);
lcd.print(":");
if (minute < 10) lcd.print("0");
lcd.print(minute, DEC);
lcd.setCursor(0,1);
lcd.print("MIXTAS:");
if (PorcentMixtas< 10);
lcd.print(PorcentMixtas);
lcd.print("%");
lcd.print(" ");
lcd.setCursor(6,3);
if (dayOfMonth < 10) lcd.print("0");
lcd.print(dayOfMonth, DEC);
lcd.print("/");
if (month < 10) lcd.print("0");
lcd.print(month, DEC);
lcd.print("/");
lcd.print("20");
if (year < 10) lcd.print("0");
lcd.print(year, DEC);
lcd.print(" ");
lcd.setCursor(0,2);
if (Tiempo > InicioAmanecerMixtas&& Tiempo < FinAmanecerMixtas) lcd.print ("AMANECER-MIXTAS");
if (Tiempo > FinAmanecerMixtas&& Tiempo < InicioAnochecerMixtas) lcd.print ("PLENUM-MIXTAS");
if (Tiempo >= InicioAnochecerMixtas&& Tiempo <= FinAnochecerMixtas) lcd.print ("ANOCHECER-MIXTAS");
if (Tiempo > FinAnochecerMixtas|| Tiempo < InicioAmanecerMixtas) lcd.print ("ZENIT-MIXTAS");
lcd.setCursor(10, 1);
if (Tiempo >= InicioAmanecerMixtas&& Tiempo <= FinAnochecerMixtas)//decimos al rele el encendido y apagado//
{
digitalWrite(PinMixtas, LOW);
lcd.print(" ");
lcd.write(0);
lcd.write(1);
}
else
{
digitalWrite(PinMixtas, HIGH);
lcd.print(" ");lcd.write(3);
lcd.write(4);
}
delay(1000);
}/*
void Extras(int minutos, int horas) {

int ExtrasUva;
int InicioAmanecerUva=615;//10:15//
int FinAmanecerUva=675;//11:15///
int InicioAnochecerUva=1220;//21:00//
int FinAnochecerUva=1280;//22:00//
int MaxUva=250;
int PorcentUva;


int Tiempo;
Tiempo=horas*60+minutos;
// if (Tiempo < 60)Tiempo=Tiempo+1440;
// Tiempo=Tiempo-60; //Horario de Invierno
//#################################uva ###################################
if (Tiempo < InicioAmanecerUva ) ExtrasUva =0;
//Amanecer
if (Tiempo >= InicioAmanecerUva && Tiempo <= FinAmanecerUva ) ExtrasUva=(Tiempo-InicioAmanecerUva)*11;
//Dia
if ((Tiempo > FinAmanecerUva) && (Tiempo < InicioAnochecerUva )) ExtrasUva =MaxUva;
//Anochecer
if (Tiempo >= InicioAnochecerUva && Tiempo <= FinAnochecerUva) ExtrasUva=(FinAnochecerUva-Tiempo)*11;
//Control
if( ExtrasUva <0) ExtrasUva=0;
if( ExtrasUva >MaxUva) ExtrasUva =MaxUva;

analogWrite(11, ExtrasUva);

PorcentUva =Porcent(ExtrasUva ,255)*2;

lcd.clear();
lcd.setCursor(0,0);
lcd.print("LUZ-EXTRA");
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("U-VA:");
if (PorcentUva < 10);
lcd.print(PorcentUva);
lcd.print("%");
lcd.print(" ");
lcd.setCursor(0,3);
if (hour < 10) lcd.print("0");
lcd.print(hour, DEC);
lcd.print(":");
if (minute < 10) lcd.print("0");
lcd.print(minute, DEC);
lcd.setCursor(6,3);
if (dayOfMonth < 10) lcd.print("0");
lcd.print(dayOfMonth, DEC);
lcd.print("/");
if (month < 10) lcd.print("0");
lcd.print(month, DEC);
lcd.print("/");
lcd.print("20");
if (year < 10) lcd.print("0");
lcd.print(year, DEC);
lcd.setCursor(0,2);
if (Tiempo > InicioAmanecerUva&& Tiempo < FinAmanecerUva) lcd.print ("AMANECER-UVA");
if (Tiempo > FinAmanecerUva&& Tiempo < InicioAnochecerUva) lcd.print ("PLENUM-UVA");
if (Tiempo >= InicioAnochecerUva&& Tiempo <= FinAnochecerUva) lcd.print ("ANOCHECER-UVA");
if (Tiempo > FinAnochecerUva|| Tiempo < InicioAmanecerUva) lcd.print ("ZENIT-UVA");


lcd.setCursor(10,1);
if (Tiempo >= InicioAmanecerUva && Tiempo <= FinAnochecerUva )//decimos al rele el encendido y apagado//
{
digitalWrite(PinUva, LOW);
lcd.write(0);
lcd.write(1);

}
else
{
digitalWrite(PinUva, HIGH);
lcd.write(3);
lcd.write(4);

lcd.setCursor(10,0);


}
delay(Retraso);
}*/
void Pu(int minutos, int horas) {
int PuPurple;
int InicioAmanecerPurple=900;//15:00//
int FinAmanecerPurple=960;//16:00//
int InicioAnochecerPurple=1140;//21:00//
int FinAnochecerPurple=1200;//22:00//
int MaxPurple=100;
int PorcentPurple;
int PasoPurpleAM=MaxPurple/(FinAmanecerPurple-InicioAmanecerPurple);
int PasoPurplePM=MaxPurple/(FinAnochecerPurple-InicioAnochecerPurple);


int Tiempo;
Tiempo=horas*60+minutos;
// if (Tiempo < 60)Tiempo=Tiempo+1440;
// Tiempo=Tiempo-60; //Horario de Invierno

//#################################purple ###################################
if (Tiempo < InicioAmanecerPurple) PuPurple =0;
//Amanecer
if (Tiempo >= InicioAmanecerPurple && Tiempo <= FinAmanecerPurple ) PuPurple =(Tiempo-InicioAmanecerPurple)*PasoPurpleAM;
//Dia
if ((Tiempo > FinAmanecerPurple) && (Tiempo < InicioAnochecerPurple)) PuPurple =MaxPurple ;
//Anochecer
if (Tiempo >= InicioAnochecerPurple && Tiempo <= FinAnochecerPurple ) PuPurple =(FinAnochecerPurple-Tiempo)*PasoPurplePM;
//Control
if( PuPurple <0) PuPurple=0;
if( PuPurple >MaxPurple )PuPurple =MaxPurple ;

analogWrite(12, PuPurple);

PorcentPurple =Porcent(PuPurple,255)*2;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("LUZ-EXTRA:");
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("PURPLE:");
if (PorcentPurple < 10);
lcd.print(PorcentPurple);
lcd.print("%");
lcd.print(" ");
lcd.setCursor(0,3);
if (hour < 10) lcd.print("0");
lcd.print(hour, DEC);
lcd.print(":");
if (minute < 10) lcd.print("0");
lcd.print(minute, DEC);
lcd.setCursor(6,3);
if (dayOfMonth < 10) lcd.print("0");
lcd.print(dayOfMonth, DEC);
lcd.print("/");
if (month < 10) lcd.print("0");
lcd.print(month, DEC);
lcd.print("/");
lcd.print("20");
if (year < 10) lcd.print("0");
lcd.print(year, DEC);
lcd.setCursor(0,2);
if (Tiempo > InicioAmanecerPurple&& Tiempo < FinAmanecerPurple) lcd.print ("AMANECER-PURPLE");
if (Tiempo > FinAmanecerPurple&& Tiempo < InicioAnochecerPurple) lcd.print ("PLENUM-PURPLE");
if (Tiempo >= InicioAnochecerPurple&& Tiempo <= FinAnochecerPurple) lcd.print ("ANOCHECER-PURPLE");
if (Tiempo > FinAnochecerPurple|| Tiempo < InicioAmanecerPurple) lcd.print ("ZENIT-PURPLE");

lcd.setCursor(10,1);
if (Tiempo >= InicioAmanecerPurple && Tiempo <= FinAnochecerPurple )//decimos al rele el encendido y apagado//
{
digitalWrite(PinPurple, LOW);
lcd.print(" "); lcd.write(0);
lcd.write(1);

}
else
{
digitalWrite(PinPurple, HIGH);
lcd.print(" ");lcd.write(3);
lcd.write(4);

}
delay(1000);
}

void Temperatura(int minutos, int horas)
{
float T1;
float T2;
float T3;
float T4;
sensores.requestTemperatures();
T1=sensores.getTempCByIndex(0)+1;
T2=sensores.getTempCByIndex(1)+1;
T3=sensores.getTempCByIndex(2)+1;
T4=sensores.getTempCByIndex(3)+1;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("VENTIL: ");
lcd.println(T4,2);
lcd.print((char)223);
lcd.setCursor(0,1);
lcd.print("CENTIL: ");
lcd.println(T1,2);
lcd.print((char)223);
lcd.setCursor(0,2);
lcd.print("TERMO: ");
lcd.println(T2,2);
lcd.print((char)223);
lcd.setCursor(0,3);
lcd.print("COOLER: ");
lcd.println(T3,2);
lcd.print((char)223);
if (T2 < 24) EstadoCalent=1;
if (T2 > 25) EstadoCalent=0;
if (T1 < 32) EstadoVentil=0;
if (T1 > 33) EstadoVentil=1;
if (T4 < 32) EstadoCentil=0;
if (T4 > 33) EstadoCentil=1;
if (T3 < 25) EstadoCooler=0;
if (T3 > 26) EstadoCooler=1;
lcd.setCursor(14, 3);
if(EstadoCooler==1 ){
digitalWrite(PinCooler, LOW);
lcd.print(" ");lcd.write(6);lcd.write(5);
}
else
{
digitalWrite(PinCooler, HIGH);
lcd.print(" ");lcd.write(6);
}
lcd.setCursor(14, 2);
if(EstadoCalent==1 ){
digitalWrite(PinCalentador, LOW);
lcd.print(" ");lcd.write(6);lcd.write(5);
}
else
{
digitalWrite(PinCalentador, HIGH);
lcd.print(" ");lcd.write(6);
}
lcd.setCursor(14, 1);
if(EstadoVentil==1 )//decimos al rele el encendido y apagado//
{
digitalWrite(PinVentilador, LOW);
lcd.print(" ");lcd.write(6);lcd.write(5);
}
else
{
digitalWrite(PinVentilador, HIGH);
lcd.print(" ");lcd.write(6);
}
lcd.setCursor(14, 0);
if(EstadoCentil==0 )//decimos al rele el encendido y apagado//
{
digitalWrite(PinCentilador, LOW);
lcd.print(" ");lcd.write(6);
}
else
{
digitalWrite(PinCentilador, HIGH);
lcd.print(" ");lcd.write(6);lcd.write(5);
}

delay(Retraso);
}


void Fuente(int minutos, int horas) {
int Fuente;
int InicioFuente=660;
int FinFuente=1380;

int Tiempo;
Tiempo=horas*60+minutos;
if (Tiempo < InicioFuente ) Fuente=0;
//Amanecer
if (Tiempo >= InicioFuente && Tiempo <= FinFuente) Fuente=(Tiempo,InicioFuente,FinFuente);

lcd.clear();
lcd.setCursor(0,0);
lcd.print("ALIMENTACION:");
lcd.print(" ");
if (hour < 10) lcd.print("0");
lcd.print(hour, DEC);
lcd.print(":");
if (minute < 10) lcd.print("0");
lcd.print(minute, DEC);
lcd.setCursor(10,3);
lcd.setCursor(0,3);
if (dayOfMonth < 10) lcd.print("0");
lcd.print(dayOfMonth, DEC);
lcd.print("/");
if (month < 10) lcd.print("0");
lcd.print(month, DEC);
lcd.print("/");
lcd.print("20");
if (year < 10) lcd.print("0");
lcd.print(year, DEC);
lcd.print(" ");
if (Tiempo >= InicioFuente && Tiempo <= FinFuente)//decimos al rele el encendido y apagado//
{
digitalWrite(PinFuente, LOW);
lcd.setCursor(0,1);
lcd.print("FUENTE 48V-ON:");
lcd.write(0);
lcd.write(1);
}
else
{
digitalWrite(PinFuente, HIGH);
lcd.setCursor(0,1);
lcd.print("FUENTE 48V-OFF:");
lcd.write(3);
lcd.write(4);
}
delay(1000);
}
void Batery(int minutos, int horas) {
int Batery;
int InicioBatery=660;
int FinBatery=1399;


int Tiempo;
Tiempo=horas*60+minutos;
//BATERY//
if (Tiempo < InicioBatery ) Batery=0;
//Amanecer
if (Tiempo >= InicioBatery && Tiempo <= FinBatery) Batery=(Tiempo,InicioBatery,FinBatery);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("ALIMENTACION");
lcd.print(" ");
if (hour < 10) lcd.print("0");
lcd.print(hour, DEC);
lcd.print(":");
if (minute < 10) lcd.print("0");
lcd.print(minute, DEC);
lcd.setCursor(10,3);
lcd.setCursor(0,3);
if (dayOfMonth < 10) lcd.print("0");
lcd.print(dayOfMonth, DEC);
lcd.print("/");
if (month < 10) lcd.print("0");
lcd.print(month, DEC);
lcd.print("/");
lcd.print("20");
if (year < 10) lcd.print("0");
lcd.print(year, DEC);
lcd.print(" ");
if (Tiempo >= InicioBatery && Tiempo <= FinBatery)//decimos al rele el encendido y apagado//
{
digitalWrite(PinBatery, LOW);
lcd.setCursor(0,1);
lcd.print("FUENTE 12V-ON:");
lcd.write(0);
lcd.write(1);
}
else
{
digitalWrite(PinBatery, HIGH);
lcd.setCursor(0,1);
lcd.print("FUENTE 12V-OFF:");
lcd.write(3);
lcd.write(4);
}
delay(1000);
}


int Porcent(int Valor, int Maximo)
{
int result;
result=Valor*50;
result=result/Maximo;
return result;
}
Volver arriba Ir abajo
Angel
Betta
Betta


Mensajes : 354
Fecha de inscripción : 23/01/2011
Edad : 49
Localización : Arre- Pamplona

MensajeTema: Re: pantalla casera y arduino   Jue 06 Mar 2014, 02:00

acojonao me has dejao con este ultimo .... joer con el marino ese......aun estara pensando en meter peristalticas jejejejeje
muchas gracias majo.....mañana me lio en serio con los sensores de Tª.
Volver arriba Ir abajo
Angel
Betta
Betta


Mensajes : 354
Fecha de inscripción : 23/01/2011
Edad : 49
Localización : Arre- Pamplona

MensajeTema: Re: pantalla casera y arduino   Dom 09 Mar 2014, 00:54

bueno ya va, poco a poco pero ya va saliendo Very Happy Very Happy 



Volver arriba Ir abajo
ficusrex
Guppy
Guppy
avatar

Mensajes : 222
Fecha de inscripción : 29/09/2013
Edad : 51

MensajeTema: Re: pantalla casera y arduino   Dom 09 Mar 2014, 04:02

wakaaaaa
Volver arriba Ir abajo
anape
Guppy
Guppy
avatar

Mensajes : 215
Fecha de inscripción : 15/09/2011
Edad : 46
Localización : Barañain

MensajeTema: Re: pantalla casera y arduino   Dom 09 Mar 2014, 12:30

jjajajja que chulada
Volver arriba Ir abajo
Angel
Betta
Betta


Mensajes : 354
Fecha de inscripción : 23/01/2011
Edad : 49
Localización : Arre- Pamplona

MensajeTema: Re: pantalla casera y arduino   Dom 09 Mar 2014, 18:01

bueno una explicacion rapida, el IDE de arduino que uso es la version 1.05(creo que la ultima)
de momento controlo 4 reles por horario , muestro en pantalla el estado de los reles(SI, encendido-NO, apagado), la hora y dos temperaturas.
la pantalla no da para meter mas cosas (20x4), estoy probando todavia ,pero fijo que tendre que poner menu y submenus (vamos una pantalla de inicio y que esta me mande a otras con los datos que hagan falta) ......
una pequeña lluvia de ideas no me vendria mal para lo que muestre en las pantallas y lo que haga.
animaros y gracias
Volver arriba Ir abajo
Angel
Betta
Betta


Mensajes : 354
Fecha de inscripción : 23/01/2011
Edad : 49
Localización : Arre- Pamplona

MensajeTema: Re: pantalla casera y arduino   Dom 09 Mar 2014, 19:47

ficusrex prueba con ordenar las librerias y defines de otra manera, a mi me dio problemas hasta que los organice asi, si movia por ejemplo el define del bus me daba fallo
inicio del programa

#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
#include <RTClib.h>
#define ONE_WIRE_BUS_PIN 2
RTC_DS1307 RTC;
OneWire oneWire(ONE_WIRE_BUS_PIN);
DallasTemperature sensors(&oneWire);
DeviceAddress Temp1 = { 0x28, 0x80, 0x37, 0x58, 0x05, 0x00, 0x00, 0xD0 };
DeviceAddress Temp2 = { 0x28, 0x8A, 0x4C, 0x58, 0x05, 0x00, 0x00, 0x02 };

#define rele1 5
#define rele2 6
#define rele3 7
#define rele4 8
Volver arriba Ir abajo
Angel
Betta
Betta


Mensajes : 354
Fecha de inscripción : 23/01/2011
Edad : 49
Localización : Arre- Pamplona

MensajeTema: Re: pantalla casera y arduino   Miér 12 Mar 2014, 00:52

joder.....3 dias atascado por 2 = que me faltaban por poner confused confused 
Volver arriba Ir abajo
Angel
Betta
Betta


Mensajes : 354
Fecha de inscripción : 23/01/2011
Edad : 49
Localización : Arre- Pamplona

MensajeTema: Re: pantalla casera y arduino   Jue 27 Mar 2014, 01:55

buenoooooo, aun sigo vivo.....no he cascao programando Very Happy Very Happy 
digamos que voy al 80% del invento aunque no muy conforme con lo que estoy haciendo
digamos 4 menus distintos, 3 bloques de luces, 3 dimeos, luz de luna y 2 sensores de temperatura.
me falta aplicar las temperaturas a unos ventiladores controlando la velocidad de los mismos (NPI)y poder cambiar la hora de encendido y apagado desde el teclado matricial ( me tiene loco) .
     



Volver arriba Ir abajo
ficusrex
Guppy
Guppy
avatar

Mensajes : 222
Fecha de inscripción : 29/09/2013
Edad : 51

MensajeTema: Re: pantalla casera y arduino   Vie 15 Ago 2014, 00:24

Que grande este Ángel. Hoy hemos estado viendo cosas que se pueden hacer con arduino y ha hecho un programa para amanecer/atardecer en el acuario. Yo contentisimo de aprender. Hemos compartido un rato de electronica y seguimos en un proyecto para que todos podamos tener un controlador en el acuario a un precio muy, muy muy razonable....ole ole ole
Volver arriba Ir abajo
Angel
Betta
Betta


Mensajes : 354
Fecha de inscripción : 23/01/2011
Edad : 49
Localización : Arre- Pamplona

MensajeTema: Re: pantalla casera y arduino   Vie 15 Ago 2014, 00:40

la verdad que muuuu agusto , un rato muy agradable, arduinos, led, transformadores, dimeos, gambas, abonos y creo que mas.
jue pos no tenemos rollo los dos Razz Razz 
y como diria el maestro ficus Basketball  ..."dominaremos el mundo"  Very Happy 
Volver arriba Ir abajo
anape
Guppy
Guppy
avatar

Mensajes : 215
Fecha de inscripción : 15/09/2011
Edad : 46
Localización : Barañain

MensajeTema: Re: pantalla casera y arduino   Vie 15 Ago 2014, 15:50

Sois unos maquinas
Volver arriba Ir abajo
Contenido patrocinado




MensajeTema: Re: pantalla casera y arduino   

Volver arriba Ir abajo
 
pantalla casera y arduino
Volver arriba 
Página 2 de 2.Ir a la página : Precedente  1, 2

Permisos de este foro:No puedes responder a temas en este foro.
 :: ÁREA TÉCNICA :: Bricolaje-
Cambiar a: