#include <LiquidCrystal.h>
// Подключение компонентов
const int tempPin = A3; // Аналоговый пин для датчика температуры TMP36
const int ledPin = 13; // Ножка подключения лампочки
const int buzzerPin = 10; // Ножка подключения звукового сигнала
const int buttonUpPin = 7; // Ножка подключения кнопки "Вверх"
const int buttonDownPin = 6; // Ножка подключения кнопки "Вниз"
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Создание объекта ЖК-дисплея
// Переменные
float temperature = 0; // Текущая температура
float setTemp = 20.0; // Желаемая температура
void setup() {
// Инициализация ЖК-дисплея
lcd.begin(16, 2);
lcd.print("Temp: ");
// Настройка выводов
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(buttonUpPin, INPUT_PULLUP);
pinMode(buttonDownPin, INPUT_PULLUP);
}
void loop() {
// Считывание температуры с датчика TMP36
temperature = readTemperature();
// Отображение температуры на ЖК-дисплее
lcd.setCursor(6, 0);
lcd.print(temperature);
lcd.setCursor(0, 1);
lcd.print("Set: ");
lcd.setCursor(5, 1);
lcd.print(setTemp);
// Управление лампочкой
if (temperature < setTemp) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
// Звуковой сигнал
if (temperature == setTemp) {
tone(buzzerPin, 1000);
delay(50);
noTone(buzzerPin);
}
if (temperature > (setTemp + 2)) {
tone(buzzerPin, 1000);
delay(50);
noTone(buzzerPin);
}
// Обработка нажатия кнопок
checkButtons();
delay(1000); // Задержка для обновления показаний
}
// Функция считывания температуры с датчика TMP36
float readTemperature() {
int sensorValue = analogRead(tempPin); // Считывание аналогового значения
float voltage = sensorValue * (5.0 / 1023.0); // Преобразование в напряжение
float temperatureC = (voltage ) * 10; // Преобразование в градусы Цельсия
return temperatureC;
}
// Функция обработки нажатия кнопок
void checkButtons() {
if (digitalRead(buttonUpPin) == HIGH) {
setTemp += 0.5;
delay(200);
}
if (digitalRead(buttonDownPin) == HIGH) {
setTemp -= 0.5;
delay(200);
}
}