Перейти к публикации
iT4iT.CLUB

Рекомендованные сообщения

Здравствуйте. Попытался повторить 2 бетту на nodemcu - не получилось.

Тот архив который на яндекс диске с модульной программой либами и скетчем в нем - ничего не меняя, при компиляции выдавал что нет файла (  ...портайбле..с++.... хр...). Если нужно путь повторю, может битый скачался.

Там где просто скетч с первой страницы ( ставил с установленной в винде ардуины), обновил все либы, менеджер плат до 2.4....вначале в коде ничего не менял, просто залил дат, потом скеч. И мониторил консолью. Сеть поднял есп - веба нет. Перезалил дат. Веб появился, тучки, кружочков значений нет. В вебе в меню показал прерывание бме 76. Поменял в юзер бме с офф на он. Кружочки в вебе появились - значений нет. Смотрю в меню датчики на i2c- нет ничего. В коде ничего не менял, так и остался бме он. Подключил gy21. Перегрузил есп - в списке датчиков ничего нет. Подключил другой бме - в списке ничего нет. Я так понимаю, мне уже нужно свечку идти ставить, ауру отбеливать :).

Конечно, на сколько понимаю смысл кода- все стало крассиво, везде описание....ко всему что только можно, регулировки температур по гпио ( человеческая натура - критика :))) а вот что если мне нужна будет влажность 2.1 а не 2 мм влаги в кубическом метре и дельта включения по температурам? - шучу!). Попробую еще раз ардуино с нуля переустановить, а то там все смешанно уже, кони люди.... отпишусь. Автору однозначно за труд респект!

p.s. Хотел еще спрсить, по поводу датчиков, bme280 которые с стабом идут на борту. С есп понятно d1+d2+gnd+3.3v. А если делать такое на witty cloud, бутерброд? Да, нашел по таблице те же гпио 4+5+gnd+vcc, но в последнем 5в идет. Датчику нормально, а гпио?

Изменено пользователем wildray
Дописка

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Предыдущий вариант прошивки был рабочий. Просьба к автору темы выложить его опять и обновления выкладывать не удаляя старые версии. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Автору: Приношу свои извенения, архив портейбл на яндекс диске нормальный. Винрару пути не понравились - 7зип все прекрасно распаковал. Первый раз на такие грабли стал.

По поводу версии 2: то о чем много писали, на стационарном компе прошивался, заметил не стабильную работу юсб порта на морде. Ну переключись я в зад, юсб на матери....понимаю, проблемы прошивки чипа с нестабильным питанием. Результат - уже прошил отдельно бланк сдк и юзера, но все равно всплывает в загрузке ошибка секторов 0х400. На сколько заметил, туда заливаются дата с ардуины. Найду способ еще эту область обнулить - буду тестировать далее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Всем доброго времени суток!

Можно ли в первый пост добавить:

1. http://www.emc-problem.net/проекты/эмс-беспроводных-сетей/как-подключить-отладочную-плату-nodemcu-esp8266/

2.  

2.1. там бы еще уточнить п.п. 7 все с описания в первом посту выполнил/пункт появился, когда его нужно выполнить?

3. gpio.h GPIO 12 (D6) - превышение установленной температуры, возможно ли изменить уставку с охлаждения на нагрев, ага, а 14 на разность абсолютной влажности, можно ли одновременно использовать 12 и 14?

Цитата

#include "users_auto.h";  // Пользовательская конфигурация датчиков, именно тут описывается с какими датчиками работать
//#include "users_bme280_x2.h"; // Пример для двух датчиков BME280 (несовместим с users_auto.h)

ага, или так, или этак, оба нужны будут, по второму вопрос, а датчик освещенности снаружи возможен?

п.с. тяжко в первый раз, особенно в первый )))

но расписано в коде изумительно, всю зиму с мажордомо воюю (пхп краешек выучил)

п.п.с. настройки не сохранены по следующим причинам

1. некорректный пароль домашней сети (у меня 32 символа цифры буквы латинские, ранее был 40, но оборудование броадлинк поддерживает не более 32, хотя по стандарту до 63 символов)

