BLYNK, при изменении программы нет соединения

Homo Faber
Offline
Зарегистрирован: 25.05.2019

Здравствуйте, уважаемые гуру Arduino.
Есть Arduino UNO с внешним модулем ESP8266 (ESP-01 с платой согласования уровней).
Решил попробовать свои силы в BLYNKе, скачал скетч, изменил в соответствии с инструкцией - работает.
Вот сам скетч:

#define BLYNK_PRINT Serial

// Подключение библиотек
#include
#include
#include // Библиотека програмной реализации обмена по UART-протоколу

// 8 - RX, 9 - TX, соответствует обозначениям на адаптере питания и сигналов модуля ESP-01
SoftwareSerial EspSerial(9, 8); // RX, TX

char auth[] = "******************"; // Идентификатор
char ssid[] = "**************"; // Точка доступа
char pass[] = "**************"; // Пароль

#define ESP8266_BAUD 9600 // Задаём скорость подключения модуля ESP8266(ESP-01) 9600 бод

ESP8266 wifi(&EspSerial);

WidgetLED led1(V1);

BlynkTimer timer;
bool ledStatus = false;

#define BLYNK_GREEN "#23C48E"
#define BLYNK_BLUE "#04C0F8"
#define BLYNK_YELLOW "#ED9D00"
#define BLYNK_RED "#D3435C"
#define BLYNK_DARK_BLUE "#5F7CD8"

void setup()
{
Serial.begin(9600); // Подключаем последовательный порт со скоростью 9600

delay(10); // Задержка 10 mS

EspSerial.begin(ESP8266_BAUD); // Подключаем модуль ESP8266(ESP-01) на заданной скорости

delay(10); // Задержка 10 mS

Blynk.begin(auth, wifi, ssid, pass); // Соединяемся с BLYNK

// Turn LED on, so colors are visible
led1.on();
// Setup periodic color change
timer.setInterval(1000L, blinkLedWidget);
}

void loop()
{
Blynk.run();
timer.run();
}

void blinkLedWidget()
{
if (ledStatus)
{
led1.setColor(BLYNK_RED);
Serial.println("LED on V1: red");
ledStatus = false;
}
else
{
led1.setColor(BLYNK_GREEN);
Serial.println("LED on V1: green");
ledStatus = true;
}
}

Решил немного модифицировать, чтобы менялись цвета светодиода, вроде ничего сложного.

#define BLYNK_PRINT Serial

// Подключение библиотек
#include
#include
#include // Библиотека програмной реализации обмена по UART-протоколу

// 8 - RX, 9 - TX, соответствует обозначениям на адаптере питания и сигналов модуля ESP-01
SoftwareSerial EspSerial(9, 8); // RX, TX

char auth[] = "******************"; // Идентификатор
char ssid[] = "**************"; // Точка доступа
char pass[] = "**************"; // Пароль

#define ESP8266_BAUD 9600 // Задаём скорость подключения модуля ESP8266(ESP-01) 9600 бод

ESP8266 wifi(&EspSerial);

WidgetLED led1(V1);

BlynkTimer timer;
//bool ledStatus = false;
int LED_Cnt = 0;

#define BLYNK_GREEN "#23C48E"
#define BLYNK_BLUE "#04C0F8"
#define BLYNK_YELLOW "#ED9D00"
#define BLYNK_RED "#D3435C"
#define BLYNK_DARK_BLUE "#5F7CD8"

void setup()
{
Serial.begin(9600); // Подключаем последовательный порт со скоростью 9600

delay(10); // Задержка 10 mS

EspSerial.begin(ESP8266_BAUD); // Подключаем модуль ESP8266(ESP-01) на заданной скорости

delay(10); // Задержка 10 mS

Blynk.begin(auth, wifi, ssid, pass); // Соединяемся с BLYNK

// Turn LED on, so colors are visible
led1.on();
// Setup periodic color change
timer.setInterval(1000L, blinkLedWidget);
}

void loop()
{
Blynk.run();
timer.run();
}

void blinkLedWidget()
{
if (LED_Cnt=1)
{
led1.setColor(BLYNK_RED);
Serial.println("LED on V1: КРАСНЫЙ");
}
if (LED_Cnt=2)
{
led1.setColor(BLYNK_BLUE);
Serial.println("LED on V1: ГОЛУБОЙ");
}
if (LED_Cnt=3)
{
led1.setColor(BLYNK_YELLOW);
Serial.println("LED on V1: ЖЁЛТЫЙ");
}
if (LED_Cnt=4)
{
led1.setColor(BLYNK_GREEN);
Serial.println("LED on V1: ЗЕЛЁНЫЙ");
}
if (LED_Cnt=5)
{
led1.setColor(BLYNK_DARK_BLUE);
Serial.println("LED on V1: СИНИЙ");
LED_Cnt=0;
}
LED_Cnt=LED_Cnt+1;
}

Закомментировал булеву переменную и организовал простейший счётчик. На смартфоне постоянно выдаёт:
NewDevice
Offline Since время и дата
Внизу экрана появляются по очереди 2 надписи:
New Device connected
и
New Device disconnected
Соответственно и светодиод цвет не меняет...
Сам проект на смартфоне не менял, пробный вариант с одним светодиодом.
Пробовал выходить из BLYNK на смартфоне, не помогает.
Если кто-то сталкивался с подобной ситуацией, подскажите, в чём может быть дело?
Неужели каждый раз нужно создавать новый проект?

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

Как эту хрень читать?

Homo Faber
Offline
Зарегистрирован: 25.05.2019

Здравствуйте, уважаемые гуру Arduino.

ИЗВИНТЕ, ПРИ СОЗДАНИИ ТЕМЫ СТО-ТО ПОШЛО НЕ ТАК, ПОЭТОМУ ПОВТОРЯЮ.

