BLYNK
HOME       📲 GETTING STARTED       📗 DOCS       ❓HELP CENTER       👉 SKETCH BUILDER

"Подвисание" данных с аналоговых пинов

Доброго дня.

Возможно данный вопрос обсуждался.

  1. Локальный север последней версии (наблюдалось и на более ранних версиях).
  2. После перезагрузки платы (либо продолжительной работы) иногда на виджете Labeled Value данные перестают отображаться корректно, по сути встают в максимальном значении.
  3. После остановки приложения и повторного запуска данные начинают правильно обновляться (Android).

Может сразу будут предположения в чем проблема?
Если нет то попробую собрать более подробные данные.

Выглядит это примерно так (начало ролика с Терминала, как показатель что данные сыплются):

Кажется понял что происходит. Если вызвать функцию следующего вида:

BLYNK_CONNECTED() {
   Blynk.syncAll();
}

Почему то в виджете Value Display для аналоговых pin-ов все значение выставляются в максимум… Помогает остановка и запуск App на смартфоне. Но это не вариант! Т.к. у меня на этих pin-ах висят противопожарные датчики :frowning:

Что-такого происходит в Blynk.syncAll(); и при остановке и запуске App?

P.S.
При обрыве связи, эта функция тоже вызывается и соответственно все значения виджета Value Display для Аналоговых pin-ов встают в макс. значение (1022-1023), а должны принимать значения 996-997, ну или случайные числа если pin физически свободен…

Пример кода:

#define BLYNK_PRINT Serial // Enables Serial Monitor
#include <SPI.h>
#include <Ethernet.h>
#include <BlynkSimpleEthernet.h>

char auth[] = "345feecc0***************17f01d1ec";  //Arduino MEGA

IPAddress server_ip (192, 168, 0, 50);

byte arduino_mac[] = { 0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xE1 };
IPAddress arduino_ip ( 192, 168,   0, 177);
IPAddress dns_ip     ( 192, 168,   0,   1);
IPAddress gateway_ip ( 192, 168,   0,   1);
IPAddress subnet_mask( 255, 255, 255,   0);


void setup()
{
  Serial.begin(9600);
  Blynk.begin(auth, server_ip, 8080, arduino_ip, dns_ip, gateway_ip, subnet_mask, arduino_mac);
}

BLYNK_CONNECTED() 
{                        
  Blynk.syncAll();
}

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

Blynk.syncAll() is used to pull the values from the Blynk server into the sketch running on your hardware.

Pete.

Да, я понимаю принцип применение данной функции, читал инструкцию. Но почему при дальнейшей работе кода, значения на данных pin-ах не меняются? Хотя должны! Повторюсь если в App Blynk нажать stop и потом play то значения (в App Blynk) на Value Display начинают отображаться корректно. Это можно попробовать даже на пустой плате Arduino!

This function is called when the Device connects to the Server, not when the App does.

I have seen this on one of my 24/7/365 static display projects, but figured it was due either the old tablet or the fact that I have it in forced into landscape mode with another App.

I also only use virtual pins.

Start with showing all the versions of App, Library, Local Server (if any).

If you have the Beta App, send logs to the Developers.

I think you might get better results if you used a virtual pin to display the values from the analogue pin values.

Pete.

1 Like

App 2.27.5
Library 0.6.1
Local Server server-0.41.5-java8

Ну это конечно, как выход из положения. Я провел эксперимент с analogRead(A0), она тоже читает не корректные значения… Start/stop в App приводят все в норму.
Возможно в функции Blynk.syncAll() есть какая-то нелепая/скрытая ошибка?

P.S.
Если использовать функцию Blynk.syncVirtual(V0, V1, V2, V3, V4, V5, V6, V7, V8, V9);
То все ОК с аналоговыми pin-ами.

Aside than the fact that it indiscriminately synchronises each and every pin and/or function…all at the exact same time :stuck_out_tongue_winking_eye: Syncing just the needed pins is the best way to go.