Изменено пользователем LogOFF

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

сейчас поймал ошибку со шрифтами!!, Шил по воздуху ! до этого только по проводу,))

 PS прошивка одна и тоже

Изменено пользователем MOHAX

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Еще две перезаливки (обе по воздуху), все тоже на одной версии (2.0.0) , и вот результат:

Так есть

1.PNG.eda7801abb6ab63786a3b1eff42d7d9f.PNG

 /* пример еще нескольких программных сенсоров *//*
  sensors.add(new knob_t(-100, 0, "1", "Сигнал", "dbm"), device::in, "rss",[&](){ 
    return wifi.isConnected() ? WiFi.RSSI() : 0; 
  });
  sensors.add(new knob_t(0, 5, ".01", "Питание", "V"), device::in, "vcc", [&](){ 
    return ESP.getVcc() * 0.001;
    });    
  sensors.add(new knob_t(0, 81920, "1", "Память", "Byte"), device::in, "ram", [&](){
    return 81920 - ESP.getFreeHeap();
  });
  */

а так нет))))

2.PNG.3d035c11b8083332974e0bd59b72e99f.PNG

всего лишь одна модификация

/* пример еще нескольких программных сенсоров */
  sensors.add(new knob_t(-100, 0, "1", "Сигнал", "dbm"), device::in, "rss",[&](){ 
    return wifi.isConnected() ? WiFi.RSSI() : 0; 
  });
  sensors.add(new knob_t(0, 5, ".01", "Питание", "V"), device::in, "vcc", [&](){ 
    return ESP.getVcc() * 0.001;
    });    
  sensors.add(new knob_t(0, 81920, "1", "Память", "Byte"), device::in, "ram", [&](){
    return 81920 - ESP.getFreeHeap();
  });

причем до этого со всеми индикаторами тоже работало,

Изменено пользователем MOHAX

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Kitsum, а возможно обойти ограничение в длине пароля к вай- фай в 30 символов?

Поменял пароль до 30 символов, но замучался с прочим оборудованием.

п.с. Выше п.п. 3 актуален, к примеру дома увлажнитель, в гараже обогреватель, с последним бы более гибко, как и с абсолютной влажностью, не нужно проветривать при -10 и ниже на улице и т.д.

И еще раз, Спасибо!

Изменено пользователем LogOFF

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
9 часов назад, LogOFF сказал:

а возможно обойти ограничение в длине пароля к вай- фай в 30 символов?

А где такое ограничение возникает? В web интерфейсе нельзя более 30 символов ввести?

При беглом ознакомлении с wifi библиотекой esp8266 не нашел ограничений на длину пароля. В html и css тоже не нашел.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Автор сказал исправит, я в файле вэб сервера смотрел, нашел где это вводится, но ограничения не увидел.

Разбираюсь по чуть-чуть.

Скрытый текст

Screenshot_2018-03-10-17-11-49.thumb.png.37bb8b419cf514f3275b7645fa9c345f.png

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Всем доброе время суток. Мы обзавелись небольшим файловым хранилищем. Постепенно все файлы разных проектов, да и не только, перекочуют туда. Файлы данного проекта можно найти по этой ссылке. Она же теперь указана в первом посте.

С Вашей помощью, я надеюсь отловить основные баги и довести проект до более-менее адекватного состояния. Часть из того, что уже упоминалось было поправлено. Под вопросом еще находится работа с Кириллицей, хоть необходимые изменения и были внесены, требуется продолжить тестирование.

Пока под вопросом как реализовать вывод логов с тех сенсоров на которых они ведутся. На данный момент имена сенсоров с которых пишутся логи стали кликабельны в web интерфейсе и вызывают отрисовку графика, но только с данными по этому сенсору. Хочу еще раз напомнить, что логи отъедают оперативную память контроллера, а т.к проект любительский то она не сильно то и экономится, в общем, смотрите по обстоятельствам.

В 07.03.2018 в 20:01, wildray сказал:

