Professional Documents
Culture Documents
Include
Include
h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
int input;
// LCD de 16 bits
LiquidCrystal_I2C lcd(0x3f,16,2); //LCD
//tiempo de muestreo
int TiempoMuestreo=1000; // tiempo de muestreo Se encuentra en milisegundos
unsigned long pasado=0; // tiempo pasado (Se hace para asegurar tiempo de muestreo)
unsigned long ahora;
//pulsador
int EDO1=0;
int EDOANT=0;
int out1=0;
int ON=24;
int OFF=26;
void setup() {
pinMode(2, OUTPUT); //Declaramos pin 2 como Ventilador
pinMode(3, OUTPUT); //Declaramos pin 3 como Resistencia activada
pinMode(ON,INPUT);
pinMode(OFF,INPUT);
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.print("Inicializando...");
delay (1000);
lcd.setCursor(0,1);
lcd.print("En espera...");
delay(1000);
lcd.setCursor(0,0);
lcd.print(" ");
for (int i=0; i<=1;i++){
lcd.setCursor(0,1);
lcd.print("Temp: ");
lcd.println(thermocouple.readCelsius());
lcd.println("C");
}
EDO1=digitalRead(24);
}
void loop() {
EDO1=digitalRead(24);
if ((EDO1==HIGH)&&(EDOANT==LOW))
{
out1=1-out1;
lcd.setCursor(0,0);
lcd.print("Activando sensor y resistencia de calor ");
delay(1);
lcd.setCursor(0,1);
lcd.print("Temp: ");
lcd.println(thermocouple.readCelsius());
lcd.println("C");
delay (1000);
}
EDOANT=EDO1;
delay (200);
if (out1==1)
{
unsigned long actual= millis();
double timeChange= (double)(ahora-pasado);
lcd.setCursor(0,1);
lcd.print("Temp: ");
lcd.println(thermocouple.readCelsius());
lcd.println("C");
lcd.setCursor(0,0);
lcd.print("e=");
lcd.println(error);
lcd.print("U=");
lcd.println(U);
error=10-(thermocouple.readCelsius());
errorSum=error + lastErr;// rev
int dErr=(error-lastErr);
U= kp*error+ki*errorSum+kd*dErr;
lastErr=error;
lastTime= actual;
delay (100);
if (U<0)
{
U=0;
double C=U;
lcd.setCursor(11,1);
lcd.print("H=");
lcd.println(C);
}
if(0<U<=255)
{
int Valor=U;
int Vent=0;
analogWrite(3, Valor);
delay (10);
analogWrite(2, Vent);
delay (10);
lcd.setCursor(11,1);
lcd.print("V=");
lcd.println(Valor);
}
else{
if (U>255)
{
int Valor=255;
int Vent=0;
analogWrite(3, Valor);
delay (10);
analogWrite(2, Vent);
delay (10);
lcd.setCursor(11,1); //Se ajusta posición de
lcd.print("A=");
lcd.println(Valor);
}
else{
int Valor=0;
analogWrite(3,Valor);
lcd.setCursor(11,1); //Se ajusta posición de
lcd.print("C=");
lcd.println(Valor);
}
}
}
else
{
lcd.setCursor(0,0);
lcd.print("Sensor Apagado ");// impresión del lcd indicando que el sensor esta apagado
digitalWrite(3, LOW); //Si el valor de input es diferente de 1, se apaga el pin Resistencia
delay(1);
lcd.setCursor(0,1);
lcd.print("Temp: ");
lcd.println(thermocouple.readCelsius());
lcd.println("C");
}
delay(100);