#include <Wire.h> // Подключаем библиотеку Wire
#include <LiquidCrystal_I2C.h> // Подключаем библиотеку LiquidCrystal_I2C
#include <DallasTemperature.h> // Подключаем библиотеку DallasTempature
//#define DS18B20 10 // Указываем, к какому выводу подключена DQ
//#define DS18B20 11
//#define DS18B20 12
//#define DS18B20 13
OneWire T1(10);
OneWire T2(11);
OneWire T3(12);
OneWire T4(13);
DallasTemperature sensors1(&T1);
DallasTemperature sensors2(&T2);
DallasTemperature sensors3(&T3);
DallasTemperature sensors4(&T4);
#define PIN_POT A0
LiquidCrystal_I2C lcd(0x27,16,2); // Задаем адрес и размер дисплея
uint32_t tmr, tmr1;
uint32_t timer = 0;
int SETtemp;
float TEKtemp;
int rotat;
int prevSET = 0;
int Hister = 20;
int val_prev = 0;
bool flagDISP;
bool flag1 = false;
bool flag2 = false;
bool flag3 = false;
bool flag4 = false;
bool flag11 = false;
bool flag12 = false;
bool flag13 = false;
bool flag14 = false;
void setup()
{
sensors1.begin(); // Запуск библиотеки, по умолчанию 9 бит, то есть кратность 0.5 градуса
sensors2.begin();
sensors3.begin();
sensors4.begin();
lcd.init(); // Инициализация lcd
lcd.backlight(); // Включаем подсветку
Serial.begin(9600);
pinMode(10, INPUT);
pinMode(11, INPUT);
pinMode(12, INPUT);
pinMode(13, INPUT);
pinMode(PIN_POT, INPUT);
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(A3, INPUT);
analogReference(INTERNAL);
}
void loop()
{
if (millis() - timer >= 750) {
timer = millis();
sensors1.requestTemperatures(); // Считываем показания температуры
sensors2.requestTemperatures();
sensors3.requestTemperatures();
sensors4.requestTemperatures();
}
int temp1 = (sensors1.getTempCByIndex(0)*10);
int temp2 = (sensors2.getTempCByIndex(0)*10);
int temp3 = (sensors3.getTempCByIndex(0)*10);
int temp4 = (sensors4.getTempCByIndex(0)*10);
rotat = analogRead(PIN_POT);
int SETtemp = ((analogRead(A0) / 40+10)*10);
//Serial.println(SETtemp/10);
bool flag1 = digitalRead(2);
bool flag2 = digitalRead(3);
bool flag3 = digitalRead(4);
bool flag4 = digitalRead(5);
//Отслеживание температуры
if (temp1 < (SETtemp - Hister))
flag11 = 1;
else if (temp1 >= SETtemp)
flag11 = 0;
if (temp2 < (SETtemp - Hister))
flag12 = 1;
else if (temp2 >= SETtemp)
flag12 = 0;
if (temp3 < (SETtemp - Hister))
flag13 = 1;
else if (temp3 >= SETtemp)
flag13 = 0;
if (temp4 < (SETtemp - Hister))
flag14 = 1;
else if (temp4 >= SETtemp)
flag14 = 0;
//Сработка реле
if (flag1 && flag11)
digitalWrite(6, 1);
else
digitalWrite(6, 0);
if (flag2 && flag12)
digitalWrite(7, 1);
else
digitalWrite(7, 0);
if (flag3 && flag13)
digitalWrite(8, 1);
else
digitalWrite(8, 0);
if (flag4 && flag14)
digitalWrite(9, 1);
else
digitalWrite(9, 0);
int val = SETtemp;
if (val_prev != val){
val_prev = val;
lcd.home(); // курсор в начало
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.home();
lcd.print("SET = ");
lcd.print(SETtemp/10);
//if (millis() - tmr1 >= 10000) {
//tmr1 = millis();
//flagDISP = !flagDISP;}
}
else
{
if (millis() - tmr1 >= 10000) {
tmr1 = millis();
lcd.setCursor(0,0);
lcd.print("T1=");
lcd.print(sensors1.getTempCByIndex(0),1); // Выводим показания температуры
lcd.setCursor(7,0);
lcd.print(" ");
lcd.print("T2=");
lcd.print(sensors2.getTempCByIndex(0),1);
lcd.setCursor(0,1);
lcd.print("T3=");
lcd.print(sensors3.getTempCByIndex(0),1);
lcd.setCursor(8,1);
lcd.print("T4=");
lcd.print(sensors4.getTempCByIndex(0),1);
}
}
}Loading
ds18b20
ds18b20
Loading
ds18b20
ds18b20
Loading
ds18b20
ds18b20
Loading
ds18b20
ds18b20