Смотрю в меню датчики на i2c- нет ничего. В коде ничего не менял, так и остался бме он. Подключил gy21. Перегрузил есп - в списке датчиков ничего нет. Подключил другой бме - в списке ничего нет. Я так понимаю, мне уже нужно свечку идти ставить, ауру отбеливать :).

i2c сканер не завязан с библиотеками датчиков и работает самостоятельно, используется стандартный объект Wire реализующий связь на шине и идущий в комплекте с файлами среды разработки. Возможно на шине действительно ничего нет.

В 07.03.2018 в 20:01, wildray сказал:

Хотел еще спрсить, по поводу датчиков, bme280 которые с стабом идут на борту. С есп понятно d1+d2+gnd+3.3v. А если делать такое на witty cloud, бутерброд? Да, нашел по таблице те же гпио 4+5+gnd+vcc, но в последнем 5в идет. Датчику нормально, а гпио?

Я не заказывал подобные платы, но могу сказать точно, что сам контроллер работает от напряжения 3.3V. Могу предположить, что на Вашем модуле DC-DC преобразователь все-таки распаян. Также хочу отметить, что данное питание можно получить от USB-TTL конвертера который используется на данном модуле. Ну а что касаемо 5V логики, то это только на Ваш страх и риск, но я советую внимательно изучить документацию на Witty Cloud, возможно там все-таки 3.3V.

В 10.03.2018 в 13:21, LogOFF сказал:

Можно ли в первый пост добавить:

Обязательно все добавлю. На данный момент просто не хватает времени, прошу немного потерпеть.

В 10.03.2018 в 13:21, LogOFF сказал:

3. gpio.h GPIO 12 (D6) - превышение установленной температуры, возможно ли изменить уставку с охлаждения на нагрев, ага, а 14 на разность абсолютной влажности, можно ли одновременно использовать 12 и 14?

В коде это очень легко делает, но если Вы хотите иметь возможность выбора в web интерфейсе, то на это может потребоваться время т.к это надо как-то графически оформить, а мои таланты по дизайну и верстке хромают. И, что Вы подразумевали под разностью абсолютной влажности? Вы хотите изменять это значение по аналогии с другими портами?

Вы можете использовать одновременно 12 и 14 порты микроконтроллера, а точнее тот функционал, который предоставлен в качестве примера. Управление портами совершенно не связано между собой, они даже разнесены в разные функции и прописаны как разные задачи в планировщике. Смело экспериментируйте, но все тесты проводите на слаботочной нагрузке, и все проверяйте по 10, а лучше по 100 раз, мы все люди и нам свойственно ошибаться.

В 10.03.2018 в 13:21, LogOFF сказал:

ага, или так, или этак, оба нужны будут, по второму вопрос, а датчик освещенности снаружи возможен?

Вы вольны указать любое расположение у сенсора. Это делается в его описании (смотрите пример с двумя датчиками BME280):

  • device::out
  • device::in

Вообще за этим типом данных скрываются целые числа, но пришлось привести их к такому визуальному (для человека) состоянию т.к если оставить простую возможность указать номер списка в который будет произведено добавление сенсора на web странице, то у пользователя может появится желание указать не 1 или 2, а например, 3 или 100500 и это приведет к сбою и последующим вопросам. А так компилятор попытается проконтролировать, что Вы укажите одно из доступных значений.

В 10.03.2018 в 13:21, LogOFF сказал:

настройки не сохранены по следующим причинам ...

Исправлено. Максимальная длинна увеличена до 63 знаков. Еще раз напомню, как производится фильтрация данных на web странице. Процесс обработки полей запускается событием нажатия на кнопку сохранить.

$(".settings input[type='submit']").click(function() {
	/* тут весь код обработки форм */
});

Обрабатываются не все существующие поля, а только те, чья группа сейчас открыта (ну или раздел, кому как удобнее). В коде Вы можете найти вызов функций, использующих регулярные выражения для проверки содержимого полей. Сами выражения очень простые, но этого должно быть достаточно для того, чтобы можно было остановить обработку и не отправить на контроллер всякую ерунду. На текущий момент используются следующие функции, названия должны объяснять, что они проверяют