Есть Arduino UNO с внешним модулем ESP8266 (ESP-01 с платой согласования уровней).
Решил попробовать свои силы в BLYNKе, скачал скетч, изменил в соответствии с инструкцией - работает.
Вот сам скетч:

#define BLYNK_PRINT Serial

// Подключение библиотек
#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>
#include <SoftwareSerial.h>                                       // Библиотека програмной реализации обмена по UART-протоколу

// 8 - RX, 9 - TX, соответствует обозначениям на адаптере питания и сигналов модуля ESP-01
SoftwareSerial EspSerial(9, 8); // RX, TX

char auth[] = "*****************";                 // Идентификатор
char ssid[] = "*****************";                                       // Точка доступа
char pass[] = "*****************";                                         // Пароль

#define ESP8266_BAUD 9600                                         // Задаём скорость подключения модуля ESP8266(ESP-01) 9600 бод

ESP8266 wifi(&EspSerial);

WidgetLED led1(V1);

BlynkTimer timer;
bool ledStatus = false;

#define BLYNK_GREEN     "#23C48E"
#define BLYNK_BLUE      "#04C0F8"
#define BLYNK_YELLOW    "#ED9D00"
#define BLYNK_RED       "#D3435C"
#define BLYNK_DARK_BLUE "#5F7CD8"

void setup()
{
  Serial.begin(9600);                                             // Подключаем последовательный порт со скоростью 9600

  delay(10);                                                      // Задержка 10 mS

  EspSerial.begin(ESP8266_BAUD);                                  // Подключаем модуль ESP8266(ESP-01) на заданной скорости

  delay(10);                                                      // Задержка 10 mS

  Blynk.begin(auth, wifi, ssid, pass);                            // Соединяемся с BLYNK

  // Turn LED on, so colors are visible
  led1.on();
  // Setup periodic color change
  timer.setInterval(1000L, blinkLedWidget);
}

void loop()
{
  Blynk.run();
  timer.run();
}

void blinkLedWidget()
{
  if (ledStatus)
     {
      led1.setColor(BLYNK_RED);
      Serial.println("LED on V1: red");
      ledStatus = false;
     }
  else
     {
      led1.setColor(BLYNK_GREEN);
      Serial.println("LED on V1: green");
      ledStatus = true;
     }
}

Решил немного модифицировать, чтобы менялись цвета светодиода, вроде ничего сложного.


#define BLYNK_PRINT Serial

// Подключение библиотек
#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>
#include <SoftwareSerial.h>                                       // Библиотека програмной реализации обмена по UART-протоколу

// 8 - RX, 9 - TX, соответствует обозначениям на адаптере питания и сигналов модуля ESP-01
SoftwareSerial EspSerial(9, 8); // RX, TX

char auth[] = "*********************";                 // Идентификатор
char ssid[] = "*********************";                                       // Точка доступа
char pass[] = "*********************";                                         // Пароль

#define ESP8266_BAUD 9600                                         // Задаём скорость подключения модуля ESP8266(ESP-01) 9600 бод

ESP8266 wifi(&EspSerial);

WidgetLED led1(V1);

BlynkTimer timer;
//bool ledStatus = false;
int LED_Cnt = 0;

#define BLYNK_GREEN     "#23C48E"
#define BLYNK_BLUE      "#04C0F8"
#define BLYNK_YELLOW    "#ED9D00"
#define BLYNK_RED       "#D3435C"
#define BLYNK_DARK_BLUE "#5F7CD8"

void setup()
{
  Serial.begin(9600);                                             // Подключаем последовательный порт со скоростью 9600

  delay(10);                                                      // Задержка 10 mS

  EspSerial.begin(ESP8266_BAUD);                                  // Подключаем модуль ESP8266(ESP-01) на заданной скорости

  delay(10);                                                      // Задержка 10 mS

  Blynk.begin(auth, wifi, ssid, pass);                            // Соединяемся с BLYNK

  // Turn LED on, so colors are visible
  led1.on();
  // Setup periodic color change
  timer.setInterval(1000L, blinkLedWidget);
}

void loop()
{
  Blynk.run();
  timer.run();
}

void blinkLedWidget()
{
  if (LED_Cnt=1)
     {
      led1.setColor(BLYNK_RED);
      Serial.println("LED on V1: КРАСНЫЙ");
     }
  if (LED_Cnt=2)
     {
      led1.setColor(BLYNK_BLUE);
      Serial.println("LED on V1: ГОЛУБОЙ");
     }
  if (LED_Cnt=3)
     {
      led1.setColor(BLYNK_YELLOW);
      Serial.println("LED on V1: ЖЁЛТЫЙ");
     }
  if (LED_Cnt=4)
     {
      led1.setColor(BLYNK_GREEN);
      Serial.println("LED on V1: ЗЕЛЁНЫЙ");
     }
  if (LED_Cnt=5)
     {
      led1.setColor(BLYNK_DARK_BLUE);
      Serial.println("LED on V1: СИНИЙ");
      LED_Cnt=0;
     }
  LED_Cnt=LED_Cnt+1;
}

Закомментировал булеву переменную и организовал простейший счётчик. На смартфоне постоянно выдаёт:
NewDevice
Offline Since время и дата
Внизу экрана появляются по очереди 2 надписи:
New Device connected
и
New Device disconnected
Соответственно и светодиод цвет не меняет...
Сам проект на смартфоне не менял, пробный вариант с одним светодиодом.
Пробовал выходить из BLYNK на смартфоне, не помогает.
Если кто-то сталкивался с подобной ситуацией, подскажите, в чём может быть дело?
Неужели каждый раз нужно создавать новый проект?

Homo Faber
Offline
Зарегистрирован: 25.05.2019

Да, забыл уточнить: при возврате к первоначальному скетчу всё работает штатно.

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

А ESP что в монитор порта пишет? 

Судя по симптомам - ЕСПшка ребутится от вашего "автомата"

b707
Offline
Зарегистрирован: 26.05.2017

