Отправка даных ky-040 на blynk

всем привет. у меня есть проект для отправки даных на платформу blynk․ но я незнаю как настроить virtual pin для палучения даных val и val1.

/**********Library**********/
  #include <WiFi.h>
  #include <WiFiClient.h>
  #include <BlynkSimpleEsp32.h>
  #include <GyverEncoder.h>
  #include <EEPROM.h>
/***********Blynk***********/
  #define BLYNK_TEMPLATE_ID  "+"
  #define BLYNK_TEMPLATE_NAME  "+"
  #define BLYNK_AUTH_TOKEN  "+"
  #define BLYNK_PRINT Serial          //Прокомментируйте это, чтобы отключить печать и сэкономить место ;)
  char ssid[] = "Sil";
  char pass[] = "mushex077petr";
  //не менять версию библятеки (версия 1.2.0) !!!!!!! 
/********Blynk timer********/
  BlynkTimer timer;
  void myTimerEvent() // Эта функция ежесекундно отправляет время безотказной работы Arduino на виртуальный вывод 2.
  {
    // Вы можете отправить любое значение в любое время.
    // Пожалуйста, не отправляйте более 10 значений в секунду.
    Blynk.virtualWrite(V2, millis() / 1000);
  }
  
/***********Ky-040**********/
  #define CLK_PIN 23  
  #define DT_PIN 22  
  #define CLK_PIN1 21 
  #define DT_PIN1 19  
  Encoder enc(CLK_PIN, DT_PIN);
  Encoder enc1(CLK_PIN1, DT_PIN1);
  int val = 0;
  int val1 = 0;
/************Rele***********/
  #define Rele_1 12 //GV
  #define Rele_3 13 //GN
  #define Rele_2 2 //MV  
  #define Rele_4 4 //MN
  
void setup()
{
  delay(1500);
  Serial.begin(9600);  
  pinMode(Rele_1, OUTPUT);
  pinMode(Rele_2, OUTPUT);
  pinMode(Rele_3, OUTPUT);
  pinMode(Rele_4, OUTPUT);
  digitalWrite(Rele_1, LOW);
  digitalWrite(Rele_2, LOW);
  digitalWrite(Rele_3, LOW);
  digitalWrite(Rele_4, LOW);
  digitalWrite(Rele_1, HIGH);
  digitalWrite(Rele_2, HIGH);
  digitalWrite(Rele_3, HIGH);
  digitalWrite(Rele_4, HIGH);
  /////////////////-Blynk-///////////////
  Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
  // Настройте функцию, которая будет вызываться каждую секунду
  timer.setInterval(1000L, myTimerEvent);
  /////////////////////////////////////
  enc.setType(TYPE2);
  enc1.setType(TYPE2);

}

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

  enc.tick();
  enc1.tick();

  if (enc.isTurn()) {
    if (enc.isRight()) {
      val+=0.5;
      if (val > 100) {
        val = 100;
      }
    }
    if (enc.isLeft()) {
      val-=0.5;
      if (val < 0) {
        val = 0;
      }
    }
    //Serial.print("Ky-1...");
    //Serial.println(val);
    
  }
  Blynk.virtualWrite(V1, val);
  if (enc1.isTurn()) {
    if (enc1.isRight()) {
      val1+=0.5;
      if (val1 > 100) {
        val1 = 100;
      }
    }
    if (enc1.isLeft()) {
      val1-=0.5;
      if (val1 < 0) {
        val1 = 0;
      }
    }
    //Serial.print("Ky-2...");
    //Serial.println(val1);
    
  }
  Blynk.virtualWrite(V3, val1);
}


что тут надо изменить ???

You can’t run this code, it will flood the server. You need to read this…

https://docs.blynk.io/en/legacy-platform/legacy-articles/keep-your-void-loop-clean

Pete.

Спосибо за ответ папробаю и напешу

блогадарю зо ответ @PeteKnight

/**********Library**********/
  #include <WiFi.h>
  #include <WiFiClient.h>
  #include <BlynkSimpleEsp32.h>
  #include <GyverEncoder.h>
  #include <EEPROM.h>
/***********Blynk***********/
  #define BLYNK_TEMPLATE_ID  ""
  #define BLYNK_TEMPLATE_NAME  ""
  #define BLYNK_AUTH_TOKEN  ""
  #define BLYNK_PRINT Serial          //Прокомментируйте это, чтобы отключить печать и сэкономить место ;)
  char ssid[] = "Sil";
  char pass[] = "mushex077petr";
  //не менять версию библятеки (версия 1.2.0) !!!!!!! 
/********Blynk timer********/
  BlynkTimer timer;
  void myTimerEvent() // Эта функция ежесекундно отправляет время безотказной работы Arduino на виртуальный вывод 2.
  {
    // Вы можете отправить любое значение в любое время.
    // Пожалуйста, не отправляйте более 10 значений в секунду.
    Blynk.virtualWrite(V2, millis() / 1000);
  }
  
