#include <Servo.h> //подключаем библиотеку сервопривода
Servo myservo; //Инициализируем сервопривод
const float BETA = 3950; // задаем постоянную, необходимую для пересчета значений температурного датчика
void setup() {
pinMode(3, OUTPUT); // задаем пин 3, как выход , для управления сервоприводом
pinMode(2, INPUT); //задаем пин 2 , как вход для кнопки
myservo.attach(3); //пин управления заслонкой
Serial.begin(9600); //инициализируем терминал
}
void loop() {
int temper = analogRead(A0); // присваиваем переменной значение от датчика температуры
float celsius = 1 / (log(1 / (1023. / temper - 1)) / BETA + 1.0 / 298.15) - 273.15; //переводим значения от датчика температуры в градусы цельсия
Serial.print("Показания температуры: " + String(celsius) + "℃"); //выводим в терминал температуру в градусах
Serial.println();
int angle = map(celsius, -24, 80, 0, 90); // преобразовываем диапазон значений температуры в диапазон угла поворота сервопривода
Serial.print( "Угол поворота: " + String(angle)); // выводим значение угла поворота сервопривода в иерминал
Serial.println();
myservo.write (angle); // задаем угол поворота сервоприводу
delay(2000); // задаем задержку в 2 сек
if (digitalRead(2) == HIGH) //задаем условие сброса угла поворота сервопривода по нажатию кнопки
{ angle = 0;
myservo.write (angle);
Serial.print( "Нажата кнопка сброса угла поворота сервопривода !!! "); // вывод сообщения в терминал
Serial.println();
Serial.print( "Угол поворота: " + String(angle));
Serial.println();
delay(2000); // задаем задержку в 2 сек
}
}