// назначаем ножки и переменные int led = 13; // ножка на ключ int pin1 = 1; // вход 1 для управления int pin2 = 2; // вход 2 для управления int pin3 = 3; // вход 3 для управления int val1 = 0; // переменная для считывания логики с входа 1 int val2 = 0; // переменная для считывания логики с входа 2 int val3 = 0; // переменная для считывания логики с входа 3 int x = 0; //датчки Т внутри int y = 0; //датчик Т снаружи #include OneWire ds(10); // Создаем объект OneWire для шины 1-Wire #include #define ONE_WIRE_BUS 10 // номер пина к которому подключены DS18B20 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors1(&oneWire); #include OLED myOLED(4, 5, 4); // 4pin - SDA , 5pin - SCL extern uint8_t RusFont[]; // Русский шрифт extern uint8_t MegaNumbers[]; // Подключение больших шрифтов extern uint8_t MediumNumbers[]; // Подключение средних шрифтов extern uint8_t SmallFont[]; // Базовый шрифт без поддержки русскийх символов. void setup() { sensors1.begin(); myOLED.begin(); Serial.begin(9600); pinMode(led, OUTPUT); // назначаем ножки и переменные на вход и выход pinMode(pin1, INPUT); pinMode(pin2, INPUT); pinMode(pin3, INPUT); } void loop() { sensors1.requestTemperatures(); val1 = analogRead(pin1); // считываем уровень с пина 1. val2 = analogRead(pin2); // считываем уровень с пина 2. val3 = analogRead(pin3); // считываем уровень с пина 3. y = sensors1.getTempCByIndex(0); // внутри x = sensors1.getTempCByIndex(1); // снаружи //начинается алгоритм if (val1>1) // если вход 1 со значением 1, то автоматический режим // АВТОМАТИЧЕСКИЙ РЕЖИМ { if (val2<1) { // автоматический режим с точностью до 5 градусов myOLED.update(); myOLED.clrScr(); // очищаем экран myOLED.setFont(RusFont); // Устанавливаем русский шрифт myOLED.print("FDNJVFNBXTCRBQ +-5", CENTER , 0); // Выводим надпись "Автоматический" myOLED.print("Ntvgthfnehf", CENTER, 7); // Выводим надпись "Температура" myOLED.print("Cyfhe;b Dyenhb", CENTER, 39); myOLED.print("YF EKBWT NTGKTT", CENTER, 47); myOLED.print("FDNJVFNBXTCRGQ HT:BV", CENTER, 57); myOLED.setFont(SmallFont); myOLED.setFont(MediumNumbers); myOLED.print(String(sensors1.getTempCByIndex(1) , 1), LEFT, 20); // Отображение температуры снаружи myOLED.print(String(sensors1.getTempCByIndex(0) , 1), RIGHT, 20); // Отображение температуры внутри if (((y<20) & (x>y)) || ((y>25) & (xy)) || ((y>30) & (x y) { digitalWrite(led, HIGH); // для режима нагрева, когда снаружи теплее, включается вентилятор myOLED.update(); myOLED.clrScr(); // очищаем экран myOLED.setFont(RusFont); // Устанавливаем русский шрифт myOLED.print(" HEXYJQ HT:BV ", CENTER, 0); // Выводим надпись "РУЧНОЙ" myOLED.print("Ntvgthfnehf", CENTER, 7); // Выводим надпись "Температура" myOLED.print("Cyfhe;b Dyenhb", CENTER, 39); myOLED.print("YF EKBWT NTGKTT", CENTER, 47); myOLED.print("HT:BV YFUHTDF", CENTER, 57); myOLED.setFont(SmallFont); myOLED.setFont(MediumNumbers); myOLED.print(String(sensors1.getTempCByIndex(1) , 1), LEFT, 20); // Отображение температуры myOLED.print(String(sensors1.getTempCByIndex(0) , 1), RIGHT, 20); // Отображение температуры } if (x < y) { digitalWrite(led, LOW); // для режима нагрева, когда снаружи холоднее, выключается вентилятор myOLED.update(); myOLED.clrScr(); // очищаем экран myOLED.setFont(RusFont); // Устанавливаем русский шрифт myOLED.print(" HEXYJQ HT:BV ", CENTER, 0); // Выводим надпись "РУЧНОЙ" myOLED.print("Ntvgthfnehf", CENTER, 7); // Выводим надпись "Температура" myOLED.print("Cyfhe;b Dyenhb", CENTER, 39); myOLED.print("YF EKBWT {JKJLYTT", CENTER, 47); myOLED.print("HT:BV YFUHTDF", CENTER, 57); myOLED.setFont(SmallFont); myOLED.setFont(MediumNumbers); myOLED.print(String(sensors1.getTempCByIndex(1) , 1), LEFT, 20); // Отображение температуры myOLED.print(String(sensors1.getTempCByIndex(0) , 1), RIGHT, 20); // Отображение температуры } } else { if (x < y ) { digitalWrite(led, HIGH ); // для режима охлаждения, когда снаружи холоднее, включается вентилятор myOLED.update(); myOLED.clrScr(); // очищаем экран myOLED.setFont(RusFont); // Устанавливаем русский шрифт myOLED.print(" HEXYJQ HT:BV ", CENTER, 0); // Выводим надпись "РУЧНОЙ" myOLED.print("Ntvgthfnehf", CENTER, 7); // Выводим надпись "Температура" myOLED.print("Cyfhe;b Dyenhb", CENTER, 39); myOLED.print("YF EKBWT {JKJLYTT", CENTER, 47); myOLED.print("J{KF:LTYBT", CENTER, 57); myOLED.setFont(SmallFont); myOLED.setFont(MediumNumbers); myOLED.print(String(sensors1.getTempCByIndex(1) , 1), LEFT, 20); // Отображение температуры myOLED.print(String(sensors1.getTempCByIndex(0) , 1), RIGHT, 20); // Отображение температуры } if (x > y ) { digitalWrite(led, LOW); // для режима охлаждения, когда снаружи теплее, выключается вентилятор myOLED.update(); myOLED.clrScr(); // очищаем экран myOLED.setFont(RusFont); // Устанавливаем русский шрифт myOLED.print(" HEXYJQ HT:BV ", CENTER, 0); // Выводим надпись "РУЧНОЙ" myOLED.print("Ntvgthfnehf", CENTER, 7); myOLED.print("Cyfhe;b Dyenhb", CENTER, 39); myOLED.print("YF EKBWT NTGKTT", CENTER, 47); myOLED.print("J{KF:LTYBT", CENTER, 57); myOLED.setFont(SmallFont); myOLED.setFont(MediumNumbers); myOLED.print(String(sensors1.getTempCByIndex(1) , 1), LEFT, 20); // Отображение температуры myOLED.print(String(sensors1.getTempCByIndex(0) , 1), RIGHT, 20); // Отображение температуры } } } }