/***********Ky-040**********/
  #define CLK_PIN 23  
  #define DT_PIN 22  
  #define CLK_PIN1 21 
  #define DT_PIN1 19  
  Encoder enc(CLK_PIN, DT_PIN);
  Encoder enc1(CLK_PIN1, DT_PIN1);
  int val = 0;
  int val1 = 0;
/************Rele***********/
  #define Rele_1 12 //GV
  #define Rele_3 13 //GN
  #define Rele_2 2 //MV  
  #define Rele_4 4 //MN
  
void setup()
{
  delay(1500);
  Serial.begin(9600);  
  pinMode(Rele_1, OUTPUT);
  pinMode(Rele_2, OUTPUT);
  pinMode(Rele_3, OUTPUT);
  pinMode(Rele_4, OUTPUT);
  digitalWrite(Rele_1, LOW);
  digitalWrite(Rele_2, LOW);
  digitalWrite(Rele_3, LOW);
  digitalWrite(Rele_4, LOW);
  digitalWrite(Rele_1, HIGH);
  digitalWrite(Rele_2, HIGH);
  digitalWrite(Rele_3, HIGH);
  digitalWrite(Rele_4, HIGH);
  /////////////////-Blynk-///////////////
  Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
  // Настройте функцию, которая будет вызываться каждую секунду
  timer.setInterval(1000L, myTimerEvent);
  /////////////////////////////////////
  enc.setType(TYPE2);
  enc1.setType(TYPE2);

  timer.setInterval(1000L,val);
  timer.setInterval(1000L,val1);

}

void sensorDataSend()
{
  
  Blynk.virtualWrite(V1, val);
  Blynk.virtualWrite(V3, val1);  
}

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

  enc.tick();
  enc1.tick();

  if (enc.isTurn()) {
    if (enc.isRight()) {
      val ++;//=0.5;
      if (val > 100) {
        val = 100;
      }
    }
    if (enc.isLeft()) {
      val --; //=0.5;
      if (val < 0) {
        val = 0;
      }
    }
    //Serial.print("Ky-1...");
    //Serial.println(val);
    //Blynk.virtualWrite(V1, val);
  }
  
  if (enc1.isTurn()) {
    if (enc1.isRight()) {
      val1++;//=0.5;
      if (val1 > 100) {
        val1 = 100;
      }
    }
    if (enc1.isLeft()) {
      val1--;//=0.5;
      if (val1 < 0) {
        val1 = 0;
      }
    }
    //Serial.print("Ky-2...");
    //Serial.println(val1);
    //Blynk.virtualWrite(V3, val1);
  }
  
  
}

я провельно сделол

I assume you’ve already discovered that it won’t compile because you don’t have functions called val and val1

And you already know that it won’t complied with v1.3.0 of the Blynk library because these lines of code aren’t at the top of your sketch…

Pete.

вот так я сделол но он не показывает дание от val и val1

/**********Library**********/
  #include <WiFi.h>
  #include <WiFiClient.h>
  #include <BlynkSimpleEsp32.h>
  #include <GyverEncoder.h>
  #include <EEPROM.h>
/***********Blynk***********/
  #define BLYNK_TEMPLATE_ID  
  #define BLYNK_TEMPLATE_NAME  
  #define BLYNK_AUTH_TOKEN 
  #define BLYNK_PRINT Serial          //Прокомментируйте это, чтобы отключить печать и сэкономить место ;)
  char ssid[] = "Sil";
  char pass[] = "mushex077petr";
  //не менять версию библятеки (версия 1.2.0) !!!!!!! 
/********Blynk timer********/
  BlynkTimer timer;
  void myTimerEvent() //Эта функция ежесекундно отправляет время безотказной работы Arduino на виртуальный вывод 2.
  {
    Blynk.virtualWrite(V2, millis() / 1000);
  }
  
/***********Ky-040**********/
  #define CLK_PIN 23  
  #define DT_PIN 22  
  #define CLK_PIN1 21 
  #define DT_PIN1 19  
  Encoder enc(CLK_PIN, DT_PIN);
  Encoder enc1(CLK_PIN1, DT_PIN1);
  int val = 0;
  int val1 = 0;
/************Rele***********/
  #define Rele_1 12 //GV
  #define Rele_3 13 //GN
  #define Rele_2 2 //MV  
  #define Rele_4 4 //MN
  
