ESP8266: getting disconnected after adding analog input

hello:
using WeMOS-D1 mini, I made a small project with 5 outputs, 4 digital inputs and one analog input.
it run OK with digital widgets. when I add “labeled value” for analog input I got “device was disconnected” and communication stops
Any help is appreciated.

My program:

/**************************************************************
 * Blynk is a platform with iOS and Android apps to control
 * Arduino, Raspberry Pi and the likes over the Internet.
 * You can easily build graphic interfaces for all your
 * projects by simply dragging and dropping widgets.
 *
 *   Downloads, docs, tutorials: http://www.blynk.cc
 *   Blynk community:            http://community.blynk.cc
 *   Social networks:            http://www.fb.com/blynkapp
 *                               http://twitter.com/blynk_app
 *
 * Blynk library is licensed under MIT license
 * This example code is in public domain.
 *
 **************************************************************
 * This example runs directly on ESP8266 chip.
 *
 * You need to install this for ESP8266 development:
 *   https://github.com/esp8266/Arduino
 *
 * Please be sure to select the right ESP8266 module
 * in the Tools -> Board menu!
 *
 * Change WiFi ssid, pass, and Blynk auth token to run :)
 *
 **************************************************************/

#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <EEPROM.h>
//EEPROM.read(address)
//EEPROM.write(address, value)


char str[20],x0,x1;

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

void setup()
{
EEPROM.begin(4);
digitalWrite(0,LOW);
digitalWrite(2,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(15,LOW);
pinMode(5,OUTPUT);
pinMode(4,OUTPUT);
pinMode(0,OUTPUT);
pinMode(2,OUTPUT);
pinMode(15,OUTPUT);
Serial.begin(9600);
Blynk.begin(auth, "Morosh", "94034690");
//Blynk.email("morisaab@yahoo.fr", "Subject: Motion Detected", "Suspicious activiy detected!!...");
if(EEPROM.read(0)==255) {EEPROM.write(0,0);EEPROM.commit();}
x0=EEPROM.read(0);
digitalWrite(0,bitRead(x0,0));
digitalWrite(2,bitRead(x0,1));
digitalWrite(4,bitRead(x0,2));
digitalWrite(5,bitRead(x0,3));
digitalWrite(15,bitRead(x0,4));
x1=x0;
}

void loop()
{
long x;
x=analogRead(0)*330/1023;
sprintf(str,"temp=%u °C",x);
Blynk.virtualWrite(V0, str);

if(digitalRead(0)==LOW) Blynk.virtualWrite(V1, 0); else Blynk.virtualWrite(V1, 255);
if(digitalRead(2)==LOW) Blynk.virtualWrite(V2, 0); else Blynk.virtualWrite(V2, 255);
if(digitalRead(4)==LOW) Blynk.virtualWrite(V3, 0); else Blynk.virtualWrite(V3, 255);
if(digitalRead(5)==LOW) Blynk.virtualWrite(V4, 0); else Blynk.virtualWrite(V4, 255);
if(digitalRead(15)==LOW) Blynk.virtualWrite(V5, 0); else Blynk.virtualWrite(V5, 255);

if(digitalRead(16)==HIGH) Blynk.virtualWrite(V6, 0); else Blynk.virtualWrite(V6, 255);
if(digitalRead(14)==HIGH) Blynk.virtualWrite(V7, 0); else Blynk.virtualWrite(V7, 255);
if(digitalRead(12)==HIGH) Blynk.virtualWrite(V8, 0); else Blynk.virtualWrite(V8, 255);
if(digitalRead(13)==HIGH) Blynk.virtualWrite(V9, 0); else Blynk.virtualWrite(V9, 255);
bitWrite(x1, 0, digitalRead(0));
bitWrite(x1, 1, digitalRead(2)); 
bitWrite(x1, 2, digitalRead(4)); 
bitWrite(x1, 3, digitalRead(5)); 
bitWrite(x1, 4, digitalRead(15)); 
if(x1!=x0) {EEPROM.write(0,x1); EEPROM.commit(); x0=x1;}

Blynk.run();
}

Maximum of 100 commands per second, you have thousands because you are wrongly using loop().

You must time your events, see PUSH_DATA example as a guide.

1 Like

@gvnl Here is some relevant documentation… and more can be found at http://help.blynk.cc/

Excerpt from this document…


Avoiding the void

:point_up: :fire: :warning: VERY IMPORTANT: You can’t send sensor data in your void loop()

– Why?
– Because Blynk sends data over the Internet, and when you put something into void loop(), your microcontroller will execute it :scream_cat: gazillion number of times. Which means that Blynk Cloud will be flooded with gazillion messages from your hardware.

And when Blynk Cloud notices that, it automatically :scissors:︎ cuts your connection. Sorry…

– OK, what should I do then?
– Send sensor data in intervals!

Using timers to send sensor data in intervals(Read more in the documentation)