Homo Faber пишет:

Закомментировал булеву переменную и организовал простейший счётчик

неправильно организовали.

почитайте какой-нить учебник на тему оператора сравнения в Си. Может тогда найдете кучу ошибок в этом коде:

void blinkLedWidget()
{
  if (LED_Cnt=1)
     {
      led1.setColor(BLYNK_RED);
      Serial.println("LED on V1: КРАСНЫЙ");
     }
  if (LED_Cnt=2)
     {
      led1.setColor(BLYNK_BLUE);
      Serial.println("LED on V1: ГОЛУБОЙ");
     }
  if (LED_Cnt=3)
     {
      led1.setColor(BLYNK_YELLOW);
      Serial.println("LED on V1: ЖЁЛТЫЙ");
     }
  if (LED_Cnt=4)
     {
      led1.setColor(BLYNK_GREEN);
      Serial.println("LED on V1: ЗЕЛЁНЫЙ");
     }
  if (LED_Cnt=5)
     {
      led1.setColor(BLYNK_DARK_BLUE);
      Serial.println("LED on V1: СИНИЙ");
      LED_Cnt=0;
     }
  LED_Cnt=LED_Cnt+1;
}

 

 

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

b707 пишет:

неправильно организовали.

Точно...

Homo Faber
Offline
Зарегистрирован: 25.05.2019

Да, косякнул, поставил "=" вместо "==" в операторах сравнения. Виноват.

Вот ответ, уже после исправления:

[19] 

    ___  __          __
   / _ )/ /_ _____  / /__
  / _  / / // / _ \/  '_/
 /____/_/\_, /_//_/_/\_\
        /___/ v1.0.0-beta.3 on Arduino Uno
 
[616] Connecting to ********
[3798] AT version:1.2.0.0(Jul  1 2016 20:04:45)
SDK version:1.5.4.1(39cb9a32)
v1.0.0
Mar 11 2018 18:27:31
OK
[9074] +CIFSR:STAIP,"192.168.0.11"
+CIFSR:STAMAC,"ec:fa:bc:87:a7:ec"
[9081] Connected to WiFi
[19736] Ready (ping: 26ms).
[46058] Ready (ping: 26ms).
[72374] Ready (ping: 25ms).
[98590] Ready (ping: 25ms).
[124910] Ready (ping: 26ms).
 
Собственно говоря ответ не изменился.
То есть попытка достучаться есть, но, как и ранее писал:
New Device
Offline Since время и дата
Внизу экрана появляются по очереди 2 надписи:
New Device connected
и
New Device disconnected
Таким образом ошибка всё-таки не в цикле, а в коннекте, получается...
Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

Homo Faber пишет:

А если заправить этот код непосредственно в ЕСП (вообще без ардуины) что получится?

#define BLYNK_PRINT Serial

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "YourAuthToken";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "YourNetworkName";
char pass[] = "YourPassword";

WidgetLED led1(V1);

BlynkTimer timer;
//bool ledStatus = false;
uint8_t LED_Cnt{0};

#define BLYNK_GREEN     "#23C48E"
#define BLYNK_BLUE      "#04C0F8"
#define BLYNK_YELLOW    "#ED9D00"
#define BLYNK_RED       "#D3435C"
#define BLYNK_DARK_BLUE "#5F7CD8"



void blinkLedWidget(){
  if (LED_Cnt==0){
      led1.setColor(BLYNK_RED);
      Serial.println("LED on V1: КРАСНЫЙ");
     }
  if (LED_Cnt==1){
      led1.setColor(BLYNK_BLUE);
      Serial.println("LED on V1: ГОЛУБОЙ");
     }
  if (LED_Cnt==2){
      led1.setColor(BLYNK_YELLOW);
      Serial.println("LED on V1: ЖЁЛТЫЙ");
     }
  if (LED_Cnt==3){
      led1.setColor(BLYNK_GREEN);
      Serial.println("LED on V1: ЗЕЛЁНЫЙ");
     }
  if (LED_Cnt==4){
      led1.setColor(BLYNK_DARK_BLUE);
      Serial.println("LED on V1: СИНИЙ");
      LED_Cnt=0;
     }
LED_Cnt++;
} 


void setup() { 
  Serial.begin(9600); 
  Blynk.begin(auth, ssid, pass); 
  led1.on(); 
  timer.setInterval(1000L, blinkLedWidget); } 

void loop() { 
  Blynk.run(); 
  timer.run(); 
}

 

Homo Faber
Offline
Зарегистрирован: 25.05.2019

Если честно, то ХЗ, что получится.

Ведь изначальный скетч работает, там где переключение 2-х цветов, а где переключение 5-ти цветов уже не хочет...

Если загрузить старый вариант, то всё работает. И отвечает.

[19] 
    ___  __          __
   / _ )/ /_ _____  / /__
  / _  / / // / _ \/  '_/
 /____/_/\_, /_//_/_/\_\
        /___/ v1.0.0-beta.3 on Arduino Uno
 
[616] Connecting to **********
[3796] AT version:1.2.0.0(Jul  1 2016 20:04:45)
SDK version:1.5.4.1(39cb9a32)
v1.0.0
Mar 11 2018 18:27:31
OK
[13073] +CIFSR:STAIP,"192.168.0.11"
+CIFSR:STAMAC,"ec:fa:bc:87:a7:ec"
[13081] Connected to WiFi
[23771] Ready (ping: 23ms).
LED on V1: green
LED on V1: red
LED on V1: green
LED on V1: red
LED on V1: green
LED on V1: red
LED on V1: green
LED on V1: red
 
А в чём разница - понять не могу. Ведь код коннекта одинаковый, вроде как...
 
b707
Offline
Зарегистрирован: 26.05.2017

Homo Faber, исправленный код покажите

Homo Faber
Offline
Зарегистрирован: 25.05.2019

b707 пишет:

Homo Faber, исправленный код покажите

