#include <Servo.h> //подключаем библиотеку сервопривода
Servo myservo; //Инициализируем сервопривод
#include "SevSeg.h" //подключаем библиотеку семисегментного индикатора
SevSeg sevseg; //инициализируем индикатор
const float BETA = 3950; // задаем постоянную, необходимую для пересчета значений температурного датчика
void setup() {
pinMode(3, OUTPUT); // задаем пин 3, как выход , для управления сервоприводом
pinMode(2, INPUT); //задаем пин 2 , как вход для кнопки
myservo.attach(3); //пин управления заслонкой
byte numDigits = 2; // количество цифр на индикаторе
byte digitPins[] = {4, 5}; //пины переключения цифр на индикаторе
byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12}; // пины Сегментов
bool resistorsOnSegments = true; // //задаем что, ограничивающие резисторы соединены последовательно с сегментными выводами
byte hardwareConfig = COMMON_CATHODE; // Устанавливаем тип общих пинов DIG1, DIG2 как катод
bool disableDecPoint = true; // выключает десятичную точку на экране
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments, disableDecPoint); // инициализируем связь с экраном
}
void loop() {
int analogValue = analogRead(A0); // присваиваем переменной значение от датчика температуры
float celsius = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15; //переводим значения от датчика температуры в градусы цельсия
int angle = map(celsius, -24, 80, 0, 90); // преобразовываем диапазон значений температуры в диапазон угла поворота сервопривода
myservo.write (angle); // задаем угол поворота сервоприводу
if (digitalRead(2) == HIGH) // //задаем условие сброса угла поворота сервопривода по нажатию кнопки
{ angle = 0;
myservo.write (angle);
}
sevseg.setNumber(angle); // выводим значение угла поворота на дисплей
sevseg.refreshDisplay(); // функция обновления данных на экране.
}