Atmega2560+ESP8266 and Blynk.Air

Hello I have the Infamous WiFi R3 ATmega2560+ESP8266.
I already got it to work with BlynkEdgentNCP and I have no issue, I just wondered how to use Blynk.Air with it?
I have tried using Blynk.Air with an ESP32 and BlynkEdgent and it worked straight away, but BlynkEdgentNCP doesn’t seem to work.
I go to Blynk.Air see that the device is online, select the firmware I want to upload, select the device and press upload, then the process bar appears but it just sits completely still and doesn’t do anything.

This is my test sketch.


  NOTE: This example requires the connectivity module on your board to be
        flashed using Blynk.NCP firmware.

   The easiest way to install the NCP firmware for ESP8622 is using ESP8266_Flasher.exe:

   Firmware is here:


/* Fill in information from your Blynk Template here */
/* Read more: */
#define BLYNK_TEMPLATE_NAME "Quickstart Template"

//Ensure that the Blynk App is installed on your smartphone.
//Open the Blynk App -> click Add New Device -> select Find Devices Nearby (You might need to do it manually)

/* The firmware version of the Primary MCU (used for OTA updates) */

// Debug output
#define BLYNK_PRINT Serial

// Redefine NCP connection port settings, if needed
#define BLYNK_NCP_SERIAL Serial3
#define BLYNK_NCP_BAUD 115200

// Need arduinoOTA library
#include <BlynkEdgentNCP.h>

// Declaring a global variabl for sensor data
int sensorVal;

// This function creates the timer object. It's part of Blynk library
BlynkTimer timer;

//What to do when successfully connected to Blynk

  //Makes sure that V1 is in sync in case of lost connection.

  //Message that shows up in Serial Monitor.
  BLYNK_LOG("Connected to Blynk 🙌");

  //A LED lights up when connected to server.
  digitalWrite(13, HIGH);

//What to do when not connected to Blynk

  //Message that shows up in Serial Monitor.
  BLYNK_LOG("Blynk disconnected");

//Virtual pin 1 in datastream

  // This monitors if the virtual pin value changes, then followed by the action.
  // In this case "if V1 value is ==1 then digitalWrite 26, HIGH else LOW"
  if (param.asInt() == 1) {

    // execute this code if the switch widget is now ON (Remember to set the on value to 1)
    digitalWrite(26, HIGH);  // Set digital pin 2 HIGH
  } else {
    // execute this code if the switch widget is now OFF(Remember to set the off value to 0)
    digitalWrite(26, LOW);  // Set digital pin 2 LOW

//This is for preventing dataoverflow so it only sends the updated value with certain intervals.
//The update interval is defined by timer.setInterval in the void setup section.
void myTimerEvent() {
  // You can send any value at any time.
  // Please don't send more that 10 values per second.

  //send among of seconds that has past to virtual pin V0
  Blynk.virtualWrite(V0, millis() / 1000);

  // This function describes what will happen with each timer tick
  // e.g. writing sensor value to datastream V2
  Blynk.virtualWrite(V2, sensorVal);

  //Only for monitoring the sensor locally in the Serial Monitor

void setup() {
  // Define LED pins
  pinMode(8, OUTPUT);
  pinMode(26, OUTPUT);

  // Give Serial Monitor some time to connect

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

  //Setup part for Blynk is below this line, don't touch it.

  //Writes message to the Serial Monitor
  BLYNK_LOG("Build: %s", __DATE__ " " __TIME__);

  // Initialize the Blynk.NCP hardware + error message if failed
  if (Blynk.initNCP()) {
    String ver = Blynk.getNcpVersion();
    BLYNK_LOG("Blynk.NCP firmware: %s", ver.c_str());
  } else {
    BLYNK_LOG("Cannot communicate to Blynk.NCP");
    BLYNK_LOG("  Please ensure you have flashed your board with the Blynk.NCP firmware, before running this example.");
    BLYNK_LOG("  See:");

  // Print state changes
  Blynk.onStateChange([]() {
    BLYNK_LOG("State: %s", Blynk.getStateString());

  // Set config mode timeout to 30 minutes, for testing purposes
  Blynk.setConfigTimeout(30 * 60);

  // Product setup


void loop() {
  // Reading sensor from hardware analog pin A0
  sensorVal = analogRead(A0);

  // runs BlynkTimer;

  // Runs all Blynk stuff;