Уточните какой?
Хотя обнаружил интересный нюанс: ограничил переключение 3-мя цветами и заработало, но как только вводишь 4-й цвет, то всё, работать перестаёт.

void blinkLedWidget()
{
  if (LED_Cnt==1)
     {
      led1.setColor(BLYNK_RED);
      Serial.println("LED on V1: КРАСНЫЙ");
     }
  if (LED_Cnt==2)
     {
      led1.setColor(BLYNK_YELLOW);
      Serial.println("LED on V1: ЖЁЛТЫЙ");
     }
  if (LED_Cnt==3)
     {
      led1.setColor(BLYNK_GREEN);
      Serial.println("LED on V1: ЗЕЛЁНЫЙ");
      LED_Cnt=0;
     }
  LED_Cnt=LED_Cnt+1;
}

Вот ответ:

[19] 
    ___  __          __
   / _ )/ /_ _____  / /__
  / _  / / // / _ \/  '_/
 /____/_/\_, /_//_/_/\_\
        /___/ v1.0.0-beta.3 on Arduino Uno
 
[616] Connecting to **********
[3796] AT version:1.2.0.0(Jul  1 2016 20:04:45)
SDK version:1.5.4.1(39cb9a32)
v1.0.0
Mar 11 2018 18:27:31
OK
[10065] +CIFSR:STAIP,"192.168.0.11"
+CIFSR:STAMAC,"ec:fa:bc:87:a7:ec"
[10074] Connected to WiFi
[20844] Ready (ping: 25ms).
LED on V1: КРАСНЫЙ
LED on V1: ЖЁЛТЫЙ
LED on V1: ЗЕЛЁНЫЙ
LED on V1: КРАСНЫЙ
LED on V1: ЖЁЛТЫЙ
LED on V1: ЗЕЛЁНЫЙ
LED on V1: КРАСНЫЙ
LED on V1: ЖЁЛТЫЙ
LED on V1: ЗЕЛЁНЫЙ
 
Где-то, получается, ограничение стоит?
 
b707
Offline
Зарегистрирован: 26.05.2017

этот самый код выложите ПОЛНОСТЬЮ

Homo Faber
Offline
Зарегистрирован: 25.05.2019

Пожалуйста. Только в установках таймера поставил 2000 mS.

#define BLYNK_PRINT Serial

// Подключение библиотек
#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>
#include <SoftwareSerial.h>                                       // Библиотека програмной реализации обмена по UART-протоколу

// 8 - RX, 9 - TX, соответствует обозначениям на адаптере питания и сигналов модуля ESP-01
SoftwareSerial EspSerial(9, 8); // RX, TX

char auth[] = "**************";                 // Идентификатор
char ssid[] = "**************";                                       // Точка доступа
char pass[] = "**************";                                         // Пароль

#define ESP8266_BAUD 9600                                         // Задаём скорость подключения модуля ESP8266(ESP-01) 9600 бод

ESP8266 wifi(&EspSerial);

WidgetLED led1(V1);

BlynkTimer timer;
//bool ledStatus = false;
int LED_Cnt=1;

#define BLYNK_GREEN     "#23C48E"
#define BLYNK_BLUE      "#04C0F8"
#define BLYNK_YELLOW    "#ED9D00"
#define BLYNK_RED       "#D3435C"
#define BLYNK_DARK_BLUE "#5F7CD8"

void setup()
{
  Serial.begin(9600);                                             // Подключаем последовательный порт со скоростью 9600

  delay(10);                                                      // Задержка 10 mS

  EspSerial.begin(ESP8266_BAUD);                                  // Подключаем модуль ESP8266(ESP-01) на заданной скорости

  delay(10);                                                      // Задержка 10 mS

  Blynk.begin(auth, wifi, ssid, pass);                            // Соединяемся с BLYNK

  // Turn LED on, so colors are visible
  led1.on();
  // Setup periodic color change
  timer.setInterval(2000L, blinkLedWidget);
}

void loop()
{
  Blynk.run();
  timer.run();
}

void blinkLedWidget()
{
  if (LED_Cnt==1)
     {
      led1.setColor(BLYNK_RED);
      Serial.println("LED on V1: КРАСНЫЙ");
     }
  if (LED_Cnt==2)
     {
      led1.setColor(BLYNK_YELLOW);
      Serial.println("LED on V1: ЖЁЛТЫЙ");
     }
  if (LED_Cnt==3)
     {
      led1.setColor(BLYNK_GREEN);
      Serial.println("LED on V1: ЗЕЛЁНЫЙ");
      LED_Cnt=0;
     }
  LED_Cnt=LED_Cnt+1;
}

И снова ответ:

[19] 
    ___  __          __
   / _ )/ /_ _____  / /__
  / _  / / // / _ \/  '_/
 /____/_/\_, /_//_/_/\_\
        /___/ v1.0.0-beta.3 on Arduino Uno
 
[616] Connecting to ****************
[3796] AT version:1.2.0.0(Jul  1 2016 20:04:45)
SDK version:1.5.4.1(39cb9a32)
v1.0.0
Mar 11 2018 18:27:31
OK
[12067] +CIFSR:STAIP,"192.168.0.11"
+CIFSR:STAMAC,"ec:fa:bc:87:a7:ec"
[12076] Connected to WiFi
[22705] Ready (ping: 24ms).
LED on V1: КРАСНЫЙ
LED on V1: ЖЁЛТЫЙ
LED on V1: ЗЕЛЁНЫЙ
LED on V1: КРАСНЫЙ
LED on V1: ЖЁЛТЫЙ
LED on V1: ЗЕЛЁНЫЙ
LED on V1: КРАСНЫЙ
LED on V1: ЖЁЛТЫЙ
LED on V1: ЗЕЛЁНЫЙ
 
b707
Offline
Зарегистрирован: 26.05.2017

Homo Faber - пипец какой-то...

