#include <Servo.h>
const int potPin = A1; // Пин для аналогового датчика температуры
const int buttonPin = 2; // Пин для кнопки сброса
Servo myServo; // Создаем объект сервопривода
int pos = 0; // Угол привода
void setup() {
myServo.attach(10); // Подключаем сервопривод к пину 10
pinMode(buttonPin, INPUT_PULLUP); // Кнопка сброса
myServo.write(pos); // Устанавливаем начальное положение серводвигателя на 0°
}
void loop() {
// Чтение значения с датчика температуры
int sensorValue = analogRead(potPin);
// Преобразование значения в температуру
float voltage = sensorValue * (5.0 / 1023.0); // Преобразуем значение в напряжение
float resistance = (5.0 - voltage) * 10000.0 / voltage; // Рассчитываем сопротивление NTC
float temperature = (1 / (log(resistance / 10000.0) / 3950 + 1 / 298.15)) - 273.15; // Рассчитываем температуру в °C
// Преобразуем температуру в угол
if (temperature < -24) {
pos = 0;
} else if (temperature > 80) {
pos = 90;
} else {
pos = map(temperature, -24, 80, 0, 90); // Преобразуем в диапазон 0-90°
}
myServo.write(pos); // Устанавливаем угол поворота сервопривода
// Проверка состояния кнопки
if (digitalRead(buttonPin) == LOW) {
pos = 0; // Сброс угла на 0°
myServo.write(pos);
delay(500); // Задержка, чтобы избежать дребезга контактов кнопки
}
delay(100); // Немного задержим цикл
}