void sensorDataSend()
{
  Blynk.virtualWrite(V1, val);
  Blynk.virtualWrite(V3, val1);
}
void setup()
{
  delay(1500);
  Serial.begin(9600);  
  pinMode(Rele_1, OUTPUT);
  pinMode(Rele_2, OUTPUT);
  pinMode(Rele_3, OUTPUT);
  pinMode(Rele_4, OUTPUT);
  digitalWrite(Rele_1, LOW);
  digitalWrite(Rele_2, LOW);
  digitalWrite(Rele_3, LOW);
  digitalWrite(Rele_4, LOW);
  digitalWrite(Rele_1, HIGH);
  digitalWrite(Rele_2, HIGH);
  digitalWrite(Rele_3, HIGH);
  digitalWrite(Rele_4, HIGH);
  /////////////////-Blynk-///////////////
  Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
  // Настройте функцию, которая будет вызываться каждую секунду
  timer.setInterval(1000L, myTimerEvent);

  enc.setType(TYPE2);
  enc1.setType(TYPE2);
}

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

  enc.tick();
  enc1.tick();

  if (enc.isTurn()) {
    if (enc.isRight()) {
      val ++;
      if (val > 100) {
        val = 100;
      }
    }
    if (enc.isLeft()) {
      val --;
      if (val < 0) {
        val = 0;
      }
    }
  }
  
  if (enc1.isTurn()) {
    if (enc1.isRight()) {
      val1++;
      if (val1 > 100) {
        val1 = 100;
      }
    }
    if (enc1.isLeft()) {
      val1--;
      if (val1 < 0) {
        val1 = 0;
      }
    }
  }
  
  //Blynk.virtualWrite(V1, val);
  //Blynk.virtualWrite(V3, val1); 
  sensorDataSend(); // Send val and val1 data to Blynk app
}

что я делаю нетак

You can’t have this in your void loop, it will flood the server.

Your sensorDataSend function has to be called with a BlynkTimer. I’d also add some serial print commands into sensorDataSend too.

Is the uptime on pin V2 being displayed correctly?

Why haven’t you moved these three lines to the top of your sketch?…

Pete.

да это правельно я сделол

Спосиба за ответ пайду паробаю

Я исправил его но даные не ведны

/**********Library**********/
  #include <WiFi.h>
  #include <WiFiClient.h>
  #include <BlynkSimpleEsp32.h>
  #include <GyverEncoder.h>
  #include <EEPROM.h>
  char ssid[] = "Sil";
  char pass[] = "mushex077petr";
  //не менять версию библятеки (версия 1.2.0) !!!!!!! 
/********Blynk timer********/
  BlynkTimer timer;
  void myTimerEvent() //Эта функция ежесекундно отправляет время безотказной работы Arduino на виртуальный вывод 2.
  {
    Blynk.virtualWrite(V2, millis() / 1000);
  }
  
/***********Ky-040**********/
  #define CLK_PIN 23  
  #define DT_PIN 22  
  #define CLK_PIN1 21 
  #define DT_PIN1 19  
  Encoder enc(CLK_PIN, DT_PIN);
  Encoder enc1(CLK_PIN1, DT_PIN1);
  int val = 0;
  int val1 = 0;
/************Rele***********/
  #define Rele_1 12 //GV
  #define Rele_3 13 //GN
  #define Rele_2 2 //MV  
  #define Rele_4 4 //MN
  

void setup()
{
  delay(1500);
  Serial.begin(9600);  
  pinMode(Rele_1, OUTPUT);
  pinMode(Rele_2, OUTPUT);
  pinMode(Rele_3, OUTPUT);
  pinMode(Rele_4, OUTPUT);
  digitalWrite(Rele_1, LOW);
  digitalWrite(Rele_2, LOW);
  digitalWrite(Rele_3, LOW);
  digitalWrite(Rele_4, LOW);
  digitalWrite(Rele_1, HIGH);
  digitalWrite(Rele_2, HIGH);
  digitalWrite(Rele_3, HIGH);
  digitalWrite(Rele_4, HIGH);
  /////////////////-Blynk-///////////////
  Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
  // Настройте функцию, которая будет вызываться каждую секунду
  timer.setInterval(1000L, myTimerEvent);

  enc.setType(TYPE2);
  enc1.setType(TYPE2);
}

void sensorDataSend()
{
  enc.tick();
  enc1.tick();

  if (enc.isTurn()) {
    if (enc.isRight()) {
      val +=1;
      if (val > 100) {
        val = 100;
      }
    }
    if (enc.isLeft()) {
      val -=1;
      if (val < 0) {
        val = 0;
      }
    }
  }
  
  if (enc1.isTurn()) {
    if (enc1.isRight()) {
      val1+=1;
      if (val1 > 100) {
        val1 = 100;
      }
    }
    if (enc1.isLeft()) {
      val1-=1;
      if (val1 < 0) {
        val1 = 0;
      }
    }
  }
  Blynk.virtualWrite(V1, val);
  Blynk.virtualWrite(V3, val1);
  sensorDataSend(); // Send val and val1 data to Blynk app
}

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

  
  
  //Blynk.virtualWrite(V1, val);
  //Blynk.virtualWrite(V3, val1); 
 
}

I think you’ve broken it completely now.

sensorDataSend will never be called, and even if it is it will go into an endless loop because it just keeps calling itself.

And now you’ve delete the Blynk firmware configuration entirely.

Pete.