Антон Витальевич
New member
Доброго времени суток уважаемое сообщество, нужна ваша помощь ибо сам только учусь и знаний не хватает, имеем железо WeMos D1R1 на ESP8266, датчик температуры DS18b20 релейный модуль на 8 реле все подключено и настроено через Blynk, температуру отображает реле работают но возникла необходимость подключения визуального отображения температуры на OLED 0.91 I2C привожу пример прошивки помогите интегрировать дисплей.
Код:
#include <ArduinoOTA.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define Relay2 14 //пин реле
boolean tr = true; //назначаем логическую переменную для однократной отправки сообщения о температуре
// персональные данные
char auth[] = "********"; //токен
char ssid[] = "*****"; //Имя точки доступа WIFI
char pass[] = "*******"; //пароль точки доступа WIFI
#define ONE_WIRE_BUS D3 // пин датчика d18b20
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
BlynkTimer timer1;
float temp2; //переменная температуры
int tempConst2 = 10; //температура по умолчанию
int gistT = 1; //задаем дельту
float i; //показания датчика тока
float I; //сила тока
void sendTemps(){ //проверка температуры
sensors.requestTemperatures();
temp2 = sensors.getTempCByIndex(0);
Serial.println(temp2);
Blynk.virtualWrite(V1, temp2);
}
BLYNK_WRITE(V4){ //считываем данные со слайдера
tempConst2 = param.asInt();
}
void checktemp(){ //сравниваем заданную и текущую температуру
if (temp2 >= tempConst2 + gistT) //если температура в норме
{
digitalWrite(Relay2, HIGH); //выключаем реле
Serial.println(tempConst2);
if (tr == true)
{
Blynk.email("*****@etlgr.com", "Температура в норме", " ");
Serial.println("_HIGH_");
tr = false; //присваиваем переменной обратное значение чтобы сообщение больше не отправлялось
}
}
else if (temp2 <= tempConst2 - gistT) // если температура нниже
{
digitalWrite(Relay2, LOW); //включаем реле
Serial.println(tempConst2);
if (tr == false) // проверяем логическую переменную
{
Blynk.email("*****@etlgr.com", "Низкая температура", " ");
Serial.println("_LOW_");
tr = true; //меняем значение переменной чтобы больше не отправлялось сообщение
}
}
}
void amper(){ //датчик силы тока
i = analogRead(A0);
I = (i - 491) / 12,178;
if (I < 0){
I = I * - 1;
}
Serial.println(I);
Blynk.virtualWrite(V2, I);
}
void setup(){ //настройки
pinMode(Relay2, OUTPUT); // пин реле выход
Serial.begin(9600); // скорость сериал порта
Blynk.begin(auth, ssid, pass); //старт блинка
Blynk.syncAll(); // синхронизация блинка
sensors.begin(); // старт датчика температуры
ArduinoOTA.begin(); // старт обновления по воздуху
// Таймеры на запуск функций
timer1.setInterval(3000L, sendTemps); //опрос d18b20
timer1.setInterval(3000L, checktemp); //сравнение текущей температуры с заданой
timer1.setInterval(1000L, amper); //амперметр
}
void loop(){
ArduinoOTA.handle();
Blynk.run();
timer1.run();
}