Вы с чем сюда пришли? - выяснить почему у вас код виснет? так зачем вы мне выкладываете код, который работает?

Все. ладно. проехали. можете больше не выкладывать

Homo Faber
Offline
Зарегистрирован: 25.05.2019

b707 пишет:

Homo Faber - пипец какой-то...

Вы с чем сюда пришли? - выяснить почему у вас код виснет? так зачем вы мне выкладываете код, который работает?

Все. ладно. проехали. можете больше не выкладывать

Я вроде бы объяснил, что код работает, если 3 (ТРИ) цвета заложены в изменении цвета светодиода, а если 4 и более, тогда и возникает проблема.

А скетч, который не работает, я выложил выше, если есть желание - можно посмотреть...

Fenicksnet
Offline
Зарегистрирован: 25.03.2019

Homo Faber пишет:

b707 пишет:

Homo Faber - пипец какой-то...

Вы с чем сюда пришли? - выяснить почему у вас код виснет? так зачем вы мне выкладываете код, который работает?

Все. ладно. проехали. можете больше не выкладывать

Я вроде бы объяснил, что код работает, если 3 (ТРИ) цвета заложены в изменении цвета светодиода, а если 4 и более, тогда и возникает проблема.

А скетч, который не работает, я выложил выше, если есть желание - можно посмотреть...

Вы код который не работает выложили, вам ошибку показали. потом вы выложили кусок кода исправленного, вас попросили исправленный (НЕ РАБОЧИЙ) код целиком! переключатся между сообщениями и собирать ваш работающий/не работающий код по кусочкам удовольствие сомнительное.

Homo Faber
Offline
Зарегистрирован: 25.05.2019

Вот весь неработающий код:

#define BLYNK_PRINT Serial

// Подключение библиотек
#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>
#include <SoftwareSerial.h>                                       // Библиотека програмной реализации обмена по UART-протоколу

// 8 - RX, 9 - TX, соответствует обозначениям на адаптере питания и сигналов модуля ESP-01
SoftwareSerial EspSerial(9, 8); // RX, TX

char auth[] = "****************";                 // Идентификатор
char ssid[] = "*****************";                                       // Точка доступа
char pass[] = "*****************";                                         // Пароль

#define ESP8266_BAUD 9600                                         // Задаём скорость подключения модуля ESP8266(ESP-01) 9600 бод

ESP8266 wifi(&EspSerial);

WidgetLED led1(V1);

BlynkTimer timer;
//bool ledStatus = false;
int LED_Cnt = 1;

#define BLYNK_GREEN     "#23C48E"
#define BLYNK_BLUE      "#04C0F8"
#define BLYNK_YELLOW    "#ED9D00"
#define BLYNK_RED       "#D3435C"
#define BLYNK_DARK_BLUE "#5F7CD8"

void setup()
{
  Serial.begin(9600);                                             // Подключаем последовательный порт со скоростью 9600

  delay(10);                                                      // Задержка 10 mS

  EspSerial.begin(ESP8266_BAUD);                                  // Подключаем модуль ESP8266(ESP-01) на заданной скорости

  delay(10);                                                      // Задержка 10 mS

  Blynk.begin(auth, wifi, ssid, pass);                            // Соединяемся с BLYNK

  // Turn LED on, so colors are visible
  led1.on();
  // Setup periodic color change
  timer.setInterval(1500L, blinkLedWidget);

  Serial.println(LED_Cnt);
}

void loop()
{
  Serial.println("- 0 -");
  Blynk.run();
  Serial.println("- 1 -");
  timer.run();
  Serial.println("- 2 -");
}

void blinkLedWidget()
{
  Serial.println(LED_Cnt);
  if (LED_Cnt==1)
     {
      led1.setColor(BLYNK_RED);
      Serial.println("LED on V1: КРАСНЫЙ");
     }
  if (LED_Cnt==2)
     {
      led1.setColor(BLYNK_BLUE);
      Serial.println("LED on V1: ГОЛУБОЙ");
     }
  if (LED_Cnt==3)
     {
      led1.setColor(BLYNK_YELLOW);
      Serial.println("LED on V1: ЖЁЛТЫЙ");
     }
  if (LED_Cnt==4)
     {
      led1.setColor(BLYNK_GREEN);
      Serial.println("LED on V1: ЗЕЛЁНЫЙ");
     }
  if (LED_Cnt==5)
     {
      led1.setColor(BLYNK_DARK_BLUE);
      Serial.println("LED on V1: СИНИЙ");
      LED_Cnt=0;
     }
  LED_Cnt=LED_Cnt+1;
}

Работает только при 3-х цвета, если 4 или 5, то вот что получается:

[19] 

    ___  __          __
   / _ )/ /_ _____  / /__
  / _  / / // / _ \/  '_/
 /____/_/\_, /_//_/_/\_\
        /___/ v1.0.0-beta.3 on Arduino Uno
 
[616] Connecting to ********
[3798] AT version:1.2.0.0(Jul  1 2016 20:04:45)
SDK version:1.5.4.1(39cb9a32)
v1.0.0
Mar 11 2018 18:27:31
OK
[9074] +CIFSR:STAIP,"192.168.0.11"
+CIFSR:STAMAC,"ec:fa:bc:87:a7:ec"
[9081] Connected to WiFi
[19736] Ready (ping: 26ms).
[46058] Ready (ping: 26ms).
[72374] Ready (ping: 25ms).
[98590] Ready (ping: 25ms).
[124910] Ready (ping: 26ms).
 
Меня интересует вопрос: нет ли какого либо ограничения в библиотеках?
Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

Homo Faber пишет:

Меня интересует вопрос: нет ли какого либо ограничения в библиотеках?

В случае четырех цветов в коде рвать коннект? Ну да, есть такое. Защита от ЛГБТ от украинских натуралов )))

У вас тут до blinkLedWidget даже дело не доходит.

Код из #8 вы не проверили

