Загрузка данных


// ============================================
// КЛИМАТ-КОНТРОЛЬ С РУЧНЫМ ВВОДОМ ТЕМПЕРАТУРЫ
// ВЫДАЁТ ЗНАЧЕНИЯ УПРАВЛЕНИЯ (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);
}