Ви не увійшли.
Всем доброго дня!
Начал проникать в тему ардуинки. Решил начать с простого. Есть 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, либо значение ползунка не передается в программу вообще.
Подскажите пожалуйста, в чем кроется моя ошибка? Комментарии писал для себя, чтобы лучше понять как и что взаимодействует.
Заранее благодарю.
Неактивний
Вы взяли не лучший пример кода из сети.
Используйте пример из самой библиотеки. Разбирайте их по кирпичикам и тогда сможете сами писать код.
Остання редакція Avazart (2019-09-09 22:58:37)
Неактивний
Спасибо. Подскажите пожалуйста, как прописать\добавить к скетчу из примера параметры сети? как заставить устройство подключиться к WIFI? нет полей имени сети и пароля сети. если просто добавлю их как в примере Standalone
char ssid[] = "Имя_сети";
char pass[] = "Пароль сети";,
при компилировании ругается на эти две переменные. В примере из набора BLYNK эти параметры сети отсутствуют. Делал открытую сеть - устройство не подключается.... По большому счету, цели добился - светодиод именно мигает, пусть и с интервалом, прописываемым врукопашную, но заинтересовал теперь стробоскоп. В принципе, уже сдался насчет BLYNKA видимо начну с книги и с примеров управления ардуинкой хардовыми кнопками и прочее. Реализовать будет проще, используя переменный резистор и обычную кнопку, но хотел всё таки добиться мигания...
Логику работы в целом понял, только неясно, почему использованы переменные типа LONG, а не просто Int. в остальном понятно.
Неактивний
здесь хрустальные шары не в почете. Нужна помощь - описывайте проблему более подробней и желательно с кодом. Как мы должны узнать на что там ругается ваш компилятор?
пробуй этот код
/* 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();
}
Неактивний
Вот стандартный скетч из примеров 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 двигать ползунок - реакции нет.
Ладно, всё равно спасибо. Несколько новых тем чтобы получше узнать для себя наметил из ответов.
На самом деле моей целью было уговорить мигать светодиод, а не гореть постоянно. Про стобоскоп мне подкинули идею как готовый скетч, но видимо чтото пошло не так...
Неактивний
Вот стандартный скетч из примеров 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[] = "Пароль сети";
для ard125:
Спасибо, подключение к сети WIFI и к BLYNK проходит успешно. Но всё равно не работает слайдер
Скорее всего неправильно слайдер настраиваешь в приложении.
Неактивний
Всем спасибо за ответы. Для себя много полезного из них взял. Слайдер так и не заработал, видимо всё таки надо чтото ещё. Настройки слайдера выставил:
Output V2 100-1000, пробовал ещё и на линию между окошками интервалов нажимать, вместо плавной кривой синусоида какаято обозначается.
Decimals - AUTO
Send on release -ON. Пробовал и OFF с интервалом 200 ms
Show value - OFF.
наверное не всё так просто, предлагаю тему, видимо, закрыть. Скачал пару книг начального уровня, буду осваивать пока азы.
Всем спасибо!
Неактивний