#1 2019-09-09 11:17:55

Кирилл000
Учасник
Зареєстрований: 2019-09-09
Повідомлень: 5

Мигание встроенным светодиодом на ESP8266 с регулировкой частоты

Всем доброго дня!
Начал проникать в тему ардуинки. Решил начать с простого. Есть ESP8266, есть учётка на Blynk. Простенький скетч с небольшим изменением Blynk примера Standalone заработал. при нажатии кнопки в приложении включается. Следующим шагом хотел чтобы светодиод мигал при нажатии кнопки в приложении. посоветовали готовый скетч стробоскопа с гитхаба: https://github.com/blynkkk/blynk-library/blob/master/examples/More/Stroboscope/Stroboscope.ino, но с ним не заладилось . - нет полей для имени сети и пароля сети. Устройство подключаться не хочет вообще к открытой сети. Решил скрестить Standalone и стробоскоп. Вот что получилось:

#include <ESP8266WiFi.h>
#include <SPI.h>
#include <BlynkSimpleEsp8266.h>

char auth[] = "токен";  //параметры сети для блинка
char ssid[] = "Имя_сети";
char pass[] = "Пароль сети";


#define BLYNK_PRINT Serial

BlynkTimer timer;  //объявляем таймер
int t1;

#define Ledpin 2

void ledBlynk()  //функция мигания. если светодиод включен - выключаем, и наоборот.
{
  digitalWrite(Ledpin, !digitalRead(Ledpin));
}

BLYNK_WRITE(V1)
{
  if (param.asInt()) {
    timer.enable(t1);
  } else {
    timer.disable(t1);
    digitalWrite(Ledpin, HIGH);
  }
}
BLYNK_WRITE(V2)
{
  long interval = param.asLong();
  boolean wasEnabled = timer.isEnabled(t1);
  timer.deleteTimer(t1);
  t1 = timer.setInterval(interval, ledBlynk);
  if (!wasEnabled) {
    timer.disable(t1);
  }
}

void setup() {
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);
  pinMode(Ledpin, OUTPUT);
  t1 = timer.setInterval(500L, ledBlynk);
  timer.disable(t1);
 
}

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

Устройство успешно подключается к сети, подключается к приложению. При нажатии виртуальной кнопки 1 светодиод начинает мигать с частотой в пол секунды. Проблема в том, что никак не реагирует на слайдер V2. Светодиод либо мигает с фиксированной частотой (которую указываю в настройках таймера в сетапе), либо послушно отключается по отжатии кнопки V1. на ползунок слайдера не реагирует вообще. Такое впечатление, что либо пропускается часть кода относящаяся к кнопке V2, либо значение ползунка не передается в программу вообще.
Подскажите пожалуйста, в чем кроется моя ошибка? Комментарии писал для себя, чтобы лучше понять как и что взаимодействует.
Заранее благодарю.

Неактивний

#2 2019-09-09 22:58:17

Avazart
Учасник
Зареєстрований: 2019-05-05
Повідомлень: 181

Re: Мигание встроенным светодиодом на ESP8266 с регулировкой частоты

Вы взяли не лучший пример кода из сети.
Используйте пример из самой библиотеки. Разбирайте их по кирпичикам и тогда сможете сами писать код.

Остання редакція Avazart (2019-09-09 22:58:37)

Неактивний

#3 2019-09-10 11:59:54

Кирилл000
Учасник
Зареєстрований: 2019-09-09
Повідомлень: 5

Re: Мигание встроенным светодиодом на ESP8266 с регулировкой частоты

Спасибо. Подскажите пожалуйста, как прописать\добавить к скетчу из примера параметры сети? как заставить устройство подключиться к WIFI? нет полей имени сети и пароля сети. если просто добавлю их как в примере  Standalone

char ssid[] = "Имя_сети";
char pass[] = "Пароль сети";,

при компилировании ругается на эти две переменные. В примере из набора BLYNK эти параметры сети отсутствуют. Делал открытую сеть - устройство не подключается.... По большому счету, цели добился - светодиод именно мигает, пусть и с интервалом, прописываемым врукопашную, но заинтересовал теперь стробоскоп. В принципе, уже сдался насчет BLYNKA видимо начну с книги и с примеров управления ардуинкой хардовыми кнопками и прочее. Реализовать будет проще, используя переменный резистор и обычную кнопку, но хотел всё таки добиться мигания...
Логику работы в целом понял, только неясно, почему использованы переменные типа LONG, а не просто Int. в остальном понятно.

