#define temp_data A1              //константа с номером пина для получения данных с термистора
#define ledg 2                    //константа с номером пина для зеленого светодиода
#define ledy 3                    //константа с номером пина для желтого светодиода
#define ledr 4                    //константа с номером пина для красного светодиода

const float betac = 3950;         //B-коэффициент термистора

void setup() {

pinMode(temp_data, INPUT);        //определение режима для пина термистора как входа 
pinMode(ledg, OUTPUT);            //определение режима для пина зеленого светодиода как выхода
pinMode(ledy, OUTPUT);            //определение режима для пина желтого светодиода как выхода
pinMode(ledr, OUTPUT);            //определение режима для пина красного светодиода как выхода
Serial.begin(9600);               //инициализация последовательного порта

}

void loop() {

int analog_value = analogRead(temp_data);             //чтение аналоговых данных с пина термистора
float celsius_temp = 1 / (log(1 / (1023. / analog_value - 1)) / betac + 1.0 / 298.15) - 273.15; //пересчет значения ацп в градусы цельсия

Serial.print("Температура ");                         //
Serial.print(celsius_temp);                           //Вывод в терминал текущего сигнала с термистора в градусах цельсия
Serial.print(" ℃\n");                                // 

bool sp1 = celsius_temp >= 10 && celsius_temp <=15;   //задание уставки "норма"   
bool sp2 = celsius_temp > 15;                         //задание уставки "предупреждение"
bool sp3 = celsius_temp > 20;                         //задание уставки "авария"

if (sp1) {                                            //условие если температура в пределах нормы
  digitalWrite(ledr, LOW);                            //низкий уровень на пин красного светодиода (отключение)
  digitalWrite(ledy, LOW);                            //низкий уровень на пин желтого светодиода (отключение)
  digitalWrite(ledg, HIGH);                           //высокий уровень на пин зеленого светодиода (включение) 
}

else if (sp2 && sp3) {                                //условие если температура превысила аварийный уровень
  digitalWrite(ledg, LOW);                            //низкий уровень на пин зеленого светодиода (отключение)  
  digitalWrite(ledy, HIGH);                           //высокий уровень на пин желтого светодиода (включение)
  digitalWrite(ledr, !digitalRead(ledr));             //попытка помигать красным светодиодом (просьба не пинать ногами)
//                                                      инверсия состояния пина красного светодиода с каждым повторением цикла
//                                                      при выполнении условия
}                                                       

else if (sp2 && !sp3) {                               //условие если температура превысила уровень предупреждения
  digitalWrite(ledg, LOW);                            //низкий уровень на пин зеленого светодиода (отключение)
  digitalWrite(ledr, LOW);                            //низкий уровень на пин красного светодиода (отключение)
  digitalWrite(ledy, HIGH);                           //высокий уровень на пин желтого светодиода (включение)
} 

else {                                                //условие если температура ниже нормы
  digitalWrite(ledg, LOW);                            //низкий уровень на пин зеленого светодиода (отключение)
  digitalWrite(ledr, LOW);                            //низкий уровень на пин красного светодиода (отключение)
  digitalWrite(ledy, LOW);                            //низкий уровень на пин желтого светодиода (отключение)
  Serial.print("Низкая температура!\n");              //вывод в терминал сообщения о низкой температуре
}

delay(500);                                           //задержка повторения цикла на 0,5 секунды  

}