Trouble compiling code for Arduino Mega/ESP8266 wifi shield and Blynk App

I am trying to interface an ESP8266 - ESP 01 wifi shield with my Arduino Mega AND to control in with the Blynk App. The Blynk App has its own libraries which I have downloaded and installed manually (placing folders from libraries folder and folders from tools folder into their namesake counterparts in my sketchbook). I have also added ESP8266 into my Boards Manager. The Blynk App autogenerates the code for me to be used for Arduino Mega/ESP8266 wifi shield duo, however when I try to compile it it keeps failing every time. I ask for any help or clues from whoever has worked with Blynk app/ ESP8266 wifi shield. Any help is much appreciated. Here's the code:

/*************************************************************
  Download latest Blynk library here:
    https://github.com/blynkkk/blynk-library/releases/latest

  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
    Sketch generator:           http://examples.blynk.cc
    Blynk community:            http://community.blynk.cc
    Follow us:                  http://www.fb.com/blynkapp
                                http://twitter.com/blynk_app

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

 *************************************************************
  WARNING!
    It's very tricky to get it working. Please read this article:
    http://help.blynk.cc/hardware-and-libraries/arduino/esp8266-with-at-firmware

  This example shows how value can be pushed from Arduino to
  the Blynk App.

  NOTE:
  BlynkTimer provides SimpleTimer functionality:
    http://playground.arduino.cc/Code/SimpleTimer

  App project setup:
    Value Display widget attached to Virtual Pin V5
 *************************************************************/

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


#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>

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

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

// Hardware Serial on Mega, Leonardo, Micro...
#define EspSerial Serial1

// or Software Serial on Uno, Nano...
//#include <SoftwareSerial.h>
//SoftwareSerial EspSerial(2, 3); // RX, TX

// Your ESP8266 baud rate:
#define ESP8266_BAUD 38400

ESP8266 wifi(&EspSerial);

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() / 1000);
}

void setup()
{
  // Debug console
  Serial.begin(9600);

  // Set ESP8266 baud rate
  EspSerial.begin(ESP8266_BAUD);
  delay(10);

  Blynk.begin(auth, wifi, ssid, pass);
  // You can also specify server:
  //Blynk.begin(auth, wifi, ssid, pass, "blynk-cloud.com", 80);
  //Blynk.begin(auth, wifi, ssid, pass, IPAddress(192,168,1,100), 8080);

  // Setup a function to be called every second
  timer.setInterval(1000L, myTimerEvent);
}

void loop()
{
  Blynk.run();
  timer.run(); // Initiates BlynkTimer
}

this is the error message it spits out when trying to compile:

In file included from C:\Users\Sino\Documents\Arduino\libraries\Blynk\src/Blynk/BlynkApi.h:38:0,
                 from C:\Users\Sino\Documents\Arduino\libraries\Blynk\src/BlynkApiArduino.h:14,
                 from C:\Users\Sino\Documents\Arduino\libraries\Blynk\src/BlynkSimpleShieldEsp8266.h:29,
                 from C:\Users\Sino\Documents\Arduino\blynk_app_simple_sketch\blynk_app_simple_sketch.ino:40:
C:\Users\Sino\Documents\Arduino\libraries\Blynk\src/Blynk/BlynkConsole.h:20:10: fatal error: functional: No such file or directory
 #include <functional>
          ^~~~~~~~~~~~
compilation terminated.
exit status 1
Error compiling for board Arduino Mega or Mega 2560.

Here are links to the Blynk Platform:

blynk.cc/getting-started

The uploaded image is how I've wired up ESp8266 with the Mega

The library you are using was written to be used with sketches that are run directly on the ESP8266. But you are attempting to use this sketch on your Arduino Mega. The library is not compatible with the Arduino Mega, and this is the cause of the error.

There are two common ways the ESP8266 is used by the Arduino community:

  • As a WiFi adapter module controlled by a standard Arduino board (e.g., Uno, Mega) over a serial connection using AT commands. In this usage, you will be writing Arduino sketches for and uploading to the standard Arduino board, not the ESP8266.
  • As a standalone Arduino board. In this usage, you will be writing Arduino sketches for and uploading directly to the ESP8266.

You are using the ESP8266 in the former usage, but the library code was written for the latter usage. I believe the "BlynkSimpleShieldEsp8266" part of the library is intended for your style of usage, but you are somehow getting some library code for the other as well. I recommend you carefully study the Blynk library's documentation and example sketches to learn how to use it correctly.


I had to edit your post in order to make it readable. In the future, please use the code blocks when you are posting error/warning messages, as you did for your code. This will avoid random parts of the text being recognized as markup by the forum software, corrupting the information.

@pert thanks for the hints! And will note about the error messages!

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.