function checkLogin(login) { return login.match(/^[a-z0-9_]{3,30}$/i); }
function checkPassw(passw) { return passw.match(/^.{5,63}$/); }
function checkSSID(ssid) { return ssid.match(/^[a-z0-9_. -]{3,30}$/i); }
function checkHostAddr(host) { return host.match(/^((?!(0|127|255))((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|((([a-z0-9\-]{1,10}\.){1,3})?([a-z0-9\-]{2,26})\.)[a-z]{2,6})$/i); }
function checkMqttPath(path) { return path.match(/^[a-z0-9_/]{3,200}$/i); }
function checkThingSpeakKey(key) { return key.match(/^[A-Z0-9]{16}$/); }
function checkNarodmonId(id) { return id.match(/^[A-Z0-9-:]{12,18}$/); }
function checkGPIO(val) { return val.match(/^([\-]?[0-9]{1,3})$/); }
function checkMDNS(name) { return name.match(/^([a-z0-9]{3,16})$/); }

Конечно, это легко обойти, но кроме этого имеется еще ряд защитных механизмов в самой программе микроконтроллера, но это тема для отдельного разговора. Я хотел бы попросить Всех заинтересованных в помощи составления "регулярок" для более адекватной проверки вводимых данных. Можно просто указывать ссылки на те или иные стандарты, в которых указаны нормы для используемых данных.

В 10.03.2018 в 18:06, MOHAX сказал:

Еще две перезаливки (обе по воздуху), все тоже на одной версии (2.0.0) , и вот результат:

Возможно Вы используете версию прошивки микроконтроллера в которой не задан заголовок с точным указанием кодировки. Обратите внимание на файл webserver.h и на константу

#define headerJson F("application/json; charset=utf-8")

и на то, где она используется. Дайте знать о Ваших результатах.

В 08.03.2018 в 11:33, vavandemidov сказал:

Предыдущий вариант прошивки был рабочий. Просьба к автору темы выложить его опять и обновления выкладывать не удаляя старые версии. 

Сделано.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 12.03.2018 в 22:42, Kitsum сказал:

 

Возможно Вы используете версию прошивки микроконтроллера в которой не задан заголовок с точным указанием кодировки. Обратите внимание на файл webserver.h и на константу


#define headerJson F("application/json; charset=utf-8")

и на то, где она используется. Дайте знать о Ваших результатах.

 

И так самяя последняя версия залита, строка #define.... в файле webserwer.h  стоит, в том же месте что и в прошлой версии.( на счет где используется не совсем понял

)
И так ошибку со шрифтами вызывало изменение количества отображаемых датчиков (убираю и добавляю по очереди качество сигнала, вольтаж и память):

- обновление по проводу идеально.

- обновление бинарным файлом ( не с первого раза вызывает ошибку в шрифтах), однако заливка через провод исправляет ошибку в кодировке.

PS ошибка только в отображении наименования датчиков.

bin прилагается

ESP8266_WS_V2.0_BETA_iT4IT.CLUB.ino.nodemcu.bin.7z

Изменено пользователем MOHAX

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Большое спасибо за Ваш проект, хорошая метеостанция получилась!

Основа - первая версия, с небольшими доработками под "себя". 

Теперь любой желающий может посмотреть текущую погоду от "первых рук" http://narodmon.ru/5548#

Clipboard 1.jpg

Изменено пользователем see
  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
7 часов назад, see сказал:

Большое спасибо за Ваш проект, хорошая метеостанция получилась!

Основа - первая версия, с небольшими доработками под "себя". 

Теперь любой желающий может посмотреть текущую погоду от "первых рук" http://narodmon.ru/5548#

Clipboard 1.jpg

Отличная доработка. Можно скетч получить? Желательно с описанием датчика скорости ветра.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Датчик скорости ветра китайский, 5 в, выход импульсный 16 имп на оборот

Датчик направления то же китайский, 5 в,  аналоговый выход 0...5 вольт

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
38 минут назад, see сказал:

Датчик скорости ветра китайский, 5 в, выход импульсный 16 имп на оборот

Датчик направления то же китайский, 5 в,  аналоговый выход 0...5 вольт

Вытягивать нужно? -  скеч? фото или ссылку на китайский датчик скорости и направление ?.....или дописываем - НЕ ДАМ, Я ЖАДИНА.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

не думал, что ссылка на товар так важна (каждый волен выбирать по своим потребностям и возможностям)

заказывал здесь: https://www.aliexpress.com/snapshot/0.html?spm=a2g0s.9042647.6.2.9rX55l&orderId=700633749851919&productId=32724553879

эти датчики удовлетворяли моим запросам, а именно выход датчика скорости ветра - импульсный, датчик направления ветра не ступенчатый

 

Изменено пользователем see

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, see сказал:

не думал, что ссылка на товар так важна (каждый волен выбирать по своим потребностям и возможностям)

заказывал здесь: https://www.aliexpress.com/snapshot/0.html?spm=a2g0s.9042647.6.2.9rX55l&orderId=700633749851919&productId=32724553879

404 not found 

Надо разлогиниться и скопировать ссылку

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
13 минут назад, wildray сказал:

Вытягивать нужно? -  скеч? фото или ссылку на китайский датчик скорости и направление ?.....или дописываем - НЕ ДАМ, Я ЖАДИНА.

1- скеч?

2 - 404 - товар не найден!

.... очень интересно, на сколько бы лет умножилось время исполнения Ваша великолепной метеостанции, если бы Вам, как "сестра таланта" - тс отвечал бы?!?

Изменено пользователем wildray

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

заказывал здесь https://ru.aliexpress.com/item/Wind-Direction-Sensor-Wind-Speed-Sensor-DC12-24V-Voltage-Current-4-20mA-Signal-Output-Air-Plug/32724553879.html

хотя сейчас бы, наверное, заказал с выходом modbus, но + $30 сверху...

Изменено пользователем see

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

скетч пока не причёсан,  есть косяки, недоработки

могу только сказать, что обработка датчиков ветра сделано на ардуино нана, связь с ESP software serial

на измерение средней скорости ветра и направления ветра применяю две ступени фильтра медиан

но похоже этого мало, порывы - выбираю максимальные значения при измерении и обновляю через 5 минут

Изменено пользователем see

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 минут назад, see сказал:

смею еще спросить (если "не жадина", я пока ответа не увидел, без обид), направление ветра по вольтажу, скорость ветра тоже по вольтажу, это отдельные датчики - на esp один ADC - на пальцах можно схему подключения?!?

скеч можно? там на кирилице матов нет в описании? причесывать не нужно....

...... возможные варианты ответов - 1: да конечно, вот ссылка, 2: я тут это, слить не знаю куда, у кореша на компе остался, описывал для себя нецензурно в коментах, так как связывать смысл сложно.... - не дам, я ЖАДИНА!!!

Изменено пользователем wildray

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пожалуйста, войдите для комментирования

Вы сможете оставить комментарий после входа



Войти сейчас

  • Похожие публикации

    • Автор: Kitsum
      Хотите помочь проекту или спонсировать новый?
      Yandex.Money PayPal.me Тема проекта
      Arduino IDE + Project + Libraries + tools: https://yadi.sk/d/jseefFB50NMhAg
    • Автор: Kitsum
      Просмотреть файл [esp8266] Библиотека CMD, реализует настройку микроконтроллера и управление вашей программой через терминал.
      Основная задача библиотеки, это прием пользовательских команд через UART интерфейс, их обработка и выполнение пользовательского кода, связанного с той или иной командой.
      Данная библиотека позволяет реализовать:
      Управление микроконтроллером Любую настройку, будь то WiFi, другие библиотеки или часть Вашей программы Вызывать Ваши задачи (функции) из терминала по команде и передавать им требуемые параметры Использовать контроллер в качестве шлюза между датчиками и программами на PC Внимание: любая команда, передаваемая в терминал обязана заканчиваться символом перевода строки "\n".
      Подключение библиотеки
      #include <cmd.h> Инициализация объекта, к которому мы будем обращаться для добавления команд. В качестве параметра объекту необходимо передать указатель на объект Serial или любой другой схожий по типу интерфейс.
      cmd command(&Serial); В функции Setup описываем какие команды требуется обрабатывать. Например, по команде "test" вызывать пользовательскую функцию с именем "myFunctionName". Имя пользовательской функции может быть абсолютно любым.
      void Setup() { Serial.begin(115200); command.add("test", myFunctionName); } Пользовательская функция будет вызываться каждый раз, когда по интерфейсу Serial поступит команда "test". Если команда будет передана с параметрами, то эти параметры будут переданы в качестве аргументов пользовательской функции.
      В функции loop должна находится команда вызова обработчика.
      void loop() { command.handleEvents(); } Пользовательская функция обязана соответствовать ряду требований:
      Не возвращать никакого результата (быть объявленной с типом void) Принимать в качестве первого аргумента переменную с типом byte в которой будет храниться число равное количеству переданных параметров Принимать в качестве второго параметра переменную с типом char** в которой будет храниться указатель на массив со всеми указателями (char*) на переданные параметры void myFunctionName(byte argc, char** argv) { /* ... */ } Функция всегда должна иметь такой вид, даже если не подразумевается, что ей будут передаваться какие-либо параметры.
      Чтобы перебрать все переданные параметры и вывести их в консоль, можно воспользоваться следующим примером
      void myFunctionName(byte argc, char** argv) { if (0 < argc) { for (uint8_t i = 0; i < argc; i++) { Serial.printf("%i. %s\n", i, argv[i]); } } } Пример вызова пользовательской функции без параметров и с ними
      # test No parameter was passed # test p1 p2 p3 p4 p5 0. p1 1. p2 2. p3 3. p4 4. p5 Помните, что параметры представлены в виде указателей и работать с ними нужно как с обычными переменными не получится т.к указатель содержит не значение переменной (переданный параметр), а указатель на ту область памяти микроконтроллера в которой это значение находится.
      Чтобы сравнить два значения, например, параметр под индексом 0 (идет первым в списке) с каким-либо значением в программе, воспользуйтесь функцией strcmp, которая возвращает целочисленное значение, указывающее на лексическое расхождение строк. Если строки равны, то возвращаемое значение равно 0.
      if (!strcmp(argv[0], "wifi")) { Serial.println(F("Первый аргумент WiFi")); } else { Serial.println(F("Первый аргумент НЕ WiFi!!!")); } Для копирования значения указателя в другую переменную с типом char можно воспользоваться функцией strcpy
      char myVar[20]; strcpy(myVar, argv[0]); if (myVar == "123456") { Serial.prinln(F("ok")); } Также можно обернуть указатель объектом String и получить весь функционал этого объекта, который будет содержать значение параметра
      String param1(argv[0]); // String param1 = argv[0]; Serial.printf("argv[0] length: %i\n", param1.length()); Serial.printf("argv[0] is integer?: %s\n", param1.toInt() ? "YES" : "NO"); if (param1 == "qwerty") { Serial.println(F("Hello QWERTY!")); } С библиотекой идут несколько примеров, в том числе и пример конфигурации WiFi в режиме STA.
      Автор Kitsum Добавлен 05.12.2018 Категория Библиотеки  
    • Автор: Kitsum
      Просмотреть файл [esp8266] Библиотека smartBlink, реализует умное управление штатным светодиодом, что позволяет добавить индикацию состояния вашей программы или микроконтроллера.
      Основная задача библиотеки, это добавление индикации состояния Вашей программы или микроконтроллера. Отображение состояния производится посредством светодиода. Что самое важное, работа библиотеки через прерывание, это позволяет ей поддерживать индикацию даже в то время, когда выполняется длительный код основной программы. Например, Вы можете использовать её для отображения в каком режиме сейчас работает WiFi микроконтроллера, STA или AP и т.д. Или ход выполнения какой-либо операции, например, передача данных на внешний сервер.
      Подключение библиотеки
      #include <smartBlink.h> Чтобы инициализировать управление светодиодом необходимо создать объект, через который мы буем задавать режимы работы индикации.
      smartBlink::smartBlink(byte gpio, bool on = LOW); Объекту необходимо передать два параметра, первый это номер порта, на котором находится светодиод, а второй это уровень логического сигнала, который заставит светодиод работать. Сигнал может быть низким (LOW) или высоким (HIGH), это зависит от схемотехники подключения светодиода.
      Например, штатный светодиод модуля ESP12, использующий GPIO2 (порт 2) можно объявить следующим образом.
      #define led2_pin 2 #define led2_on_signal LOW smartBlink led2(led2_pin, led2_on_signal); Теперь можно в основной программе использовать метод устанавливающий какой режим индикации использовать.
      smartBlink::setMode(mode_t mode); Например, зададим режим светодиода led2 в котором светодиод будет давать одну короткую вспышку раз в секунду.
      led2.setMode(smartBlink::mode_flash1); Режимов работы может быть несколько.
      led2.setMode(smartBlink::mode_off); led2.setMode(smartBlink::mode_flash1); led2.setMode(smartBlink::mode_flash2); led2.setMode(smartBlink::mode_flash3); led2.setMode(smartBlink::mode_flash4); led2.setMode(smartBlink::mode_burn); led2.setMode(smartBlink::mode_inhalf); Чтобы вернуть предыдущий режим индикации для ранее объявленного светодиода led2 используйте следующий метод
      led2.previous(); Благодаря работе библиотеки через прерывания по таймеру, индикация будет работать даже в тех случаях, когда выполняется долгий код.
      С библиотекой идут несколько примеров.
      Автор Kitsum Добавлен 10.12.2018 Категория Библиотеки  
    • Автор: Kitsum
      Основная задача библиотеки, это добавление индикации состояния Вашей программы или микроконтроллера. Отображение состояния производится посредством светодиода. Что самое важное, работа библиотеки через прерывание, это позволяет ей поддерживать индикацию даже в то время, когда выполняется длительный код основной программы. Например, Вы можете использовать её для отображения в каком режиме сейчас работает WiFi микроконтроллера, STA или AP и т.д. Или ход выполнения какой-либо операции, например, передача данных на внешний сервер.
      Подключение библиотеки
      #include <smartBlink.h> Чтобы инициализировать управление светодиодом необходимо создать объект, через который мы буем задавать режимы работы индикации.
      smartBlink::smartBlink(byte gpio, bool on = LOW); Объекту необходимо передать два параметра, первый это номер порта, на котором находится светодиод, а второй это уровень логического сигнала, который заставит светодиод работать. Сигнал может быть низким (LOW) или высоким (HIGH), это зависит от схемотехники подключения светодиода.
      Например, штатный светодиод модуля ESP12, использующий GPIO2 (порт 2) можно объявить следующим образом.
      #define led2_pin 2 #define led2_on_signal LOW smartBlink led2(led2_pin, led2_on_signal); Теперь можно в основной программе использовать метод устанавливающий какой режим индикации использовать.
      smartBlink::setMode(mode_t mode); Например, зададим режим светодиода led2 в котором светодиод будет давать одну короткую вспышку раз в секунду.
      led2.setMode(smartBlink::mode_flash1); Режимов работы может быть несколько.
      led2.setMode(smartBlink::mode_off); led2.setMode(smartBlink::mode_flash1); led2.setMode(smartBlink::mode_flash2); led2.setMode(smartBlink::mode_flash3); led2.setMode(smartBlink::mode_flash4); led2.setMode(smartBlink::mode_burn); led2.setMode(smartBlink::mode_inhalf); Чтобы вернуть предыдущий режим индикации для ранее объявленного светодиода led2 используйте следующий метод
      led2.previous(); Благодаря работе библиотеки через прерывания по таймеру, индикация будет работать даже в тех случаях, когда выполняется долгий код.
      С библиотекой идут несколько примеров.
  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...