Homo Faber
Offline
Зарегистрирован: 25.05.2019

"Защита ЛБГТ от украинских натуралов" - это таки да!

Но шутки шутками, а какое-то ограничение похоже есть.

Следующий этап - переключение цветов по кнопке. И опять таки 3 цвета работает, а 4 или 5 нет.

Вот неработающий код:

#define BLYNK_PRINT Serial

// Подключение библиотек
#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>
#include <SoftwareSerial.h>                                       // Библиотека програмной реализации обмена по UART-протоколу

// 8 - RX, 9 - TX, соответствует обозначениям на адаптере питания и сигналов модуля ESP-01
SoftwareSerial EspSerial(9, 8); // RX, TX

char auth[] = "*******************";                 // Идентификатор
char ssid[] = "*******************";                                       // Точка доступа
char pass[] = "*******************";                                         // Пароль

#define ESP8266_BAUD 9600                                         // Задаём скорость подключения модуля ESP8266(ESP-01) 9600 бод

ESP8266 wifi(&EspSerial);

WidgetLED led1(V1);

BlynkTimer timer;
int LED_Cnt=1;

#define BLYNK_GREEN     "#23C48E"
#define BLYNK_BLUE      "#04C0F8"
#define BLYNK_YELLOW    "#ED9D00"
#define BLYNK_RED       "#D3435C"
#define BLYNK_DARK_BLUE "#5F7CD8"

void setup()
{
  Serial.begin(9600);                                             // Подключаем последовательный порт со скоростью 9600

  delay(10);                                                      // Задержка 10 mS

  EspSerial.begin(ESP8266_BAUD);                                  // Подключаем модуль ESP8266(ESP-01) на заданной скорости

  delay(10);                                                      // Задержка 10 mS

  Blynk.begin(auth, wifi, ssid, pass);                            // Соединяемся с BLYNK

  // Turn LED on, so colors are visible
  led1.on();
}

void loop()
{
  Blynk.run();
}

BLYNK_WRITE(V0) //функция, отслеживающая изменение виртуального пина 0
{
  int pinValue = param.asInt(); //переменная текущего состояния виртуального пина
  if (pinValue==1)
     {
      LED_Cnt=LED_Cnt+1;
      if (LED_Cnt==1)
         {
          led1.setColor(BLYNK_RED);
Serial.println("LED on V1: КРАСНЫЙ");
         }
      if (LED_Cnt==2)
         {
          led1.setColor(BLYNK_YELLOW);
Serial.println("LED on V1: ЖЁЛТЫЙ");
         }
      if (LED_Cnt==3)
         {
          led1.setColor(BLYNK_GREEN);
Serial.println("LED on V1: ЗЕЛЁНЫЙ");
         }
      if (LED_Cnt==4)
         {
          led1.setColor(BLYNK_BLUE);
Serial.println("LED on V1: ГОЛУБОЙ");
         }
      if (LED_Cnt==4)
         {
          led1.setColor(BLYNK_DARK_BLUE);
Serial.println("LED on V1: СИНИЙ");
          LED_Cnt=0;
         }
     }
}

А вот его ответ:

[19] 
    ___  __          __
   / _ )/ /_ _____  / /__
  / _  / / // / _ \/  '_/
 /____/_/\_, /_//_/_/\_\
        /___/ v1.0.0-beta.3 on Arduino Uno
 
[616] Connecting to *************
[3796] AT version:1.2.0.0(Jul  1 2016 20:04:45)
SDK version:1.5.4.1(39cb9a32)
v1.0.0
Mar 11 2018 18:27:31
OK
[10066] +CIFSR:STAIP,"192.168.0.11"
+CIFSR:STAMAC,"ec:fa:bc:87:a7:ec"
[10075] Connected to WiFi
[20726] Ready (ping: 23ms).
[46942] Ready (ping: 23ms).
[73261] Ready (ping: 23ms).
[99581] Ready (ping: 23ms).
[125899] Ready (ping: 23ms).
[152117] Ready (ping: 24ms).
[178230] Ready (ping: 24ms).
[204446] Ready (ping: 23ms).
[230662] Ready (ping: 23ms).
[256879] Ready (ping: 23ms).
[283198] Ready (ping: 24ms).
[309519] Ready (ping: 25ms).
[335835] Ready (ping: 23ms).
[362156] Ready (ping: 24ms).
[388473] Ready (ping: 23ms).
 
А вот работающий код:
#define BLYNK_PRINT Serial

// Подключение библиотек
#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>
#include <SoftwareSerial.h>                                       // Библиотека програмной реализации обмена по UART-протоколу

// 8 - RX, 9 - TX, соответствует обозначениям на адаптере питания и сигналов модуля ESP-01
SoftwareSerial EspSerial(9, 8); // RX, TX

char auth[] = "*****************";                 // Идентификатор
char ssid[] = "*****************";                                       // Точка доступа
char pass[] = "*****************";                                         // Пароль

#define ESP8266_BAUD 9600                                         // Задаём скорость подключения модуля ESP8266(ESP-01) 9600 бод

ESP8266 wifi(&EspSerial);

WidgetLED led1(V1);

BlynkTimer timer;
int LED_Cnt=1;

#define BLYNK_GREEN     "#23C48E"
#define BLYNK_BLUE      "#04C0F8"
#define BLYNK_YELLOW    "#ED9D00"
#define BLYNK_RED       "#D3435C"
#define BLYNK_DARK_BLUE "#5F7CD8"

void setup()
{
  Serial.begin(9600);                                             // Подключаем последовательный порт со скоростью 9600

  delay(10);                                                      // Задержка 10 mS

  EspSerial.begin(ESP8266_BAUD);                                  // Подключаем модуль ESP8266(ESP-01) на заданной скорости

  delay(10);                                                      // Задержка 10 mS

  Blynk.begin(auth, wifi, ssid, pass);                            // Соединяемся с BLYNK

  // Turn LED on, so colors are visible
  led1.on();
}

