Homo Faber
New member
Здравствуйте, знатоки!
Имею конфигурацию (или она меня имеет?) Arduino Uno+ESP01S (с адаптером уровней сигналов и питания). На смартфоне неделю назад установил BLYNK, на нём виртуальный светодиод (V1), виртуальная кнопка (V0) и Notifiation. К Arduino присобачена кнопка и 2 светодиода. Кнопкой переключаются цвета виртуального светодиода V1 (красный, жёлтый и зелёный). Виртуальной кнопкой переключаются по очереди светодиоды прикрученные к Arduino.
Теперь о проблеме: прикрученная к Arduino кнопка переключает цвета V1 по каждому нажатию, 4-е нажатие должно послать оповещение. И вот тут и порылась пресловутая собака! Не отсылается оповещение, хоть плачь...
Вот скетч:
Светодиоды и кнопки работают, нет проблем, на ESPшке вижу мигание синенького огонька обмена данными, в том числе и при передаче оповещения (попытался выделить строку жирным шрифтом). Оповещение настроено с высоким (HIGH) приоритетом, задан цвет и звук. Но Н И Х Р Е Н А не приходит на смарфтон. Может кто ни будь подсказать в чём моя ошибка?
Честно скажу, с BLYNKом только начал разбираться, вроде неплохая вещь, но понимания всех нюансов пока нет...
Имею конфигурацию (или она меня имеет?) Arduino Uno+ESP01S (с адаптером уровней сигналов и питания). На смартфоне неделю назад установил BLYNK, на нём виртуальный светодиод (V1), виртуальная кнопка (V0) и Notifiation. К Arduino присобачена кнопка и 2 светодиода. Кнопкой переключаются цвета виртуального светодиода V1 (красный, жёлтый и зелёный). Виртуальной кнопкой переключаются по очереди светодиоды прикрученные к Arduino.
Теперь о проблеме: прикрученная к Arduino кнопка переключает цвета V1 по каждому нажатию, 4-е нажатие должно послать оповещение. И вот тут и порылась пресловутая собака! Не отсылается оповещение, хоть плачь...
Вот скетч:
Код:
#define BLYNK_PRINT Serial
// Подключение библиотек
#include <BlynkSimpleShieldEsp8266.h> // Библиотека для работы с внешним модулем ESP8266 (ESP-01)
#include <SoftwareSerial.h> // Библиотека програмной реализации обмена по UART-протоколу
// 8 - RX, 9 - TX, соответствует обозначениям на адаптере питания и сигналов модуля ESP-01
SoftwareSerial ESP01(9, 8); // RX, TX
char auth[] = "**************"; // Идентификатор
char ssid[] = "**************"; // Точка доступа
char pass[] = "**************"; // Пароль
ESP8266 wifi(&ESP01); // Подключаем ESP через SoftwareSerial
WidgetLED led1(V1);
int LED_Cnt=1; // Объявление переменной счётчика
bool LED_Status=false; // Объявление переменной статуса (состояния)
bool B_Con=false; // Объявление переменной контроля соединения
#define BLYNK_GREEN "#00FF00" // Определение цвета ЗЕЛЁНЫЙ
#define BLYNK_YELLOW "#FFFF00" // Определение цвета ЖЁЛТЫЙ
#define BLYNK_RED "#FF0000" // Определение цвета КРАСНЫЙ
void setup()
{
Serial.begin(9600); // Подключаем последовательный порт со скоростью 9600
delay(10); // Задержка 10 mS
ESP01.begin(9600); // Подключаем модуль ESP8266(ESP-01) на заданной скорости
delay(10); // Задержка 10 mS
Blynk.begin(auth, wifi, ssid, pass); // Соединяемся с BLYNK
led1.on(); // Включаем виртуальный светодиод, чтобы видеть цвета
led1.setColor(BLYNK_RED); // Задаём виртуальному светодиоду красный цвет
pinMode(12,INPUT); // Назначаем 12 порт ввода
digitalWrite(12,HIGH); // Включаем подтягивающий резистор
pinMode(10,OUTPUT); // Назначаем 10 порт вывода и...
digitalWrite(10,LOW); // подаём на него низкий уровень
pinMode(11,OUTPUT); // Назначаем 11 порт вывода и...
digitalWrite(11,LOW); // подаём на него низкий уровень
pinMode(13,OUTPUT); // Назначаем 13 порт вывода и...
digitalWrite(13,LOW); // подаём на него низкий уровень
}
void loop()
{
Blynk.run(); // Запуск BLYNK
if (digitalRead(12)==LOW) // Если на 12 порту низкий уровень (0)
// Изменение цвета виртуальных светодиодов на смартфоне
{
LED_Cnt=LED_Cnt+1; // Приращение счётчика
if (LED_Cnt==1) // Счётчик = 1
{
led1.setColor(BLYNK_RED); // Задаём цвет КРАСНЫЙ
Serial.println("КРАСНЫЙ");
}
if (LED_Cnt==2) // Счётчик = 2
{
led1.setColor(BLYNK_YELLOW); // Задаём цвет ЖЁЛТЫЙ
Serial.println("ЖЁЛТЫЙ");
}
if (LED_Cnt==3) // Счётчик = 3
{
led1.setColor(BLYNK_GREEN); // Задаём цвет ЗЕЛЁНЫЙ
Serial.println("ЗЕЛЁНЫЙ");
}
if (LED_Cnt==4) // Счётчик = 4
{
Blynk.notify("ALARM!"); // Передаём оповещение
Serial.println("ОПОВЕЩЕНИЕ");
LED_Cnt=0; // Сбрасываем счётчик
}
}
delay(100); // Задержка для исключения дребезга контактов
}
BLYNK_WRITE(V0) // Функция, отслеживающая изменение виртуального пина 0
{
int pinValue = param.asInt(); // Переменная текущего состояния виртуального пина
if (pinValue==1) // Если нажата виртуальная кнопка на смартфоне
// Управление реальными светодиодами
{
if (LED_Status) // Если переменная состояния TRUE
{
digitalWrite(10,HIGH); // Подаём на выход 10 высокий уровень
digitalWrite(11,LOW); // Подаём на выход 11 низкий уровень
LED_Status=false; // Состояние FALSE
}
else
{
digitalWrite(10,LOW); // Подаём на выход 10 низкий уровень
digitalWrite(11,HIGH); // Подаём на выход 11 высокий уровень
LED_Status=true; // Состояние TRUE
}
}
}
Честно скажу, с BLYNKом только начал разбираться, вроде неплохая вещь, но понимания всех нюансов пока нет...