//БИБЛИОТЕКИ ФАЙЛОВ
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // ПИНЫ ДИСПЛЕЯ НА САЙТЕ ВОКВИ НАПИСАННО ТАКИМ КОДОМ ТК ЭТО ПРОПИСАННО В ДОКУМЕНТАЦИИ ДИСПЛЕЯ
// И СТРОЧЕК 16 СТОЛБЦА 2
const int ledPin = 13; // ПИНЫ ПОДКЛЮЧЕНИЯ ЛАМПОЧЕК . лампа для повыш темп
const int ledPin2 = 12; // лампочка для показания пониж темп
const int buzzerPin = 10; // ПИНЫ ПОДКЛЮЧЕНИЯ СИГНАЛОК. сигнал для повыш темп
const int buzzerPin2 = 11; // сигнал для пониж
const int buttonUpPin = 7; // Ножка подключения кнопки "Вверх"
const int buttonDownPin = 6; // Ножка подключения кнопки "Вниз"
// НАСТРОЙКА ДАТЧИКА ТЕМП
#define ONE_WIRE_BUS 1 // 1 ЭТО ПИН К КОТОРОМУ ПОДКЛЮЧЕН ПИН
OneWire oneWire(ONE_WIRE_BUS); // onewire это для передачи инфы одновременно и питаня через один провод
DallasTemperature sensors(&oneWire); // оне вайр для датчика
float setTemp = 20.0; // установленная температура
void setup() {
// включение в работу дисплея создание каркаса
lcd.init();
lcd.backlight();
pinMode(buttonUpPin, INPUT_PULLUP);
pinMode(buttonDownPin, INPUT_PULLUP);
// включения в работу датчик
sensors.begin();
// yfписать на дисплей
lcd.setCursor(0, 0);
lcd.print("Temp:");
}
void loop() {
// чтение температуры с датчика
sensors.requestTemperatures();
float temperatureC = sensors.getTempCByIndex(0); // получаем темп с датчика byindex нужен был для того что изначально схема была более замудренная и он нужен был для удобной работы
// вывод температуры на дисплей
lcd.setCursor(0, 1);
lcd.print(temperatureC);
lcd.print(" C ");
lcd.setCursor(10, 0);
lcd.print("Set: ");
lcd.setCursor(10, 1);
lcd.print(setTemp);
// управление лампочкой
if (temperatureC < (setTemp + 3)) { //если темп больше установленной то горит и так для остальных лампочек и сигналов
digitalWrite(ledPin, LOW);
} else {
digitalWrite(ledPin, HIGH);
}
if (temperatureC > (setTemp - 3)) {
digitalWrite(ledPin2, LOW);
} else {
digitalWrite(ledPin2, HIGH);
}
// сигнал
if (temperatureC > (setTemp + 3)) {
tone(buzzerPin, 1000);
delay(50);
noTone(buzzerPin);
}
if (temperatureC < (setTemp - 3)) {
tone(buzzerPin2, 152, 1000);
delay(50);
noTone(buzzerPin2);
}
checkButtons();
delay(250);
}
void checkButtons() {
if (digitalRead(buttonUpPin) == LOW) {
setTemp += 0.5;
}
if (digitalRead(buttonDownPin) == LOW) {
setTemp -= 0.5;
}
}
//digitalread посылать сигнал
// tone звук icd дипслей float показывание данных с цифрами после запятой
// one wire проктокол используется для использования провода как проводником сигнала и однвременно питание по этому же проводу
// Loading
ds18b20
ds18b20