Проблемы управления через Blynk

Я написал скетч для управления шаговым двигателем под управлением приложения Blynk, скетч скомпилировался, но возникла проблема в том, что никакого управления не происходило. Поступления и управление происходят на виртуальных выводах V1, V2, V3. (Проблема в том, что ничего не контролируется), помогите пожалуйста решить проблему.

//#include <Stepper.h>
//#определить BLYNK_WRITE
//#include <ESP8266WiFi.h>
//#include <BlynkSimpleEsp8266.h>

const int stepsPerRevolution = 200;  // изменяем это, чтобы оно соответствовало количеству шагов за оборот
// для вашего мотора
Stepper myStepper(stepsPerRevolution, 1, 2, 3, 4);

// Вы должны получить токен авторизации в приложении Blynk.
// Переходим в настройки проекта (значок ореха).
char auth[] = "[private]";

// Ваши учетные данные Wi-Fi.
// Установите пароль «» для открытых сетей.
char ssid[] = "S30mini";
char pass[] = "12345678";

int pinData;
int pinData1;
int pinData2;
BLYNK_WRITE(V3) //Виджет кнопки записывает на контакт V1
{
  int pinData = param.asInt(); 
 }
BLYNK_WRITE(V2) //Виджет кнопки записывает на контакт V1
{
  int pinData1 = param.asInt(); 
 }
BLYNK_WRITE(V1) //Виджет кнопки записывает на контакт V1
{
  int pinData2 = param.asInt(); 
 }

void setup()
{
  // Консоль отладки
  Serial.begin(115200);
  Blynk.begin(auth, ssid, pass);
}

void loop()
{  
    Blynk.run();


  // сопоставляем его с диапазоном от 0 до 100:
  int motorSpeed = map(pinData, 0, 1023, 0, 100);
  // устанавливаем скорость двигателя:
  if (motorSpeed > 0) {
    myStepper.setSpeed(motorSpeed);
    // шаг 1/100 оборота:
    myStepper.step(stepsPerRevolution / 100);
  }

   if (pinData1 == 1){
      myStepper.step(stepsPerRevolution);
   }

   if (pinData2 == 1){
     myStepper.step(-stepsPerRevolution);
    }

}

, 👍0


1 ответ


1

Установив перед переменными pinData префикс int, вы объявляете локальные переменные в своих функциях BLYNK_WRITE(), область действия которых находится только в этом функция. Вместо глобальной версии записывается локальная версия.

Чтобы это исправить, не объявляйте новую переменную в BLYNK_WRITE():

BLYNK_WRITE(V3) //Виджет кнопки записывает данные на контакт V1
{
  pinData = param.asInt(); 
}
BLYNK_WRITE(V2) //Виджет кнопки записывает на контакт V1
{
  pinData1 = param.asInt(); 
}
BLYNK_WRITE(V1) //Виджет кнопки записывает на контакт V1
{
  pinData2 = param.asInt(); 
}
,