void loop()
{
  Blynk.run();
}

BLYNK_WRITE(V0) //функция, отслеживающая изменение виртуального пина 0
{
  int pinValue = param.asInt(); //переменная текущего состояния виртуального пина
  if (pinValue==1)
     {
      LED_Cnt=LED_Cnt+1;
      if (LED_Cnt==1)
         {
          led1.setColor(BLYNK_RED);
Serial.println("LED on V1: КРАСНЫЙ");
         }
      if (LED_Cnt==2)
         {
          led1.setColor(BLYNK_YELLOW);
Serial.println("LED on V1: ЖЁЛТЫЙ");
         }
      if (LED_Cnt==3)
         {
          led1.setColor(BLYNK_GREEN);
Serial.println("LED on V1: ЗЕЛЁНЫЙ");
          LED_Cnt=0;
         }
     }
}

И его ответ:

[19] 
    ___  __          __
   / _ )/ /_ _____  / /__
  / _  / / // / _ \/  '_/
 /____/_/\_, /_//_/_/\_\
        /___/ v1.0.0-beta.3 on Arduino Uno
 
[616] Connecting to *************
[3796] AT version:1.2.0.0(Jul  1 2016 20:04:45)
SDK version:1.5.4.1(39cb9a32)
v1.0.0
Mar 11 2018 18:27:31
OK
[11072] +CIFSR:STAIP,"192.168.0.11"
+CIFSR:STAMAC,"ec:fa:bc:87:a7:ec"
[11080] Connected to WiFi
[21725] Ready (ping: 25ms).
LED on V1: КРАСНЫЙ
LED on V1: ЖЁЛТЫЙ
LED on V1: ЗЕЛЁНЫЙ
LED on V1: КРАСНЫЙ
LED on V1: ЖЁЛТЫЙ
LED on V1: ЗЕЛЁНЫЙ
LED on V1: КРАСНЫЙ
LED on V1: ЖЁЛТЫЙ
LED on V1: ЗЕЛЁНЫЙ
 
Есть какое-то ограничение всё таки. Или же это мой очередной косяк?
Только, пожалуйста, ответьте по существу.
И, да, в модуль ESP-01 я ничего не заливал, ибо не представляю как это сделать и зачем. Он мне нужен только для функций приёма-передачи данных.
Вот как он выглядит с модулем согласования
ESP-01S ESP8266 Серийный беспроводной модуль Wi-Fi + ESP-01 адаптер для  Arduino - купить недорого в интернет-магазине с доставкой: сравнение цен,  характеристики, фото и отзывы покупателей

 

 

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

Ясно, я думал у вас "взрослый" esp8266. Идея заключалась в исключении из цепочки возможных косячных мест как раз этого сочленения по СофтСериал. Если на голой ЕСП это не будет работать нормально, значит косяк в реализации vidgetLed. Понимаете, у вас может не работать какой-то виджет, но чтобы при этом происходили отвалы связи с сервером...  

Homo Faber
Offline
Зарегистрирован: 25.05.2019

Всё дело в том, что в ESP8266 портов маловато для моих целей. Я тут переговорил со знающими людьми, тоже "больными" Arduino, так вот, кто пробовал BLYNK, все говорят про этот косячок. Было высказано предположение, что это сделано специально, дабы ограничить цветовую гамму на один светодиод.

b707
Offline
Зарегистрирован: 26.05.2017

Homo Faber пишет:

Всё дело в том, что в ESP8266 портов маловато для моих целей. Я тут переговорил со знающими людьми, тоже "больными" Arduino, так вот, кто пробовал BLYNK, все говорят про этот косячок. Было высказано предположение, что это сделано специально, дабы ограничить цветовую гамму на один светодиод.

да что вы говорите :)

как же оно распознает. что в программе у вас задано 4 цвета, а не три? тут нейросети нужны :)

имхо, по-моему это полная ерунда

Homo Faber
Offline
Зарегистрирован: 25.05.2019

Возможно и ерунда, но какое-то ограничение есть? Или его нет?
Хотя это уже наверное и неважно. Но таки интересно...

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

Homo Faber пишет:

какое-то ограничение есть? Или его нет?
Хотя это уже наверное и неважно. Но таки интересно...

Очень даже может быть, что какое-то ограничение есть. Но скорее всего, никакого нет. И вы об этом никогда не узнаете, потому что это уже не важно, а никому кроме вас это вообще не интересно

b707
Offline
Зарегистрирован: 26.05.2017

Rumata пишет:

Очень даже может быть, что какое-то ограничение есть.

может быть и есть. но очевидно не такое, как формулирует ТС. "Ограничить число цветов светодиода" - это смешно :)

может быть ограничение на размер процедуры... или на длительность ее выполнения... Грамотный человек провел бы тесты и разобрался, переписал бы код по другому, убрал-добавил в процедуру разные операторы...

Хотя конечно, предполагать, что создатели Блинк ненавидят цветовое разнообразие - это проще :)

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

b707 пишет:

может быть и есть. но очевидно не такое, как формулирует ТС. "Ограничить число цветов светодиода" - это смешно :)

Да нет там никаких ограничений. (если только это не украинские санкции персонально к ТСу))). Глюки попадаются изредка. Судя по симптомам, глюки с транспортом, но ТС не хочет проверять. У меня на чистой ЕСП32 никаких подобных "ограничений" не наблюдалось за 2 года. Жаль не узнаем правду))

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

Переломил свою лень через колено. На ЕСП32 все офигенно работает. Любые оттенки из примерно 16,7 млн можно выводить в любом количестве с любой (если на локальном сервере) скоростью. Что то у ТС не то с чем-то...

Homo Faber
Offline
Зарегистрирован: 25.05.2019

Ну, оттенки я тоже могу выводить, уже попробовал, но если Вы обратили внимание, то проблемы начинаются, если больше 3-х переключений цвета.

