Ви не увійшли.
Сторінки 1
Доброго дня, я новачок за допомогою інструкцій в інтернеті написав код і при роботі через хвилину після включення на телефоні вибиває Your Dht11 test went offline.Буду дуже вдячний хто поможе вирішити цю проблему
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#define BLYNK_PRINT Serial
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Устанавливаем дисплей
char auth[] = "cvqv1m6B1BQVRple1Vx-TO4ZnuCvd1hM"; //ID blynk
/* WiFi credentials */
const char* ssid2 = "InetHome 35"; //Имя точки доступа WIFI
const char* password2 = "123321123321"; //пароль точки доступа WIFI
char ssid[] = "InetHome 35"; //підключення до wifi
char pass[] = "123321123321";
/* TIMER */
SimpleTimer timer;
/* DS18B20 Temperature Sensor */
#include <OneWire.h>
#include<DallasTemperature.h>
#define ONE_WIRE_BUS 2 // DS18B20 подключаем на D4 на плате
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);
int temp_0;
int temp_1;
const int girc = 13; //гірконг пін(d7)
const int girc_2 = 12; //гірконг пін(d6)
int gircstate = 0; // статус гірконгу
int gircstate_2 = 0; // статус гірконгу
int maxtemp = 26 ; //Максимальна температура;
int mintemp = 20;
//мінімальна температура;
int buzer = 14; //Підключення бузера(D5)
int val = 0;
int val_3 = 0;
void setup()
{
lcd.begin();
lcd.setCursor(5, 0); // Устанавливаем курсор в позицию (3 столбец, 0 строка)
lcd.print("I start");
lcd.setCursor(3, 1); // Устанавливаем курсор в позицию (3 столбец, 0 строка)
lcd.print(""); // Выводим текст , начиная с установленной позиции курсора
pinMode(buzer, OUTPUT); //Ініцилізація бузера
pinMode(girc, INPUT); //Ініцалізація гірконгу
pinMode(girc_2, INPUT); //Ініцалізація гірконгу
Serial.begin(115200);
Blynk.begin(auth, ssid, pass); //Підключення до wifi
DS18B20.begin();
timer.setInterval(1000L, getSendData);
Serial.println(" ");
Serial.println("Testing Dual Sensor data");
Blynk.notify("Пристрій запустився"); //Пристрій запустився (push)
Blynk.email("www.romanvd.com@gmail.com", "Холодильник", "Пристрій запустився");
lcd.backlight(); // Включаем подсветку LCD дисплея
lcd.setCursor(5, 0); // Устанавливаем курсор в позицию (3 столбец, 0 строка)
lcd.print("I work!"); // Выводим текст "LCD", начиная с установленной позиции курсора
delay(2000);
lcd.clear(); // Чистим дисплей (надпись безвозвратно исчезнет с дисплея)
}
void loop()
{
lcdinfo();
gircstate = digitalRead(girc); //Зчитування статусу гірконга
gircstate_2 = digitalRead(girc_2); //Зчитування статусу гірконга
//----------------------Двері1----------------------
if (digitalRead(girc) == 1) //Якщо двері відкриті ...
{
val++;// прибавляем к переменной 1 при каждой смене цикла.
delay(5000);//Час на скільки відкриті двері
}
else
{
val = 0;
lcd.setCursor(0, 1); // Устанавливаем курсор в позицию (3 столбец, 0 строка)
lcd.print("Door close"); // Выводим текст , начиная с установленной позиции курсора
}
if (val >= 5) //Якщо двері відкриті більше ніж на вказаний час
{
digitalWrite(10, !digitalRead(10)); //инвертируем состояние пина
val = 0;
Blynk.email("www.romanvd.com@gmail.com", "Холодильник", "Двері 2 відкриті");
Blynk.notify("Двері 1 відкриті");
digitalWrite(buzer, HIGH);
delay(20000);
}
//----------------------Двері1----------------------
//----------------------Двері2----------------------
if (digitalRead(girc_2) == 1) //Якщо двері відкриті ...
{
val_3++;// прибавляем к переменной 1 при каждой смене цикла.
delay(5000);//Час на скільки відкриті двері
}
else
{
val_3 = 0;
lcd.setCursor(11, 1); // Устанавливаем курсор в позицию (3 столбец, 0 строка)
lcd.print("close"); // Выводим текст , начиная с установленной позиции курсора
}
if (val_3 >= 5) //Якщо двері відкриті більше ніж на вказаний час
{
digitalWrite(10, !digitalRead(10)); //инвертируем состояние пина
val_3 = 0;
Blynk.email("www.romanvd.com@gmail.com", "Холодильник", "Двері 2 відкриті");
Blynk.notify("Двері 2 відкриті");
digitalWrite(buzer, HIGH);
delay(20000);
}
//----------------------Двері2----------------------
if (temp_1 == -127) { //Помилка датчика температури холодильник 1
Blynk.notify("Помилка датчика температури Холодильник 1");
Blynk.email("www.romanvd.com@gmail.com", "Холодильник", "Помилка датчика температури Холодильник 1");
buz();
delay(20000);
}
if (temp_0 == -127) { //Помилка датчика температури холодильник 2
Blynk.notify("Помилка датчика температури Холодильник 2");
Blynk.email("www.romanvd.com@gmail.com", "Холодильник", "Помилка датчика температури Холодильник 2");
buz();
delay(20000);
}
if (temp_1 > maxtemp) { //Якщо температура більша за вказану
Blynk.email("www.romanvd.com@gmail.com", "Холодильник", "Температура більша максимальної холодильник 1");
Blynk.notify("Температура більша максимальної (холодильник 1)");
buz();
delay(15000);
}
if (temp_0 > maxtemp) { //Якщо температура більша за вказану
Blynk.email("www.romanvd.com@gmail.com", "Холодильник", "Температура більша максимальної холодильник 2");
Blynk.notify("Температура більша максимальної (холодильник 2)");
buz();
delay(15000);
}
if (temp_0 < mintemp) //Якщо температура менша за вказану
{
Blynk.email("www.romanvd.com@gmail.com", "Холодильник", "Температура менша мінімальної (холодильник 2)");
Blynk.notify("Температура менша мінімальної (холодильник 2)");
buz();
delay(15000);
}
if (temp_1 < mintemp) //Якщо температура менша за вказану
{
Blynk.email("www.romanvd.com@gmail.com", "Холодильник", "Температура менша мінімальної (холодильник 1)");
Blynk.notify("Температура менша мінімальної (холодильник 1)");
buz();
delay(15000);
}
timer.run(); // Initiates SimpleTimer
Blynk.run();
}
/***************************************************
Send Sensor data to Blynk
**************************************************/
void yield() //Start blynk
{
Blynk.run();
timer.run();
}
void lcdinfo() //Start blynk
{
getSendData();
int val_2 = 0;
lcd.setCursor(0, 0); // Устанавливаем курсор на 1 строку, ячейка 7
lcd.print("Temp:"); // Выводим показания температуры
lcd.setCursor(6, 0); // Устанавливаем курсор на 1 строку, ячейка 7
lcd.print(temp_1); // Выводим показания температуры
lcd.setCursor(8, 0); // Устанавливаем курсор на 1 строку, ячейка 7
lcd.print("C"); // Выводим показания температуры
lcd.setCursor(12, 0); // Устанавливаем курсор на 1 строку, ячейка 7
lcd.print(temp_0); // Выводим показания температуры
lcd.setCursor(14, 0); // Устанавливаем курсор на 1 строку, ячейка 7
lcd.print("C"); // Выводим показания температуры
if (temp_1 == -127 or temp_0 == -127) { //Якщо помилка датчика температури то почистити екран
lcd.clear();
}
//----------------------Двері1----------------------
if (digitalRead(girc) == 1) //Якщо двері відкриті ...
{
lcd.setCursor(0, 1);
lcd.print("Door open!"); //Вивести двері відкриті
}
else { //По іншому
lcd.setCursor(0, 1);
lcd.print("Door close"); //Вивести двері закриті
}
//----------------------Двері1----------------------
//----------------------Двері2----------------------
if (digitalRead(girc_2) == 1) //Якщо двері відкриті ...
{
lcd.setCursor(11, 1);
lcd.print("open!"); //Вивести двері відкриті
}
else { //По іншому
lcd.setCursor(11, 1);
lcd.print("close"); //Вивести двері закриті
}
//----------------------Двері2----------------------
if (temp_1 < -10 and temp_1 < 10 or temp_0 < -10 and temp_0 < 10) {
val_2++;
}
if (val_2 == 1) {
lcd.clear();
}
else {
val_2 = 0;
}
if(temp_1 < maxtemp and temp_1 != -127 and temp_1 > mintemp and temp_0 < maxtemp and temp_0 != -127 and temp_0 > mintemp) //Якщо все нормально виключити бузер
{
buz();
digitalWrite(buzer, LOW);
}
}
void buz() //Функція бузера
{
if (temp_1 > maxtemp or temp_1 == -127 or temp_1 < mintemp or temp_0 > maxtemp or temp_0 == -127 or temp_0 < mintemp) { //Якщо темпреатура більша або менша або помилка датчика включити бузер
digitalWrite(buzer, LOW);
delay(100);
digitalWrite(buzer, HIGH);
delay(5000);
}
else if(temp_1 < maxtemp and temp_1 != -127 and temp_1 > mintemp and temp_0 < maxtemp and temp_0 != -127 and temp_0 > mintemp) //Якщо все нормально виключити бузер
{
digitalWrite(buzer, LOW);
}
if (val >= 5 or val_3 >= 5) {
digitalWrite(buzer, HIGH);
delay(1000);
digitalWrite(buzer, LOW);
delay(1000);
}
}
void getSendData()
{
yield();
DS18B20.requestTemperatures();
temp_0 = DS18B20.getTempCByIndex(0); // Sensor 0 показания для датчика 1 в цельсиях
temp_1 = DS18B20.getTempCByIndex(1); // Sensor 0 показания для датчика 2 в цельсиях
Serial.print("Temp_0: ");
Serial.print(temp_0);
Serial.print(" oC . Temp_1: ");
Serial.print(temp_1);
Serial.println(" oC");
Blynk.virtualWrite(12, temp_0); //выврд данных на виртуальный пин V10
Blynk.virtualWrite(11, temp_1); //вывод данных навиртуальный пин V11
}
Остання редакція Romanvd (2020-04-28 18:16:45)
Неактивний
Вариантов два
1)как уже неоднократно говорилось - написать нормальный код без delay
2)в Blynk-е тупо отключить оповещения, ну и заодно разобраться почему в программе используется датчик ds18b20, а Blynk матерится на dht11
Неактивний
Сторінки 1