Buenas noches a todos
Estoy inmerso en un proyecto para controlar elementos de un vehículo con dos pantallas Nextion, he usado un Arduino mega, en un principio iba a usar dos, pero después de darle bastantes vueltas y aprender un poco sobre como controlar las pantallas, me decidí por utilizar solo un Arduino mega ya que tiene varios puertos series
La comunicación con las pantallas es a través de los puertos seriales, para la pantalla trasera he utilizado las librerías oficiales de Nextion, y para la la delantera, como prácticamente tiene que tener las mismas funciones, doy las ordenes al puerto serie3 sin librerías, y capturo las ordenes de la Nextion con un String, lo tengo mas o menos, pero me parece que va un poco lento, no se si son errores míos, porque hace mucho que utilizaba el Arduino o es que no da mas de si
el Arduino lleva conectados 3 sensores de temperatura (Termistores NTC), dos divisores de tensión para hacer lectura de dos baterías y luego unas cuantas entradas que condicionan algún elemento.
Si alguien me puede decir que puedo hacer para que vaya todo mas fluido, porque cuando le doy a encender algo, responde mas o menos, pero por ejemplo, cuando quito el contacto, tarda como 3 o 4 segundos y hacer lo que tiene que hacer (mandar un orden a la pantalla delantera).
adjunto el código, gracias por adelantado.
#include "Nextion.h" // Incluir la libreria
#define CONTACTO 2 // Definir Pines a Utilizar (Entrada)
#define SENAL_ATRAS 3 // Definir Pines a Utilizar (Entrada)
#define PRIORITARIAS 4 // Definir Pines a Utilizar (Entrada)
#define TEMPERATURA_CAB A1 // Definir Pines a Utilizar (Entrada)
#define TEMPERATURA_ASIST A2 // Definir Pines a Utilizar (Entrada)
#define TEMPERATURA_EXT A3 // Definir Pines a Utilizar (Entrada)
#define VOLTIMETRO_CAR A4 // Definir Pines a Utilizar (Entrada)
#define VOLTIMETRO_AUX A5 // Definir Pines a Utilizar (Entrada)
#define PENUMBRA 31 // Definir Pines a Utilizar (Salida)
#define PLAFONES 32 // Definir Pines a Utilizar (Salida)
#define HALOGENOS 33 // Definir Pines a Utilizar (Salida)
#define CONVERTIDOR 34 // Definir Pines a Utilizar (Salida)
#define CALEFACCION 35 // Definir Pines a Utilizar (Salida)
#define AIRE 36 // Definir Pines a Utilizar (Salida)
#define VELOCIDAD1 37 // Definir Pines a Utilizar (Salida)
#define VELOCIDAD2 38 // Definir Pines a Utilizar (Salida)
#define VELOCIDAD3 39 // Definir Pines a Utilizar (Salida)
#define VENTILADOR 40 // Definir Pines a Utilizar (Salida)
#define EXTRACTOR 41 // Definir Pines a Utilizar (Salida)
#define MAPAS 42 // Definir Pines a Utilizar (Salida)
#define MARCHA_ATRAS 43 // Definir Pines a Utilizar (Salida)
int EstadoCalefaccion; // Declaracion de Variables Globales
int EstadoAire; // Declaracion de Variables Globales
int EstadoVelocidad1; // Declaracion de Variables Globales
int EstadoVelocidad2; // Declaracion de Variables Globales
int EstadoVelocidad3; // Declaracion de Variables Globales
int EstadoVehiculo; // Declaracion de Variables Globales
int EstadoMarchaAtras = 0; // Declaracion de Variables Globales
int PulsacionMarchaAtras = 0; // Declaracion de Variables Globales
int Faros = 0; // Declaracion de Variables Globales
float VOutCar = 0; // Declaracion de Variables Globales
float VInCar = 0; // Declaracion de Variables Globales
float R1Car = 99500.0;
float R2Car = 9900.0;
float ValorCar = 0;
float VOutAux = 0; // Declaracion de Variables Globales
float VInAux = 0; // Declaracion de Variables Globales
float R1Aux = 99500.0;
float R2Aux = 9900.0;
float ValorAux = 0;
unsigned long ContadorVolt = 0;
float R1 = 15500.0; // resistencia fija del divisor de tension
float Asist0 = 1.133582007e-03, Asist1 = 2.331668630e-04, Asist2 = 0.9328901740e-07;
float Ext0 = 1.133582007e-03, Ext1 = 2.331668630e-04, Ext2 = 0.9328901740e-07;
float Cab0 = 1.133582007e-03, Cab1 = 2.331668630e-04, Cab2 = 0.9328901740e-07;
unsigned long Contadortemp = 0;
int V3;
float logR2Ext, R2Ext, TEMPERATURAExt;
int V2; // resistencia fija del divisor de tension
float logR2Asist, R2Asist, TEMPERATURAAsist;
int V1; // resistencia fija del divisor de tension
float logR2Cab, R2Cab, TEMPERATURACab;
NexButton NPenum = NexButton(0,3,"NPenum"); // Declarar el Objeto del Tipo de Componente
NexButton NPlafon = NexButton(0,4,"NPlafon"); // Declarar el Objeto del Tipo de Componente
NexButton NHalog = NexButton(0,5,"NHalog"); // Declarar el Objeto del Tipo de Componente
NexCrop NPenumTest = NexCrop(0,3,"NPenum"); // Declarar el Objeto del Tipo de Componente
NexCrop NPlafonTest = NexCrop(0,4,"NPlafon"); // Declarar el Objeto del Tipo de Componente
NexCrop NHalogTest = NexCrop(0,5,"NHalog"); // Declarar el Objeto del Tipo de Componente
NexButton NVolverClima = NexButton(1,8,"NVolverClima"); // Declarar el Objeto del Tipo de Componente
NexButton NVolverAjustes = NexButton(2,1,"NVolverAjustes"); // Declarar el Objeto del Tipo de Componente
NexButton NVolverBrillo = NexButton(3,2,"NVolverBrillo"); // Declarar el Objeto del Tipo de Componente
NexButton N230V = NexButton(0,6,"N230V"); // Declarar el Objeto del Tipo de Componente
NexCrop N230VTest = NexCrop(0,6,"N230V"); // Declarar el Objeto del Tipo de Componente
NexButton NCalor = NexButton(0,2,"NCalor"); // Declarar el Objeto del Tipo de Componente
NexCrop NCalorTest = NexCrop(0,2,"NCalor"); // Declarar el Objeto del Tipo de Componente
NexButton NCalor1 = NexButton(1,2,"NCalor1"); // Declarar el Objeto del Tipo de Componente
NexCrop NCalor1Test = NexCrop(1,2,"NCalor1"); // Declarar el Objeto del Tipo de Componente
NexButton NAire = NexButton(0,1,"NAire"); // Declarar el Objeto del Tipo de Componente
NexCrop NAireTest = NexCrop(0,1,"NAire"); // Declarar el Objeto del Tipo de Componente
NexButton NAire1 = NexButton(1,1,"NAire1"); // Declarar el Objeto del Tipo de Componente
NexCrop NAire1Test = NexCrop(1,1,"NAire1"); // Declarar el Objeto del Tipo de Componente
NexButton NVelo1 = NexButton(1,3,"NVelo1"); // Declarar el Objeto del Tipo de Componente
NexCrop NVelo1Test = NexCrop(1,3,"NVelo1"); // Declarar el Objeto del Tipo de Componente
NexButton NVelo2 = NexButton(1,4,"NVelo2"); // Declarar el Objeto del Tipo de Componente
NexCrop NVelo2Test = NexCrop(1,4,"NVelo2"); // Declarar el Objeto del Tipo de Componente
NexButton NVelo3 = NexButton(1,5,"NVelo3"); // Declarar el Objeto del Tipo de Componente
NexCrop NVelo3Test = NexCrop(1,5,"NVelo3"); // Declarar el Objeto del Tipo de Componente
NexButton NClima = NexButton(0,35,"NClima"); // Declarar el Objeto del Tipo de Componente
NexButton NVentila = NexButton(1,6,"NVentila"); // Declarar el Objeto del Tipo de Componente
NexCrop NVentilaTest = NexCrop(1,6,"NVentila"); // Declarar el Objeto del Tipo de Componente
NexButton NExtractor = NexButton(1,7,"NExtractor"); // Declarar el Objeto del Tipo de Componente
NexCrop NExtractorTest = NexCrop(1,7,"NExtractor"); // Declarar el Objeto del Tipo de Componente
NexCrop NCarTest = NexCrop(0,8,"NCarTest"); // Declarar el Objeto del Tipo de Componente
NexCrop NAuxTest = NexCrop(0,7,"NAuxTest"); // Declarar el Objeto del Tipo de Componente
NexTouch *nex_listen_list[]= // Registrar los Objetos en una lista de Eventos Tactiles
{
&NPenum,
&NPlafon,
&NHalog,
&NVolverClima,
&NVolverAjustes,
&NVolverBrillo,
&N230V,
&NCalor,
&NCalor1,
&NAire,
&NAire1,
&NVelo1,
&NVelo2,
&NVelo3,
&NClima,
&NVentila,
&NExtractor,
NULL
};
void setup()
{
int EstadoCalefaccion=LOW;
int EstadoAire=LOW;
int EstadoVelocidad1=LOW;
int EstadoVelocidad2=LOW;
int EstadoVelocidad3=LOW;
nexInit(); // Inicializar la conexion Serie
Serial3.begin(9600); // inicializa comunicacion serie a 9600 bps
pinMode(CONTACTO, INPUT); // Definir los Pines como salida o entrada
pinMode(SENAL_ATRAS, INPUT); // Definir los Pines como salida o entrada
pinMode(PRIORITARIAS, INPUT); // Definir los Pines como salida o entrada
pinMode(PENUMBRA, OUTPUT); // Definir los Pines como salida o entrada
pinMode(PLAFONES, OUTPUT); // Definir los Pines como salida o entrada
pinMode(HALOGENOS, OUTPUT); // Definir los Pines como salida o entrada
pinMode(CONVERTIDOR, OUTPUT); // Definir los Pines como salida o entrada
pinMode(CALEFACCION, OUTPUT); // Definir los Pines como salida o entrada
pinMode(AIRE, OUTPUT); // Definir los Pines como salida o entrada
pinMode(VELOCIDAD1, OUTPUT); // Definir los Pines como salida o entrada
pinMode(VELOCIDAD2, OUTPUT); // Definir los Pines como salida o entrada
pinMode(VELOCIDAD3, OUTPUT); // Definir los Pines como salida o entrada
pinMode(VENTILADOR, OUTPUT); // Definir los Pines como salida o entrada
pinMode(EXTRACTOR, OUTPUT); // Definir los Pines como salida o entrada
pinMode(MAPAS, OUTPUT); // Definir los Pines como salida o entrada
pinMode(MARCHA_ATRAS, OUTPUT); // Definir los Pines como salida o entrada
digitalWrite(PENUMBRA,LOW); // Inicializamos Salidas a 0
digitalWrite(PLAFONES,LOW); // Inicializamos Salidas a 0
digitalWrite(HALOGENOS,LOW); // Inicializamos Salidas a 0
digitalWrite(CONVERTIDOR,LOW); // Inicializamos Salidas a 0
digitalWrite(CALEFACCION,LOW); // Inicializamos Salidas a 0
digitalWrite(AIRE,LOW); // Inicializamos Salidas a 0
digitalWrite(VELOCIDAD1,LOW); // Inicializamos Salidas a 0
digitalWrite(VELOCIDAD2,LOW); // Inicializamos Salidas a 0
digitalWrite(VELOCIDAD3,LOW); // Inicializamos Salidas a 0
digitalWrite(VENTILADOR,LOW); // Inicializamos Salidas a 0
digitalWrite(EXTRACTOR,LOW); // Inicializamos Salidas a 0
digitalWrite(MAPAS,LOW); // Inicializamos Salidas a 0
digitalWrite(MARCHA_ATRAS,LOW); // Inicializamos Salidas a 0
Voltimetro_Aux();
Voltimetro_Car();
Temperatura_Cabina();
Temperatura_Asistencial();
Temperatura_Exterior();
Actualiza_Iconos();
Actualiza_Iconos_Clima();
// Actualiza_Iconos_Principal();
NPenum.attachPush(Control_Penumbra);
NPlafon.attachPush(Control_Plafones);
NHalog.attachPush(Control_Halogenos);
N230V.attachPush(Control_Convertidor);
NCalor.attachPush(Control_Calefaccion);
NCalor1.attachPush(Control_Calefaccion_Clima);
NAire.attachPush(Control_Aire);
NAire1.attachPush(Control_Aire_Clima);
NVelo1.attachPush(Control_Velocidad1);
NVelo2.attachPush(Control_Velocidad2);
NVelo3.attachPush(Control_Velocidad3);
NVolverBrillo.attachPush(Actualiza_Iconos);
NVolverAjustes.attachPush(Actualiza_Iconos);
NVolverClima.attachPush(Actualiza_Iconos);
NClima.attachPush(Actualiza_Iconos_Clima);
NVentila.attachPush(Control_Ventilador);
NExtractor.attachPush(Control_Extractor);
}
void loop()
{
EstadoVehiculo=digitalRead(CONTACTO);
if ((EstadoVehiculo == HIGH)&&(Faros==0))
{
Serial3.print("NContactoTest.picc=");
Serial3.print(1);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
Faros=1;
}
if ((EstadoVehiculo == LOW)&&(Faros==1))
{
Serial3.print("NContactoTest.picc=");
Serial3.print(0);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
Faros=0;
}
if ((EstadoVehiculo == LOW) && ((EstadoAire == HIGH) || (EstadoCalefaccion == HIGH)))
{
Control_Clima_Contacto();
}
nexLoop(nex_listen_list);
Pantalla_Delantera ();
if ((PulsacionMarchaAtras == 1)||(PulsacionMarchaAtras == 2))
{
Actualiza_Marcha_Atras();
}
Contadortemp = Contadortemp + 1;
ContadorVolt = ContadorVolt + 1;
if (Contadortemp>1000000)
{
Temperatura_Exterior();
Temperatura_Asistencial();
Temperatura_Cabina();
Contadortemp=0;
}
if (ContadorVolt>500000)
{
Voltimetro_Car();
Voltimetro_Aux();
ContadorVolt = 0;
}
}
void Pantalla_Delantera()
{
if (Serial3.available()>0)
{
String Cadena = Serial3.readStringUntil('ZZZ');
if (Cadena == "NMapasP")
{
Control_Mapas();
}
if (Cadena == "NAtrasP")
{
Control_Marcha_Atras();
}
if (Cadena == "NTodasP")
{
Cadena="";
}
if (Cadena == "N230VP")
{
Control_Convertidor();
}
if (Cadena == "NCalorP")
{
Control_Calefaccion();
}
if (Cadena == "NAireP")
{
Control_Aire();
}
// if (Cadena == "NVolverP")
// {
// Actualiza_Iconos_Principal();
// }
}
}
void Control_Penumbra() //Realizar Una Funcion que se realice al presionar el boton
{
int EstadoPenumbra;
EstadoPenumbra = digitalRead(PENUMBRA);
if (EstadoPenumbra == LOW)
{
digitalWrite (PENUMBRA,HIGH);
NPenumTest.setPic(1);
}
else
{
digitalWrite (PENUMBRA,LOW);
NPenumTest.setPic(0);
}
}
void Control_Plafones() //Realizar Una Funcion que se realice al presionar el boton
{
int EstadoPlafones;
EstadoPlafones = digitalRead(PLAFONES);
if (EstadoPlafones == LOW)
{
digitalWrite (PLAFONES,HIGH);
NPlafonTest.setPic(1);
}
else
{
digitalWrite (PLAFONES,LOW);
NPlafonTest.setPic(0);
}
}
void Control_Halogenos() //Realizar Una Funcion que se realice al presionar el boton
{
int EstadoHalogenos;
EstadoHalogenos = digitalRead(HALOGENOS);
if (EstadoHalogenos == LOW)
{
digitalWrite (HALOGENOS,HIGH);
NHalogTest.setPic(1);
}
else
{
digitalWrite (HALOGENOS,LOW);
NHalogTest.setPic(0);
}
}
void Control_Convertidor() //Realizar Una Funcion que se realice al presionar el boton
{
int Estado230V;
Estado230V = digitalRead(CONVERTIDOR);
if (Estado230V == LOW)
{
digitalWrite (CONVERTIDOR,HIGH);
N230VTest.setPic(1);
Serial3.print("N230VP.picc=");
Serial3.print(1);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
}
else
{
digitalWrite (CONVERTIDOR,LOW);
N230VTest.setPic(0);
Serial3.print("N230VP.picc=");
Serial3.print(0);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
}
}
void Control_Calefaccion() //Realizar Una Funcion que se realice al presionar el boton
{
EstadoCalefaccion = digitalRead(CALEFACCION);
if ((EstadoCalefaccion == LOW)&&(EstadoVehiculo == HIGH))
{
NAireTest.setPic(0);
NCalorTest.setPic(1);
Serial3.print("NAireP.picc=");
Serial3.print(0);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.print("NCalorP.picc=");
Serial3.print(1);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
digitalWrite (AIRE,LOW);
digitalWrite (CALEFACCION,HIGH);
digitalWrite (VELOCIDAD1,HIGH);
digitalWrite (VELOCIDAD2,LOW);
digitalWrite (VELOCIDAD3,LOW);
EstadoCalefaccion = digitalRead(CALEFACCION);
}
else
{
NAireTest.setPic(0);
NCalorTest.setPic(0);
Serial3.print("NAireP.picc=");
Serial3.print(0);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.print("NCalorP.picc=");
Serial3.print(0);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
digitalWrite (CALEFACCION,LOW);
digitalWrite (VELOCIDAD1,LOW);
digitalWrite (VELOCIDAD2,LOW);
digitalWrite (VELOCIDAD3,LOW);
EstadoCalefaccion = digitalRead(CALEFACCION);
}
}
void Control_Aire() //Realizar Una Funcion que se realice al presionar el boton
{
EstadoAire = digitalRead(AIRE);
if ((EstadoAire == LOW)&&(EstadoVehiculo == HIGH))
{
NCalorTest.setPic(0);
NAireTest.setPic(1);
Serial3.print("NCalorP.picc=");
Serial3.print(0);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.print("NAireP.picc=");
Serial3.print(1);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
digitalWrite (CALEFACCION,LOW);
digitalWrite (AIRE,HIGH);
digitalWrite (VELOCIDAD1,HIGH);
digitalWrite (VELOCIDAD2,LOW);
digitalWrite (VELOCIDAD3,LOW);
EstadoAire = digitalRead(AIRE);
}
else
{
NAireTest.setPic(0);
NCalorTest.setPic(0);
Serial3.print("NAireP.picc=");
Serial3.print(0);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.print("NCalorP.picc=");
Serial3.print(0);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
digitalWrite (AIRE,LOW);
digitalWrite (VELOCIDAD1,LOW);
digitalWrite (VELOCIDAD2,LOW);
digitalWrite (VELOCIDAD3,LOW);
EstadoAire = digitalRead(AIRE);
}
}
void Control_Calefaccion_Clima() //Realizar Una Funcion que se realice al presionar el boton
{
EstadoCalefaccion = digitalRead(CALEFACCION);
if ((EstadoCalefaccion == LOW)&&(EstadoVehiculo == HIGH))
{
NCalor1Test.setPic(4);
Serial3.print("NCalorP.picc=");
Serial3.print(1);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
NAire1Test.setPic(3);
Serial3.print("NAireP.picc=");
Serial3.print(0);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
NVelo1Test.setPic(4);
NVelo2Test.setPic(3);
NVelo3Test.setPic(3);
digitalWrite (AIRE,LOW);
digitalWrite (CALEFACCION,HIGH);
digitalWrite (VELOCIDAD1,HIGH);
digitalWrite (VELOCIDAD2,LOW);
digitalWrite (VELOCIDAD3,LOW);
EstadoCalefaccion = digitalRead(CALEFACCION);
}
else
{
NAire1Test.setPic(3);
Serial3.print("NAireP.picc=");
Serial3.print(0);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
NCalor1Test.setPic(3);
Serial3.print("NCalorP.picc=");
Serial3.print(0);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
NVelo1Test.setPic(3);
NVelo2Test.setPic(3);
NVelo3Test.setPic(3);
digitalWrite (CALEFACCION,LOW);
digitalWrite (VELOCIDAD1,LOW);
digitalWrite (VELOCIDAD2,LOW);
digitalWrite (VELOCIDAD3,LOW);
EstadoCalefaccion = digitalRead(CALEFACCION);
}
}
void Control_Aire_Clima() //Realizar Una Funcion que se realice al presionar el boton
{
EstadoAire = digitalRead(AIRE);
if ((EstadoAire == LOW)&&(EstadoVehiculo == HIGH))
{
NCalor1Test.setPic(3);
Serial3.print("NCalorP.picc=");
Serial3.print(0);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
NAire1Test.setPic(4);
Serial3.print("NAireP.picc=");
Serial3.print(1);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
NVelo1Test.setPic(4);
NVelo2Test.setPic(3);
NVelo3Test.setPic(3);
digitalWrite (CALEFACCION,LOW);
digitalWrite (AIRE,HIGH);
digitalWrite (VELOCIDAD1,HIGH);
digitalWrite (VELOCIDAD2,LOW);
digitalWrite (VELOCIDAD3,LOW);
EstadoAire = digitalRead(AIRE);
}
else
{
NAire1Test.setPic(3);
Serial3.print("NAireP.picc=");
Serial3.print(0);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
NCalor1Test.setPic(3);
Serial3.print("NCalorP.picc=");
Serial3.print(0);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
NVelo1Test.setPic(3);
NVelo2Test.setPic(3);
NVelo3Test.setPic(3);
digitalWrite (AIRE,LOW);
digitalWrite (VELOCIDAD1,LOW);
digitalWrite (VELOCIDAD2,LOW);
digitalWrite (VELOCIDAD3,LOW);
EstadoAire = digitalRead(AIRE);
}
}
void Control_Clima_Contacto() //Realizar Una Funcion que se realice al presionar el boton
{
EstadoAire = digitalRead(AIRE);
EstadoCalefaccion = digitalRead (CALEFACCION);
if ((EstadoAire == HIGH)||(EstadoCalefaccion == HIGH))
{
NAireTest.setPic(0);
NCalorTest.setPic(0);
Serial3.print("NAireP.picc=");
Serial3.print(0);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.print("NCalorP.picc=");
Serial3.print(0);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
NAire1Test.setPic(3);
NCalor1Test.setPic(3);
NVelo1Test.setPic(3);
NVelo2Test.setPic(3);
NVelo3Test.setPic(3);
digitalWrite (AIRE,LOW);
digitalWrite (CALEFACCION,LOW);
digitalWrite (VELOCIDAD1,LOW);
digitalWrite (VELOCIDAD2,LOW);
digitalWrite (VELOCIDAD3,LOW);
EstadoAire = digitalRead(AIRE);
EstadoCalefaccion = digitalRead(CALEFACCION);
}
}
void Control_Velocidad1() //Realizar Una Funcion que se realice al presionar el boton
{
EstadoVelocidad1 = digitalRead(VELOCIDAD1);
EstadoAire = digitalRead(AIRE);
EstadoCalefaccion = digitalRead(CALEFACCION);
if ((EstadoVelocidad1 == LOW) && ((EstadoAire == HIGH) || (EstadoCalefaccion == HIGH)))
{
NVelo1Test.setPic(4);
NVelo2Test.setPic(3);
NVelo3Test.setPic(3);
digitalWrite (VELOCIDAD1,HIGH);
digitalWrite (VELOCIDAD2,LOW);
digitalWrite (VELOCIDAD3,LOW);
}
}
void Control_Velocidad2() //Realizar Una Funcion que se realice al presionar el boton
{
EstadoVelocidad2 = digitalRead(VELOCIDAD2);
EstadoAire = digitalRead(AIRE);
EstadoCalefaccion = digitalRead(CALEFACCION);
if ((EstadoVelocidad2 == LOW) && ((EstadoAire == HIGH) || (EstadoCalefaccion == HIGH)))
{
NVelo1Test.setPic(3);
NVelo2Test.setPic(4);
NVelo3Test.setPic(3);
digitalWrite (VELOCIDAD1,LOW);
digitalWrite (VELOCIDAD2,HIGH);
digitalWrite (VELOCIDAD3,LOW);
}
}
void Control_Velocidad3() //Realizar Una Funcion que se realice al presionar el boton
{
EstadoVelocidad3 = digitalRead(VELOCIDAD3);
EstadoAire = digitalRead(AIRE);
EstadoCalefaccion = digitalRead(CALEFACCION);
if ((EstadoVelocidad3 == LOW) && ((EstadoAire == HIGH) || (EstadoCalefaccion == HIGH)))
{
NVelo1Test.setPic(3);
NVelo2Test.setPic(3);
NVelo3Test.setPic(4);
digitalWrite (VELOCIDAD1,LOW);
digitalWrite (VELOCIDAD2,LOW);
digitalWrite (VELOCIDAD3,HIGH);
}
}
void Control_Ventilador() //Realizar Una Funcion que se realice al presionar el boton
{
int EstadoVentilador;
EstadoVentilador = digitalRead(VENTILADOR);
if (EstadoVentilador == LOW)
{
NExtractorTest.setPic(3);
NVentilaTest.setPic(4);
digitalWrite (EXTRACTOR,LOW);
delay(400);
digitalWrite (VENTILADOR,HIGH);
}
else
{
NExtractorTest.setPic(3);
NVentilaTest.setPic(3);
digitalWrite (VENTILADOR,LOW);
}
}
void Control_Extractor() //Realizar Una Funcion que se realice al presionar el boton
{
int EstadoExtractor;
EstadoExtractor = digitalRead(EXTRACTOR);
if (EstadoExtractor == LOW)
{
NVentilaTest.setPic(3);
NExtractorTest.setPic(4);
digitalWrite (VENTILADOR,LOW);
delay(400);
digitalWrite (EXTRACTOR,HIGH);
}
else
{
NExtractorTest.setPic(3);
NVentilaTest.setPic(3);
digitalWrite (EXTRACTOR,LOW);
}
}
void Actualiza_Iconos() //Realizar Una Funcion que se realice al presionar el boton
{
// int ActualizaHalogenos;
// ActualizaHalogenos = digitalRead(HALOGENOS);
// if (ActualizaHalogenos == HIGH)
// {
// NHalogTest.setPic(1);
// }
//
// int ActualizaPenumbra;
// ActualizaPenumbra = digitalRead(PENUMBRA);
// if (ActualizaPenumbra == HIGH)
// {
// NPenumTest.setPic(1);
// }
//
// int ActualizaPlafon;
// ActualizaPlafon = digitalRead(PLAFONES);
// if (ActualizaPlafon == HIGH)
// {
// NPlafonTest.setPic(1);
// }
//
// int Actualiza230V;
// Actualiza230V = digitalRead(CONVERTIDOR);
// if (Actualiza230V == HIGH)
// {
// N230VTest.setPic(1);
// }
int ActualizaCalor;
ActualizaCalor = digitalRead(CALEFACCION);
if (ActualizaCalor == HIGH)
{
NCalorTest.setPic(1);
}
int ActualizaAire;
ActualizaAire = digitalRead(AIRE);
if (ActualizaAire == HIGH)
{
NAireTest.setPic(1);
}
}
void Actualiza_Iconos_Clima()
{
int ActualizaCalor;
ActualizaCalor = digitalRead(CALEFACCION);
if (ActualizaCalor == HIGH)
{
NCalor1Test.setPic(4);
}
int ActualizaAire;
ActualizaAire = digitalRead(AIRE);
if (ActualizaAire == HIGH)
{
NAire1Test.setPic(4);
}
int ActualizaVelo1;
ActualizaVelo1 = digitalRead(VELOCIDAD1);
if (ActualizaVelo1 == HIGH)
{
NVelo1Test.setPic(4);
}
int ActualizaVelo2;
ActualizaVelo2 = digitalRead(VELOCIDAD2);
if (ActualizaVelo2 == HIGH)
{
NVelo2Test.setPic(4);
}
int ActualizaVelo3;
ActualizaVelo3 = digitalRead(VELOCIDAD3);
if (ActualizaVelo3 == HIGH)
{
NVelo3Test.setPic(4);
}
// int ActualizaVentilador;
// ActualizaVentilador = digitalRead(VENTILADOR);
// if (ActualizaVentilador == HIGH)
// {
// NVentilaTest.setPic(4);
// }
// else
// {
// NVentilaTest.setPic(3);
// }
//
// int ActualizaExtractor;
// ActualizaExtractor = digitalRead(EXTRACTOR);
// if (ActualizaExtractor == HIGH)
// {
// NExtractorTest.setPic(4);
// }
// else
// {
// NExtractorTest.setPic(3);
// }
}
//void Actualiza_Iconos_Principal() //Realizar Una Funcion que se realice al presionar el boton
//{
// int Actualiza230VP;
// Actualiza230VP = digitalRead(CONVERTIDOR);
// if (Actualiza230VP == HIGH)
// {
// Serial3.print("N230VP.picc=");
// Serial3.print(1);
// Serial3.write(0xff);
// Serial3.write(0xff);
// Serial3.write(0xff);
// }
//
// int ActualizaCalorP;
// ActualizaCalorP = digitalRead(CALEFACCION);
// if (ActualizaCalorP == HIGH)
// {
// Serial3.print("NCalorP.picc=");
// Serial3.print(1);
// Serial3.write(0xff);
// Serial3.write(0xff);
// Serial3.write(0xff);
// }
//
// int ActualizaAireP;
// ActualizaAireP = digitalRead(AIRE);
// if (ActualizaAireP == HIGH)
// {
// Serial3.print("NAireP.picc=");
// Serial3.print(1);
// Serial3.write(0xff);
// Serial3.write(0xff);
// Serial3.write(0xff);
// }
//}
void Control_Mapas() //Realizar Una Funcion que se realice al presionar el boton
{
int EstadoMapas;
EstadoMapas = digitalRead(MAPAS);
if (EstadoMapas == LOW)
{
digitalWrite (MAPAS,HIGH);
Serial3.print("NMapasP.picc=");
Serial3.print(1);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
}
else
{
digitalWrite (MAPAS,LOW);
Serial3.print("NMapasP.picc=");
Serial3.print(0);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
}
}
void Control_Marcha_Atras() //Realizar Una Funcion que se realice al presionar el boton
{
digitalWrite (MARCHA_ATRAS,HIGH);
Serial3.print("NAtrasP.picc=");
Serial3.print(1);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
PulsacionMarchaAtras=1;
delay(250);
digitalWrite (MARCHA_ATRAS,LOW);
}
void Actualiza_Marcha_Atras() //Realizar Una Funcion que se realice al presionar el boton
{
EstadoMarchaAtras = digitalRead(SENAL_ATRAS);
if ((EstadoMarchaAtras == HIGH)&&(PulsacionMarchaAtras == 1))
{
Serial3.print("NAtrasP.picc=");
Serial3.print(1);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
PulsacionMarchaAtras=2;
}
if ((EstadoMarchaAtras == LOW)&&((PulsacionMarchaAtras == 2)||(PulsacionMarchaAtras == 1)))
{
Serial3.print("NAtrasP.picc=");
Serial3.print(0);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
PulsacionMarchaAtras=0;
}
}
void Temperatura_Cabina()
{
V1 = analogRead(TEMPERATURA_CAB); // lectura de A1
R2Cab = R1 * (1023.0 / (float)V1 - 1.0); // conversion de tension a resistencia
logR2Cab = log(R2Cab); // logaritmo de R2 necesario para ecuacion
TEMPERATURACab = (1.0 / (Cab0 + Cab1*logR2Cab + Cab2*logR2Cab*logR2Cab*logR2Cab)); // ecuacion S-H
TEMPERATURACab = ((TEMPERATURACab - 273.15)*10); // Kelvin a Centigrados (Celsius) * 10 para enviar valor a Nextion
Serial2.print("NTempCab.val=");
Serial2.print((int)TEMPERATURACab);
Serial2.write(0xff);
Serial2.write(0xff);
Serial2.write(0xff);
Serial3.print("NTempCabP.val=");
Serial3.print((int)TEMPERATURACab);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
}
void Temperatura_Asistencial()
{
V2 = analogRead(TEMPERATURA_ASIST); // lectura de A2
R2Asist = R1 * (1023.0 / (float)V2 - 1.0); // conversion de tension a resistencia
logR2Asist = log(R2Asist); // logaritmo de R2 necesario para ecuacion
TEMPERATURAAsist = (1.0 / (Asist0 + Asist1*logR2Asist + Asist2*logR2Asist*logR2Asist*logR2Asist)); // ecuacion S-H
TEMPERATURAAsist = ((TEMPERATURAAsist - 273.15)*10); // Kelvin a Centigrados (Celsius) * 10 para enviar valor a Nextion
Serial2.print("NTempAsist.val=");
Serial2.print((int)TEMPERATURAAsist);
Serial2.write(0xff);
Serial2.write(0xff);
Serial2.write(0xff);
Serial3.print("NTempAsistP.val=");
Serial3.print((int)TEMPERATURAAsist);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
}
void Temperatura_Exterior()
{
V3 = analogRead(TEMPERATURA_EXT); // lectura de A3
R2Ext = R1 * (1023.0 / (float)V3 - 1.0); // conversion de tension a resistencia
logR2Ext = log(R2Ext); // logaritmo de R2 necesario para ecuacion
TEMPERATURAExt = (1.0 / (Ext0 + Ext1*logR2Ext + Ext2*logR2Ext*logR2Ext*logR2Ext)); // ecuacion S-H
TEMPERATURAExt = ((TEMPERATURAExt - 273.15)*10); // Kelvin a Centigrados (Celsius) * 10 para enviar valor a Nextion // imprime valor en monitor serie
// imprime valor en monitor serie
Serial2.print("NTempExt.val=");
Serial2.print((int)TEMPERATURAExt);
Serial2.write(0xff);
Serial2.write(0xff);
Serial2.write(0xff);
Serial3.print("NTempExtP.val=");
Serial3.print((int)TEMPERATURAExt);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
}
void Voltimetro_Car()
{
ValorCar = analogRead (VOLTIMETRO_CAR);
VOutCar = (ValorCar * 4.2)/1023;
VInCar = VOutCar/(R2Car / (R1Car + R2Car));
if (VInCar<0.9)
{
VInCar = 0;
}
Serial2.print("NVoltCar.val=");
Serial2.print(VInCar*10, 0);
Serial2.write(0xff);
Serial2.write(0xff);
Serial2.write(0xff);
Serial3.print("NVoltCarP.val=");
Serial3.print(VInCar*10, 0);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
if (VInCar<11.8)
{
NCarTest.setPic(2);
Serial3.print("NCarTestP.picc=");
Serial3.print(2);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
}
if (VInCar>=12)
{
NCarTest.setPic(1);
Serial3.print("NCarTestP.picc=");
Serial3.print(1);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
}
}
void Voltimetro_Aux()
{
ValorAux = analogRead (VOLTIMETRO_AUX);
VOutAux = (ValorAux * 4.2)/1023;
VInAux = VOutAux/(R2Aux / (R1Aux + R2Aux));
if (VInAux<0.9)
{
VInAux = 0;
}
Serial2.print("NVoltAux.val=");
Serial2.print(VInAux*10, 0);
Serial2.write(0xff);
Serial2.write(0xff);
Serial2.write(0xff);
Serial3.print("NVoltAuxP.val=");
Serial3.print(VInAux*10, 0);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
if (VInAux<11.8)
{
NAuxTest.setPic(2);
Serial3.print("NAuxTestP.picc=");
Serial3.print(2);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
}
if (VInAux>=12)
{
NAuxTest.setPic(1);
Serial3.print("NAuxTestP.picc=");
Serial3.print(1);
Serial3.write(0xff);
Serial3.write(0xff);
Serial3.write(0xff);
}
}