Вот тот кусочек скетча, в котором у меня возникла проблема:

   if (LED_Cnt==1)
     {
      led1.setColor(BLYNK_RED);
      Serial.println("LED on V1: КРАСНЫЙ");
     }
  if (LED_Cnt==2)
     {
      led1.setColor(BLYNK_BLUE);
      Serial.println("LED on V1: ГОЛУБОЙ");
     }
  if (LED_Cnt==3)
     {
      led1.setColor(BLYNK_YELLOW);
      Serial.println("LED on V1: ЖЁЛТЫЙ");
     }
  if (LED_Cnt==4)
     {
      led1.setColor(BLYNK_GREEN);
      Serial.println("LED on V1: ЗЕЛЁНЫЙ");
     }
  if (LED_Cnt==5)
     {
      led1.setColor(BLYNK_DARK_BLUE);
      Serial.println("LED on V1: СИНИЙ");
      LED_Cnt=0;
     }

Если сократить до 3-х цветов всё работает нормально.

      if (LED_Cnt==1)
         {
          led1.setColor(BLYNK_RED);
Serial.println("LED on V1: КРАСНЫЙ");
         }
      if (LED_Cnt==2)
         {
          led1.setColor(BLYNK_YELLOW);
Serial.println("LED on V1: ЖЁЛТЫЙ");
         }
      if (LED_Cnt==3)
         {
          led1.setColor(BLYNK_GREEN);
Serial.println("LED on V1: ЗЕЛЁНЫЙ");
          LED_Cnt=0;
         }

 

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

Сколько вы это будете повторять? Говорю вам, все работает на любом количестве цветов. 

Homo Faber
Offline
Зарегистрирован: 25.05.2019

Попутный, хотя и несколько не в тему, вопрос.

ESP-01 примерно раз 45 секунд моргает синим светодиодом приёма-передачи при отсутствии событий для передачи или приёма. Это нормально?

sadman41
Offline
Зарегистрирован: 19.10.2016

А почему бы ей не и не мигать? Дана команда - она мигает.

Homo Faber
Offline
Зарегистрирован: 25.05.2019

Команды от программы нет, но раз в 45 секунд мигает. Может какя-то библиотека и даёт команду?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Rumata пишет:

Переломил свою лень через колено.

я свою из под развесистого карагача выгнать не могу )))

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

ua6em пишет:

я свою из под развесистого карагача выгнать не могу )))

Если честно, просто самому любопытно стало. У меня все виджетЛеды работают в режиме включено/выключено, без всей этой цветовой бутафории. Тупо сигнализируют о состоянии. Хотелось на цветомузыку посмотреть)) 

Homo Faber
Offline
Зарегистрирован: 25.05.2019

Rumata пишет:

ua6em пишет:

я свою из под развесистого карагача выгнать не могу )))

Если честно, просто самому любопытно стало. У меня все виджетЛеды работают в режиме включено/выключено, без всей этой цветовой бутафории. Тупо сигнализируют о состоянии. Хотелось на цветомузыку посмотреть)) 

Чисто попробовать. Я только начинаю изучать BLYNK, хочется попробовать и то, и то, и даже это... ;)

Вот сейчас решил попробовать Blynk.notify и снова огорчение: никаких уведомлений не получается получить. Хотя цвета меняются.

Вот видоизменённый кусок кода:

  if (digitalRead(12)==LOW)                                       // Если на 12 порту низкий уровень (0)
// Изменение цвета виртуальных светодиодов на смартфоне
     {
      LED_Cnt=LED_Cnt+1;                                          // Приращение счётчика
      if (LED_Cnt==1)                                             // Счётчик = 1
         {
          led1.setColor(BLYNK_RED);                               // Задаём цвет КРАСНЫЙ
          Blynk.notify("КРАСНЫЙ");
         }
      if (LED_Cnt==2)                                             // Счётчик = 2
         {
          led1.setColor(BLYNK_YELLOW);                            // Задаём цвет ЖЁЛТЫЙ
          Blynk.notify("ЖЁЛТЫЙ");
         }
      if (LED_Cnt==3)                                             // Счётчик = 3
         {
          led1.setColor(BLYNK_GREEN);                             // Задаём цвет ЗЕЛЁНЫЙ
          Blynk.notify("ЗЕЛЁНЫЙ");
          LED_Cnt=0;                                              // Сбрасываем счётчик
         }
     }

Может кто поможет, почему нет уведомлений, а?

Вроде посмотрел примеры и описание, но похоже чего-то не догоняю...

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

Homo Faber пишет:

Вроде посмотрел примеры и описание, но похоже чего-то не догоняю...

Похоже. Но вам уже не помочь. Вам хочется попробовать, но пробовать вам лень. Продолжайте искать "примеры". Или забейте, вам же это не нужно

Ответ в этой теме вами получен, но никто не может заставить вас его услышать/прочитать 

UPD: Еще вариант: искать поддержки у единомышленников по теории заговора. Скрытые ограничения - они такие скрытые!

Homo Faber
Offline
Зарегистрирован: 25.05.2019

Rumata пишет:

Homo Faber пишет:

Вроде посмотрел примеры и описание, но похоже чего-то не догоняю...

Похоже. Но вам уже не помочь. Вам хочется попробовать, но пробовать вам лень. Продолжайте искать "примеры". Или забейте, вам же это не нужно

Ответ в этой теме вами получен, но никто не может заставить вас его услышать/прочитать 

UPD: Еще вариант: искать поддержки у единомышленников по теории заговора. Скрытые ограничения - они такие скрытые!

Вообще-то я спрашивал уже про уведомления, а Вы мне всё продолжаете писать про ограничения...

Homo Faber
Offline
Зарегистрирован: 25.05.2019

Всё, оповещения заработали! Сменил BETA библиотеку и ФСЁ!!!
Спасибо всем откликнувшимся!