FYI OP's code blocks - please post inline if you're smart enough
#include <LiquidCrystal_I2C.h> // Debe descargar la Libreria que controla el I2C
#include<Wire.h>
#include <Keypad_I2C.h>
#include <SPI.h>
#include <SoftwareSerial.h>
SoftwareSerial NodeMCU(2,3);
LiquidCrystal_I2C lcd(0x27,20,4);
#include <max6675.h> // Incluye libreria del chip del termocople
#include<CountUpDownTimer.h> // librería del timer
CountUpDownTimer T(DOWN, HIGH); // defino objeto timer
CountUpDownTimer T2(DOWN, HIGH);
CountUpDownTimer In(DOWN, HIGH); //Timer del intermedio
float Temperatura = 0; // temperatura actual del Termopar
int TempObjetivo = 0; // Temp. mínima que se debe mantener, o sea, 121 ªC normalmente
int TempMedia = 0; // TempMedia = TempObjetivo + 1, se asigna en la función de PideTemp()
// int diferencial = 0.5; // Puede ser + o - por arriba y debajo de la TempObjetivo, siempre no la usaré
boolean TempObjetivoAlcanzada = false; // Temperatura Objetivo Alcanzada?
boolean EsterFinalizada = false;
boolean TiempoSeleccionado = false;
boolean TempSeleccionada = false; // Temperatura seleccionada?
boolean SSRPrendido = false;
#define thermoDO 10
#define thermoCS 11
#define thermoCLK 12
#define pinSolenoide 9
#define pinSSR 13 // SSR grande para la resistencia
//#define TiempoDesfogue 480 // 480 segundos = 8 min de desfogue
#define TiempoCalentamientoMax 5400 // 5400 = 1:30 1 hora 30 min - Si tarda más en llegar a temperatura objetivo, aborta ciclo
#define TempBoil 97 // Temperatura a la cual empieza a generar vapor normalmente (de la que ya no sube si la válvula de desfogue
// está abierta), puede modificarse si es que algún eliminador o causa hiciera que las lecutras del termopar
// fueran diferentes a las que se generan con el actual eliminador de 5V que es Apple grandecito.
int segEfectivos = 0; //Segundos de esterilización efectiva(por encima de temp objetivo)
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
#include <Keypad.h>
#define I2CADDR 0x20
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {3, 2, 1, 0}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {7, 6, 5, 4}; //connect to the column pinouts of the keypad
//initialize an instance of class NewKeypad
Keypad_I2C keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS, I2CADDR);
int tecla = 0;
int minutos = 0; //int minutos2 = 0; int minIntermedio = 0; int horasIntermedio = 0;
int horas = 0; //int horas2 = 0;
int ContadorSolenoide = 0;
int ContadorValvulasCerradas = 0; // Cuenta tiempo para que si a cierto tiempo, aprox 1:10, no se ha llegado a la TempObjetivo, aborte el ciclo para evitar accidentes si es que una válvula estuviera abierta.
int TiempoDesfogue = 0;
void setup(){
Serial.begin(9600);
NodeMCU.begin(9600);
pinMode(pinSolenoide,OUTPUT);
digitalWrite(pinSolenoide,HIGH); // Solenoide apagada, válvula cerrada
pinMode(pinSSR,OUTPUT);
digitalWrite(pinSSR,LOW);
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(0,0);
keypad.begin(); // GDY120705
}
void loop(){
if(TiempoSeleccionado == false)
PideTiempo();
if(TiempoSeleccionado == true && TempSeleccionada == false)
PideTemperatura();
if (EsterFinalizada == false)
{
CicloEsteril(horas, minutos);
}
if(EsterFinalizada == true){
Temperatura = thermocouple.readCelsius();
lcd.setCursor(10,1);
lcd.print(Temperatura); lcd.print(" C");
delay(1000);
}
}
////////////////////////////////////////////////////////////////////////// TERMINA VOID LOOP
continued