Moseich
Member
Освоил новый BLYNK. Тариф бесплатный с ограниченными функциями. Управление котлом работает надежно. Но случилась ЗАСАДА!
Добавил в скетч получение сигнала об открытии двери. Сигнал получаю, а вот виджет термометра регулятора ( temp) перестал работать, его показания " ритмично изменяются от мин до мах".
Остальные термометры работают исправно.
Убираю из скетча новую ф-ю void ledWidget() - исправляется. Менял сенсор, переставлял ф-ю после setup - не помогает.
Просьба к опытным товарищам посмотреть мой скетч, может найдете в чем причина. Заранее благодарю!
/ PROTO"
#define BLYNK_TEMPLATE_ID "TM...
#define BLYNK_DEVICE_NAME "Pr..
#define BLYNK_AUTH_TOKEN "Iz4RBwehw8"
#include <WiFi.h> //esp32
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
//include <BlynkSimpleEsp8266.h>
/* ----------------ПИНЫ------------
* 15- датчики температуры DS18B20
* 21 - "сухой контакт"
* 22,23- реле
* виртуальные:
* V1 - led1
* V2 - led2
* V10 - led10
* V3- seconds время работы
* V4 - slider
* V0 - temp
*. V5 - temp1
* V6- temp2 */
// Подключение DS18B20
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 15 //WEMOS пины D3 и D4 притянуты к Vcc
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
#define RELE_1 22
#define RELE_2 23
int32_t ONkotel;
const int btnPin = 21; //контроль концевика двери
WidgetLED led1(V0); // temp
WidgetLED led3(V3); // время непрер работы
WidgetLED led(V10);
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = «I.....»;
char pass[] = "....;
BlynkTimer timer;
void myTimerEvent()
{
Blynk.virtualWrite(V3, millis() / 1000);
}
BLYNK_WRITE(V4) //читаем слайдер - задаем регулятору температуру
{
ONkotel = param.asInt();
}
/*****************************************************
получаем данные о температуре и регулируем ее
*******************************************************/
void sendTemps(){
sensors.requestTemperatures();
int16_t temp = sensors.getTempCByIndex(0); -
int16_t temp1 = sensors.getTempCByIndex(1);
int16_t temp2 = sensors.getTempCByIndex(2);
Blynk.virtualWrite(V0, temp ); - ЭТОТ ГАД НЕ РАБОТАЕТ! КАК НАДО
Blynk.virtualWrite(V5, temp1 );
Blynk.virtualWrite(V6, temp2 );
if (temp1 <= ONkotel)
{
led1.on();
digitalWrite(RELE_1, LOW);
}
else if (temp1 >= ONkotel-1)
{
led1.off();
digitalWrite(RELE_1, HIGH);
}
}
void ledWidget()
{
if (digitalRead (btnPin ) == HIGH )
{
Blynk.virtualWrite(V10, HIGH);
}
else {
Blynk.virtualWrite(V10, LOW);
}
delay(500);
}
BLYNK_CONNECTED() // (синхронизация)
{
Blynk.syncVirtual(V2,V4,V10);
}
BLYNK_WRITE(V2) //Виртуальный контакт Реле_2
{
int value2 = param.asInt();
pinMode (RELE_2,OUTPUT);
if(param.asInt() == 1)
{
digitalWrite(RELE_2,LOW);
}
else
{
digitalWrite(RELE_2,HIGH);
}
}
void setup() /*************/
{
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
sensors.begin();//DS
pinMode (5,OUTPUT);
pinMode (21,INPUT);
pinMode (RELE_1,OUTPUT);
digitalWrite (RELE_1, HIGH);
pinMode (RELE_2,OUTPUT);
digitalWrite (RELE_2, HIGH);
timer.setInterval(3000L, myTimerEvent);
timer.setInterval( 1000L, ledWidget);
}
void loop()
{
Blynk.run();
sendTemps();
timer.run();
}
Добавил в скетч получение сигнала об открытии двери. Сигнал получаю, а вот виджет термометра регулятора ( temp) перестал работать, его показания " ритмично изменяются от мин до мах".
Остальные термометры работают исправно.
Убираю из скетча новую ф-ю void ledWidget() - исправляется. Менял сенсор, переставлял ф-ю после setup - не помогает.
Просьба к опытным товарищам посмотреть мой скетч, может найдете в чем причина. Заранее благодарю!
/ PROTO"
#define BLYNK_TEMPLATE_ID "TM...
#define BLYNK_DEVICE_NAME "Pr..
#define BLYNK_AUTH_TOKEN "Iz4RBwehw8"
#include <WiFi.h> //esp32
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
//include <BlynkSimpleEsp8266.h>
/* ----------------ПИНЫ------------
* 15- датчики температуры DS18B20
* 21 - "сухой контакт"
* 22,23- реле
* виртуальные:
* V1 - led1
* V2 - led2
* V10 - led10
* V3- seconds время работы
* V4 - slider
* V0 - temp
*. V5 - temp1
* V6- temp2 */
// Подключение DS18B20
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 15 //WEMOS пины D3 и D4 притянуты к Vcc
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
#define RELE_1 22
#define RELE_2 23
int32_t ONkotel;
const int btnPin = 21; //контроль концевика двери
WidgetLED led1(V0); // temp
WidgetLED led3(V3); // время непрер работы
WidgetLED led(V10);
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = «I.....»;
char pass[] = "....;
BlynkTimer timer;
void myTimerEvent()
{
Blynk.virtualWrite(V3, millis() / 1000);
}
BLYNK_WRITE(V4) //читаем слайдер - задаем регулятору температуру
{
ONkotel = param.asInt();
}
/*****************************************************
получаем данные о температуре и регулируем ее
*******************************************************/
void sendTemps(){
sensors.requestTemperatures();
int16_t temp = sensors.getTempCByIndex(0); -
int16_t temp1 = sensors.getTempCByIndex(1);
int16_t temp2 = sensors.getTempCByIndex(2);
Blynk.virtualWrite(V0, temp ); - ЭТОТ ГАД НЕ РАБОТАЕТ! КАК НАДО
Blynk.virtualWrite(V5, temp1 );
Blynk.virtualWrite(V6, temp2 );
if (temp1 <= ONkotel)
{
led1.on();
digitalWrite(RELE_1, LOW);
}
else if (temp1 >= ONkotel-1)
{
led1.off();
digitalWrite(RELE_1, HIGH);
}
}
void ledWidget()
{
if (digitalRead (btnPin ) == HIGH )
{
Blynk.virtualWrite(V10, HIGH);
}
else {
Blynk.virtualWrite(V10, LOW);
}
delay(500);
}
BLYNK_CONNECTED() // (синхронизация)
{
Blynk.syncVirtual(V2,V4,V10);
}
BLYNK_WRITE(V2) //Виртуальный контакт Реле_2
{
int value2 = param.asInt();
pinMode (RELE_2,OUTPUT);
if(param.asInt() == 1)
{
digitalWrite(RELE_2,LOW);
}
else
{
digitalWrite(RELE_2,HIGH);
}
}
void setup() /*************/
{
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
sensors.begin();//DS
pinMode (5,OUTPUT);
pinMode (21,INPUT);
pinMode (RELE_1,OUTPUT);
digitalWrite (RELE_1, HIGH);
pinMode (RELE_2,OUTPUT);
digitalWrite (RELE_2, HIGH);
timer.setInterval(3000L, myTimerEvent);
timer.setInterval( 1000L, ledWidget);
}
void loop()
{
Blynk.run();
sendTemps();
timer.run();
}