#include // Usado para conexion rs232 virtual. #include // Ojo, librerias no oficiales. #define RxD 10 // Define el rx puerto virtual. #define TxD 11 // Define el Tx puerto virtual. SoftwareSerial nextion(RxD, TxD); // crea conexion serie virtual Nextion myNextion(nextion, 9600); // crea objeto Nextion llamado myNextion usado para conextion con pantalla 9600bps const int ssr = 2; // Pin2 para SSR. const int ledStatus = 13; // Led status para seņalizacion. const int tensionBaterias = A0; // Tension de baterias en A0. unsigned long previousMillis = 0; unsigned long interval = 20000; void setup() { pinMode(ledStatus, OUTPUT); // Creamos la salida para Led. pinMode(ssr, OUTPUT); // Creamos la salida para SSR. digitalWrite(ledStatus, LOW); // Apaamos led. digitalWrite(ssr,LOW); // Apagamos ssr. Serial.begin(9600); // Inicializamos puerto serie hardware (para depuracion). myNextion.init(); // Iniciamos pantalla. myNextion.sendCommand("page 1"); } void loop() { unsigned long currentMillis = millis(); int voltimetro = analogRead(tensionBaterias); // Leemos valor entrada analogica A0. int baterias=map(voltimetro,0,1023,0,100); // Adaptamos salida a 0 - 100 % int puestaMarcha=myNextion.getComponentValue("Home.bt0"); // Revisamos si boton marcha esta activo. int timer=millis; myNextion.setComponentValue("Home.n0",baterias); // Imprimimos el valos digital de la carga bateria. myNextion.setComponentValue("Home.j0",baterias); // Grafico de la bateria % myNextion.setComponentValue("Home.n1",timer); if (puestaMarcha == true){ // Boton on activo ? Si digitalWrite(ssr, HIGH); // Activo SSR digitalWrite(ledStatus, HIGH); // Activo Led if (currentMillis - previousMillis > interval) previousMillis = currentMillis; if (millis == 0) digitalWrite(ssr,LOW); } else { // No activo digitalWrite(ssr, LOW); // Apago SSR. digitalWrite(ledStatus, LOW); // Apago led. } }