#include <DHT.h>
// Definir constantes
const int DHT_PIN_1 = 14;
const int DHT_PIN_2 = 15;
const int ACTUATOR_PIN = 13;
const int BAUD_RATE = 115200;
const int SETPOINT = 23;
// Definir variables globales
DHT dht1(DHT_PIN_1, DHT11);
DHT dht2(DHT_PIN_2, DHT22);
double input, output, integral, prev_error;
// Definir funciones
void setup() {
Serial.begin(BAUD_RATE);
pinMode(ACTUATOR_PIN, OUTPUT);
dht1.begin();
dht2.begin();
}
void loop() {
// Leer la temperatura de los sensores
float temperature1 = dht1.readTemperature();
float temperature2 = dht2.readTemperature();
// Calcular la entrada del controlador PI como la media de las dos temperaturas
input = (temperature1 + temperature2) / 2.0;
// Calcular la salida del controlador PI
double error = SETPOINT - input;
integral += error;
output = 10.0 * error + 0.5 * integral;
// Limitar la salida del controlador PI a un rango adecuado
output = constrain(output, 0.0, 1.0);
// Actualizar el estado del actuador
digitalWrite(ACTUATOR_PIN, output > 0.5);
// Imprimir información de depuración
Serial.print("Temperature: ");
Serial.println(input);
Serial.print("Output: ");
Serial.println(output);
}