Проблемы управления через 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);
}
}
@Maks Yarkovoy, 👍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();
}
,
@jose can u c
Смотрите также:
- Как использовать миллис вместо задержки?
- Как отправлять информацию о данных без работы Wi-Fi на LCD?
- Добавление WiFi к моему замку клавиатуры Arduino
- Проблема последовательной связи программного обеспечения между ESP8266 и Arduino Mega для системы мониторинга растений (с использованием Blynk IoT)
- Как читать и записывать EEPROM в ESP8266
- Как сделать выводы Tx и Rx на ESP-8266-01 в выводах GPIO?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
- Как заставить 5-вольтовое реле работать с NodeMCU