// ============================================
// КЛИМАТ-КОНТРОЛЬ С РУЧНЫМ ВВОДОМ ТЕМПЕРАТУРЫ
// ВЫДАЁТ ЗНАЧЕНИЯ УПРАВЛЕНИЯ (0/1) НА НАГРЕВАТЕЛЬ И ВЕНТИЛЯТОР
// ============================================
const int HEATER_PIN = 2; // пин для нагревателя
const int FAN_PIN = 3; // пин для вентилятора
float temperature = 20.0; // стартовая температура
bool heaterState = false; // состояние нагревателя (выкл)
bool fanState = false; // состояние вентилятора (выкл)
void setup() {
Serial.begin(9600);
pinMode(HEATER_PIN, OUTPUT);
pinMode(FAN_PIN, OUTPUT);
// начальные состояния
digitalWrite(HEATER_PIN, LOW);
digitalWrite(FAN_PIN, LOW);
Serial.println("=================================");
Serial.println("КЛИМАТ-КОНТРОЛЬ ЗАПУЩЕН");
Serial.println("=================================");
Serial.println();
Serial.println("ВВЕДИ ТЕМПЕРАТУРУ (например 18.5)");
Serial.println("И НАЖМИ ENTER");
Serial.println("=================================");
Serial.println();
}
void loop() {
if (Serial.available() > 0) {
float newTemp = Serial.parseFloat();
// проверяем, что ввод корректен (не NaN)
if (isnan(newTemp)) {
Serial.println("Ошибка: введи число (например 22.5)");
} else {
temperature = newTemp;
// Логика управления и выдача значений
if (temperature < 18.0) {
heaterState = true; // нагреватель включён
fanState = false; // вентилятор выключен
}
else if (temperature > 25.0) {
heaterState = false; // нагреватель выключен
fanState = true; // вентилятор включён
}
else {
heaterState = false; // всё нормально – оба выкл
fanState = false;
}
// Выдаём значения на реальные пины
digitalWrite(HEATER_PIN, heaterState ? HIGH : LOW);
digitalWrite(FAN_PIN, fanState ? HIGH : LOW);
// Выдаём значения в монитор порта
Serial.println();
Serial.print("Температура: ");
Serial.print(temperature, 1);
Serial.println(" °C");
Serial.print("Нагреватель (пин ");
Serial.print(HEATER_PIN);
Serial.print("): ");
Serial.println(heaterState ? "1 (ВКЛ)" : "0 (ВЫКЛ)");
Serial.print("Вентилятор (пин ");
Serial.print(FAN_PIN);
Serial.print("): ");
Serial.println(fanState ? "1 (ВКЛ)" : "0 (ВЫКЛ)");
Serial.println("=================================");
Serial.println("ВВЕДИ НОВУЮ ТЕМПЕРАТУРУ");
Serial.println();
}
}
delay(100);
}