¿A qué te refieres con que no te deja pegarlo?
// Definimos los pines para los termostatos
#define T1_PIN 2 // Chimenea
#define T2_PIN 3 // ACS (ON/OFF)
#define T3_PIN 4 // Inercia (ON/OFF)
#define T4_PIN 5 // Suelo radiante
#define T5_PIN 6 // Planta 1º
#define T6_PIN 7 // Planta 2º
// Definimos los pines para las electroválvulas y bombas
#define EV1_PIN 8 // ACS-Inercia
#define EV2_PIN 9 // Calefacción-Disipador
#define EV3_PIN 10 // Zona suelo radiante
#define EV4_PIN 11 // Zona planta 1º
#define EV5_PIN 12 // Zona planta 2º
#define B1_PIN 13 // Bomba circuíto Primario
#define B2_PIN A0 // Bomba circuíto Secundario
#define AERO_PIN A1 // Contacto para Aerotermia
void setup() {
// Configuración de pines como entrada
pinMode(T1_PIN, INPUT);
pinMode(T2_PIN, INPUT);
pinMode(T3_PIN, INPUT);
pinMode(T4_PIN, INPUT);
pinMode(T5_PIN, INPUT);
pinMode(T6_PIN, INPUT);
// Configuración de pines como salida
pinMode(EV1_PIN, OUTPUT);
pinMode(EV2_PIN, OUTPUT);
pinMode(EV3_PIN, OUTPUT);
pinMode(EV4_PIN, OUTPUT);
pinMode(EV5_PIN, OUTPUT);
pinMode(B1_PIN, OUTPUT);
pinMode(B2_PIN, OUTPUT);
pinMode(AERO_PIN, OUTPUT);
// Inicializamos todo en apagado
digitalWrite(EV1_PIN, LOW);
digitalWrite(EV2_PIN, LOW);
digitalWrite(EV3_PIN, LOW);
digitalWrite(EV4_PIN, LOW);
digitalWrite(EV5_PIN, LOW);
digitalWrite(B1_PIN, LOW);
digitalWrite(B2_PIN, LOW);
digitalWrite(AERO_PIN, LOW);
}
void loop() {
// Leemos los estados de los termostatos
bool T1 = digitalRead(T1_PIN);
bool T2 = digitalRead(T2_PIN);
bool T3 = digitalRead(T3_PIN);
bool T4 = digitalRead(T4_PIN);
bool T5 = digitalRead(T5_PIN);
bool T6 = digitalRead(T6_PIN);
// Estado de las válvulas de zona (según los termostatos)
bool EV3 = T4;
bool EV4 = T5;
bool EV5 = T6;
// Verificación constante: si T4, T5 o T6 están apagados, las EV correspondientes se apagan
if (!T4) digitalWrite(EV3_PIN, LOW); // Apaga EV3 si T4 está apagado
if (!T5) digitalWrite(EV4_PIN, LOW); // Apaga EV4 si T5 está apagado
if (!T6) digitalWrite(EV5_PIN, LOW); // Apaga EV5 si T6 está apagado
// Sin demanda de ACS ni calefacción: todo apagado
if (!T2 && !(EV3 || EV4 || EV5)) {
if (T1) {
// T1=ON, T2=OFF, EV3=EV4=EV5=OFF
// Chimenea encendida, todo en temperatura
digitalWrite(EV1_PIN, LOW); // EV1 hacia inercia
digitalWrite(EV2_PIN, LOW); // EV2 hacia disipador
digitalWrite(B1_PIN, HIGH); // Enciende B1
digitalWrite(B2_PIN, HIGH); // Enciende B2
} else {
// T1=OFF, T2=OFF, sin demanda de calor
digitalWrite(EV1_PIN, LOW); // EV1 en inercia
digitalWrite(EV2_PIN, LOW); // EV2 en disipador
digitalWrite(B1_PIN, LOW); // Apaga B1
digitalWrite(B2_PIN, LOW); // Apaga B2
digitalWrite(AERO_PIN, LOW); // Apaga aerotermia
}
}
// Demanda de ACS sin calefacción
if (T2 && !(EV3 || EV4 || EV5)) {
if (T1) {
// T2=ON, T1=ON, ACS demandado
digitalWrite(EV1_PIN, HIGH); // EV1 hacia ACS
digitalWrite(B1_PIN, HIGH); // Enciende B1
digitalWrite(B2_PIN, LOW); // Apaga B2
digitalWrite(EV2_PIN, LOW); // EV2 en disipador (por seguridad)
digitalWrite(AERO_PIN, LOW); // Apaga aerotermia
} else {
// T2=ON, T1=OFF, ACS demandado pero sin chimenea
digitalWrite(AERO_PIN, HIGH); // Activa aerotermia
digitalWrite(EV1_PIN, HIGH); // EV1 hacia ACS
digitalWrite(B1_PIN, LOW); // Apaga B1
digitalWrite(B2_PIN, LOW); // Apaga B2
digitalWrite(EV2_PIN, LOW); // EV2 en disipador
}
}
// Demanda de calefacción sin ACS
if (!T2 && (EV3 || EV4 || EV5)) {
// Ignorar T3 ya que hay demanda de los termostatos de zona
if (T1) {
// T2=OFF, T1=ON, Calefacción demandada
digitalWrite(EV1_PIN, LOW); // EV1 hacia inercia
digitalWrite(EV2_PIN, HIGH); // EV2 hacia calefacción
digitalWrite(B1_PIN, HIGH); // Enciende B1
digitalWrite(B2_PIN, HIGH); // Enciende B2
digitalWrite(EV3_PIN, EV3); // Abre EV3 según T4
digitalWrite(EV4_PIN, EV4); // Abre EV4 según T5
digitalWrite(EV5_PIN, EV5); // Abre EV5 según T6
digitalWrite(AERO_PIN, LOW); // Apaga aerotermia
} else {
// T2=OFF, T1=OFF, Calefacción con aerotermia
digitalWrite(AERO_PIN, HIGH); // Activa aerotermia
digitalWrite(EV1_PIN, LOW); // EV1 hacia inercia
digitalWrite(EV2_PIN, HIGH); // EV2 hacia calefacción
digitalWrite(B1_PIN, LOW); // Apaga B1
digitalWrite(B2_PIN, HIGH); // Enciende B2
digitalWrite(EV3_PIN, EV3); // Abre EV3 según T4
digitalWrite(EV4_PIN, EV4); // Abre EV4 según T5
digitalWrite(EV5_PIN, EV5); // Abre EV5 según T6
}
}
// Demanda de ACS y calefacción simultáneamente
if (T2 && (EV3 || EV4 || EV5)) {
if (T1) {
// T2=ON, T1=ON, Demanda simultánea de ACS y calefacción
digitalWrite(EV1_PIN, HIGH); // EV1 hacia ACS
digitalWrite(B1_PIN, HIGH); // Enciende B1
digitalWrite(B2_PIN, LOW); // Apaga B2
digitalWrite(EV2_PIN, LOW); // EV2 en disipador
digitalWrite(AERO_PIN, LOW); // Apaga aerotermia
// Apagar EV de zonas mientras se atiende la demanda de ACS
digitalWrite(EV3_PIN, LOW); // Apaga EV3
digitalWrite(EV4_PIN, LOW); // Apaga EV4
digitalWrite(EV5_PIN, LOW); // Apaga EV5
} else {
// T2=ON, T1=OFF, Demanda simultánea con aerotermia
digitalWrite(AERO_PIN, HIGH); // Activa aerotermia
digitalWrite(EV1_PIN, HIGH); // EV1 hacia ACS
digitalWrite(B1_PIN, LOW); // Apaga B1
digitalWrite(B2_PIN, LOW); // Apaga B2
digitalWrite(EV2_PIN, LOW); // EV2 en disipador
// Apagar EV de zonas mientras se atiende la demanda de ACS
digitalWrite(EV3_PIN, LOW); // Apaga EV3
digitalWrite(EV4_PIN, LOW); // Apaga EV4
digitalWrite(EV5_PIN, LOW); // Apaga EV5
}
}
// Verificación constante: si T4, T5 o T6 están apagados, las EV correspondientes se apagan (repetido por seguridad)
if (!T4) digitalWrite(EV3_PIN, LOW); // Apaga EV3 si T4 está apagado
if (!T5) digitalWrite(EV4_PIN, LOW); // Apaga EV4 si T5 está apagado
if (!T6) digitalWrite(EV5_PIN, LOW); // Apaga EV5 si T6 está apagado
}
Aquí está si alguien necesita leerlo.