Sever connection closing assuming to many requests

Here is my code - I have read for days but just cannot make a break through.

In addition I have a vibration sensor hooked up to D4, it reads 1 or 0. How do I activate the timer to push D4 to the app.

I have a delay in the loop but not sure if i should take it out.

An help is appreciated.

  Download latest Blynk library here:

  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:
    Sketch generator: 
    Blynk community:  
    Follow us:        

  Blynk library is licensed under MIT license
  This example code is in public domain.


  Output any data on LCD widget!

  App project setup:
    LCD widget, switch to ADVANCED mode, select pin V1

/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#define ECHOPIN    D2
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "c48e77b790e64b05adf1ee77fb4dbb40";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "Bootload Error";
char pass[] = "theraininspain";

WidgetLCD lcd(V1);

BlynkTimer timer;

// This function sends Arduino's up time every second to Virtual Pin (5).
// In the app, Widget's reading frequency should be set to PUSH. This means
// that you define how often to send data to Blynk App.
void myTimerEvent()
  // You can send any value at any time.
  // Please don't send more that 10 values per second.
  Blynk.virtualWrite(V5, millis() / 3000); //was 1000

void setup()
  // Debug console
  pinMode(ECHOPIN, INPUT);
  Blynk.begin(auth, ssid, pass);
  // You can also specify server:
  //Blynk.begin(auth, ssid, pass, "", 8442);
  //Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8442);

  lcd.clear(); //Use it to clear the LCD Widget
  lcd.print(0, 0, "Distance in cm"); // use: (position X: 0-15, position Y: 0-1, "Message you want to print")
  // Please use timed events when LCD printintg in void loop to avoid sending too many commands
  // It will cause a FLOOD Error, and connection will be dropped

void loop()
  lcd.print(0, 0, "Sump depth in cm"); // use: (position X: 0-15, position Y: 0-1, "Message you want to print")
  long duration, distance;
  digitalWrite(TRIGGERPIN, LOW);  
  digitalWrite(TRIGGERPIN, HIGH);
  delayMicroseconds(10); //was12
  digitalWrite(TRIGGERPIN, LOW);
  duration = pulseIn(ECHOPIN, HIGH);
  distance = 68-(duration/2) / 29.1;
  lcd.print(7, 1, distance);;; // Initiates BlynkTimer
  delay(1500);  //was 3500


Rule 1: no delays anyway
Rule 2: only and in the loop
Rule 3: see Rule 1


Sketch is running with the delay removed, thanks The timer for the lcd does not seem to be working, but the numbers are flickering rapidly, but is is reading. Any suggestions to slow down the reading?


Since it’s in the loop() that doesn’t suprise me.

Usually you would set a variable called flagChanged or something and set that to 1 if something has to change on the screen. If the flag is 1, change the LCD, otherwise leave it alone.

This LCD method can also be in a timed function.Say 1s. That interval is short enough to quickly update and not to be noticed that it only updates at a maximum of 1s intervals.

Also, if you don’t need to clear it every time, and rely on overwriting instead (padding with extra spaces if required) then you will have no flickering

thanks flickering is gone!!