Неактивний

#4 2019-09-10 14:38:05

г0сть
Гість

Re: Мигание встроенным светодиодом на ESP8266 с регулировкой частоты

здесь хрустальные шары не в почете. Нужна помощь - описывайте проблему более подробней и желательно с кодом. Как мы должны узнать на что там ругается ваш компилятор?

#5 2019-09-10 16:50:43

ard125
Учасник
Зареєстрований: 2019-01-30
Повідомлень: 121

Re: Мигание встроенным светодиодом на ESP8266 с регулировкой частоты

пробуй этот код

/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

char auth[] = "токен";  //параметры сети для блинка
char ssid[] = "Имя_сети";
char pass[] = "Пароль сети";

char* server = "blynk-cloud.com";
int port = 8080;

#define LED_PIN LED_BUILTIN

BlynkTimer timer;
int t1;

// Toggle LED
void ledBlynk()
{
  digitalWrite(LED_PIN, !digitalRead(LED_PIN));
}

// Enable/disable blinking using virtual pin 1
BLYNK_WRITE(V1)
{
  if (param.asInt()) {
    timer.enable(t1);
  } else {
    timer.disable(t1);
    digitalWrite(LED_PIN, LOW);
  }
}

// Change blink interval using virtual pin 2
BLYNK_WRITE(V2)
{
  long interval = param.asLong();
  boolean wasEnabled = timer.isEnabled(t1);
  timer.deleteTimer(t1);
  t1 = timer.setInterval(interval, ledBlynk);
  if (!wasEnabled) {
    timer.disable(t1);
  }
}

void setup()
{
  // Debug console
  Serial.begin(115200);

  //Blynk.begin(auth);
  Blynk.connectWiFi(ssid, pass);
  Blynk.config(auth, server, 8080);
  Blynk.connect();

  // Configure LED and timer
  pinMode(LED_PIN, OUTPUT);
  t1 = timer.setInterval(500L, ledBlynk);
  timer.disable(t1);
}

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

Неактивний

#6 2019-09-10 18:07:47

Кирилл000
Учасник
Зареєстрований: 2019-09-09
Повідомлень: 5

Re: Мигание встроенным светодиодом на ESP8266 с регулировкой частоты

Вот стандартный скетч из примеров Blynk, стробоскоп:

/*************************************************************
  Download latest Blynk library here:
    https://github.com/blynkkk/blynk-library/releases/latest

  Blynk is a platform with iOS and Android apps to control
  Arduino, Raspberry Pi and the likes over the Internet.
  You can easily build graphic interfaces for all your
  projects by simply dragging and dropping widgets.

    Downloads, docs, tutorials: http://www.blynk.cc
    Sketch generator:           http://examples.blynk.cc
    Blynk community:            http://community.blynk.cc
    Follow us:                  http://www.fb.com/blynkapp
                                http://twitter.com/blynk_app

  Blynk library is licensed under MIT license
  This example code is in public domain.

 *************************************************************

  This is a simple stroboscope.
  You can turn it on and of using a button,
  and control frequency with a slider.

  App project setup:
    Button widget (Switch) on V1
    Slider widget (100...1000) on V2
 *************************************************************/

/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial


#include <SPI.h>
#include <Ethernet.h>
#include <BlynkSimpleEthernet.h>

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "YourAuthToken";

#define LED_PIN 9

BlynkTimer timer;
int t1;

// Toggle LED
void ledBlynk()
{
  digitalWrite(LED_PIN, !digitalRead(LED_PIN));
}

// Enable/disable blinking using virtual pin 1
BLYNK_WRITE(V1)
{
  if (param.asInt()) {
    timer.enable(t1);
  } else {
    timer.disable(t1);
    digitalWrite(LED_PIN, LOW);
  }
}

// Change blink interval using virtual pin 2
BLYNK_WRITE(V2)
{
  long interval = param.asLong();
  boolean wasEnabled = timer.isEnabled(t1);
  timer.deleteTimer(t1);
  t1 = timer.setInterval(interval, ledBlynk);
  if (!wasEnabled) {
    timer.disable(t1);
  }
}

void setup()
{
  // Debug console
  Serial.begin(9600);

  Blynk.begin(auth);

  // Configure LED and timer
  pinMode(LED_PIN, OUTPUT);
  t1 = timer.setInterval(500L, ledBlynk);
  timer.disable(t1);
}

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

