const float BETA = 3950; // should match the Beta Coefficient of the thermistor
#define BUTTON_PIN 4 // определение пина кнопки
#include <Servo.h> // библиотека для управления сервомотором
#include <Button.h> // библиотека для управления кнопкой
#include <SevSeg.h> // библиоека 7-сег индикатора
SevSeg sevseg; //Instantiate a seven segment controller object
Servo myservo; // создание объекта сервомотора
int val; // переменная для считывания из аналогового пина в сервомотор
Button button1(BUTTON_PIN); // определение кнопки к пину
void setup() {
Serial.begin(9600); // инициализация порта
button1.begin(); // инициализация библиотеки кнопки
myservo.attach(9); // attaches the servo on pin 9 to the servo object
byte numDigits = 2;
byte digitPins[] = {2, 3};
byte segmentPins[] = {5, 6, 7, 8, 10, 11, 12, 13};
bool resistorsOnSegments = false; // 'false' means resistors are on digit pins
byte hardwareConfig = COMMON_ANODE; // See README.md for options
bool updateWithDelays = true; // Default 'false' is Recommended
bool leadingZeros = false; // Use 'true' if you'd like to keep the leading zeros
bool disableDecPoint = false; // Use 'true' if your decimal point doesn't exist or isn't connected
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments,
updateWithDelays, leadingZeros, disableDecPoint);
sevseg.setBrightness(90);
}
bool flag = false; // переменная состояние флага кнопки
void loop() {
int analogValue = analogRead(A1); // ввод значения NTS в переменную
int celsius = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15; // пересчет значения NTC в градусы Цельсия
val = map(celsius, -24, 80, 0, 90); // функция пересчета диапазона с -24 - 80 градусов на угол 0 - 90
if (button1.pressed()) { // условие изменения флага при нажатии кнопки
flag = !flag; // инверсия состояния флага
}
if (flag) { // условие режима сервомотора от состояния флага
val = 0;
myservo.write(val); // сервомотор в состояние 0 град
Serial.println("Сервомотор в 0"); // вывод в порт "Сервомотор в 0"
}
else {
myservo.write(val); // сервомотор в положение от температуры
Serial.print("Температура: "); // вывод в порт слова "Температура"
Serial.print(celsius); // вывод в порт температуры
Serial.println(" ℃"); // вывод в порт обозначения градуса
}
sevseg.setNumber(val, 2); // вывод значения градусов сервомотора
sevseg.refreshDisplay(); // обновление дисплея индикатора
}