#include <Servo.h>//библиотека
Servo myservo; //создаем сервопривод
float pos = 0; //объявляем переменную, задаем ей начальное значение "0"
const float BETA = 3950; //объявляем константу для расчета
//температуры по аналоговому сигналу с датчика
bool flag = false; // объявляем переменную флага нажатия
void setup() {
pinMode(4, INPUT_PULLUP); // режим работы пина 4
pinMode(A0,INPUT); //режим работы аналогового входа
myservo.attach(3); //назначаем пин, который будет управлять сервоприводом
Serial.begin(9600); //начало записи в терминале
}
void loop() {
int analogValue = analogRead(A0); //объявляем целочисленную переменную в которую
// будем записывать аналоговые данные с датчика
float temp = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
//объявляем переменную с плавающей запятой в которую записываем рассчитанную на
//основе аналогового сигнала температуру в цельсиях
pos = map(temp, -24, 80 , 0 , 90); // интерполяция диапазона температур и пложений сервопривода
myservo.write(pos); //передаем значение положения на сервопривод
delay(15); //задержка
if (digitalRead(4)==LOW){//условие нажатой кнопки
pos=0;//записываем значение "0" в переменную положения сервопривода
myservo.write(pos);//передаем значение положения на сервопривод
delay(15); //задержка
bool btnState = !digitalRead(4); //создаем перменную нажатия
if (btnState && !flag) { // обработчик нажатия
flag = true;}
if (!btnState && flag) { // обработчик отпускания
flag = false; }
delay(2000);
}
Serial.print("Temperature: ");//выводим в термиинал название параметра
Serial.print(temp); //выводим в терминал значение параметра
Serial.println(" ℃"); //выводим в термиинал еденицу измерения параметра с переходом на следующую строку
delay(1000); //задержка
Serial.print("Position ");//выводим в термиинал название параметра
Serial.println(pos);//выводим в терминал значение параметра с переходом на следующую строку
delay(1000); //задержка
}