Вопрос 1: в скетче нет параметров подключения к сети. при таком коде ни устройство не подцепляется к сети, ни в приложении нет авторизации устройства. Какие строчки надо добавить, чтобы устройство подключалось к сети WIFI? если добавлю переменные char ssid[] = "Имя_сети";
char pass[] = "Пароль сети"; и изменю Blynk.begin(auth, ssid, pass);  В таком случае получаю ошибку:


C:\Users\ru000142\AppData\Local\Temp\arduino_modified_sketch_966034\Stroboscope.ino: In function 'void setup()':

Stroboscope:83:31: error: invalid conversion from 'char*' to 'uint16_t {aka short unsigned int}' [-fpermissive]

   Blynk.begin(auth, ssid, pass);

                               ^

In file included from C:\Users\ru000142\Documents\Arduino\libraries\Blynk\src/BlynkSimpleEthernet.h:20:0,

                 from C:\Users\ru000142\AppData\Local\Temp\arduino_modified_sketch_966034\Stroboscope.ino:36:

C:\Users\ru000142\Documents\Arduino\libraries\Blynk\src/Adapters/BlynkEthernet.h:54:10: error:   initializing argument 3 of 'void BlynkEthernet::begin(const char*, const char*, uint16_t, const byte*)' [-fpermissive]

     void begin( const char* auth,

          ^

Несколько библиотек найдено для "Ethernet.h"
Используется: C:\Users\ru000142\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\Ethernet
Не используется: C:\Program Files (x86)\Arduino\libraries\Ethernet
exit status 1
invalid conversion from 'char*' to 'uint16_t {aka short unsigned int}' [-fpermissive]

успел погуглить - требуется один тип данных, я же подсовываю другой.
Подскажите пожалуйста, как правильно добавить к скетчу стробоскопа подключение к сети WIFI с параметрами имени сети и пароля?


для ard125:
Спасибо, подключение к сети WIFI и к BLYNK проходит успешно. Но всё равно не работает слайдер ((((. По нажатию кнопки V1 запускается мигание, в данном случае раз в секунду, но на изменение положения слайдера V2 скетч не реагирует. Пробовал сперва поменять положение слайдера, потом включить V1 и на включенной V1 двигать ползунок - реакции нет.
Ладно, всё равно спасибо. Несколько новых тем чтобы получше узнать для себя наметил из ответов.
На самом деле моей целью было уговорить мигать светодиод, а не гореть постоянно. Про стобоскоп мне подкинули идею как готовый скетч, но видимо чтото пошло не так...

Неактивний

#7 2019-09-10 18:18:55

ard125
Учасник
Зареєстрований: 2019-01-30
Повідомлень: 121

Re: Мигание встроенным светодиодом на ESP8266 с регулировкой частоты

Кирилл000 пише:

Вот стандартный скетч из примеров Blynk, стробоскоп:

Вопрос 1: в скетче нет параметров подключения к сети.

потому что этот пример для Ethernet-шилда, т.е. подключения по кабелю, а не WiFi. Что нужно изменить - выбросить
#include <SPI.h>
#include <Ethernet.h>
#include <BlynkSimpleEthernet.h>

и как минимум добавить
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

char auth[] = "токен";  //параметры сети для блинка
char ssid[] = "Имя_сети";
char pass[] = "Пароль сети";

Кирилл000 пише:

для ard125:
Спасибо, подключение к сети WIFI и к BLYNK проходит успешно. Но всё равно не работает слайдер

Скорее всего неправильно слайдер настраиваешь в приложении.

Неактивний

#8 2019-09-11 09:25:20

Кирилл000
Учасник
Зареєстрований: 2019-09-09
Повідомлень: 5

Re: Мигание встроенным светодиодом на ESP8266 с регулировкой частоты

Всем спасибо за ответы. Для себя много полезного из них взял. Слайдер так и не заработал, видимо всё таки надо чтото ещё. Настройки слайдера выставил:

Output  V2  100-1000, пробовал ещё и на линию между окошками интервалов нажимать, вместо плавной кривой синусоида какаято обозначается.
Decimals - AUTO
Send on release  -ON. Пробовал и OFF с интервалом 200 ms
Show value - OFF.

наверное не всё так просто, предлагаю тему, видимо, закрыть. Скачал пару книг начального уровня, буду осваивать пока азы.
Всем спасибо!

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму