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

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

Как на lua составить код для ДВУХ подключенных BME280  с разными адресами? поделитесь

В 18.02.2018 в 04:20, vavandemidov сказал:

Как на lua составить код для ДВУХ подключенных BME280  с разными адресами? поделитесь

Ну ладно, как это сделать в Arduino IDE? 

Выше есть один такой пример, но он не компилируется - в коде ошибка. 

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


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

@vavandemidov Возможно Вы ищите это 

 

Это уже видел, но у меня компилятор спотыкается в самом начале сразу после настроек датчика BME280:

#include <BME280I2C.h>
BME280I2C::Settings
settings_out(
  BME280::OSR_X1,
  BME280::OSR_X1,
  BME280::OSR_X1,
  BME280::Mode_Forced,
  BME280::StandbyTime_1000ms,
  BME280::Filter_Off,
  BME280::SpiEnable_False,
  0x76 // I2C address
),
settings_in(
  BME280::OSR_X1,
  BME280::OSR_X1,
  BME280::OSR_X1,
  BME280::Mode_Forced,
  BME280::StandbyTime_1000ms,
  BME280::Filter_Off,
  BME280::SpiEnable_False,
  0x77 // I2C address
);

invalid conversion from 'int' to 'BME280I2C::I2CAddr' [-fpermissive]

 

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


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

@vavandemidov Пробуйте привести адрес датчика к запрашиваемому типу

(uint8_t)0x76
(uint8_t)0x77

У меня данной проблемы нет, все прекрасно компилируется. Версия IDE 1.8.3

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


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

@vavandemidov Если не секрет, то какую версию Arduino IDE и какой релиз ESP8266 Вы используете? Вносили ли Вы изменения в список поддерживаемых платформ или обновляли/откатывали их версии? Пробовали ли Вы использовать последние версии всего пара программ?

У меня есть большая уверенность, что, если я возьму последнюю версию IDE с сайта разработчика, добавлю в неё последний официальный релиз ESP8266 и скину это все на форум в виде Portable версии, чтобы она не пересекалась с уже имеющимися у Вас продуктами. То она без проблем скомпилирует программу. Если данный тест Вам интересен, то вечером скину подготовленный архив.

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


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

Arduino IDE = 1.8.6 скачана с офсайта на прошлой неделе, поддерживаемая платформа esp8266 v_2.0.4-rc2, новее на сегодня в списке предложений к обновлению нет. Всё ПО скачано не более 10 дней назад и до этого предыдущих версий ПО на компе установлено не было, т.к. Ардуинами до этого не интересовался.ПО ставилось на три разных компа на предмет исключения варианта глюка железа. Правда везде Win10 но и х64 и х86. ESP8266 на NodeMcu v3. Основной проект из этой темы компилируется и работает (снимаю мой кэпка, низко кланиюсь),  а вот вариант ESP8266_WS_iT4iT.CLUB_LogOFF.zip ни в какую, есть предположение что у Вас более старая версия библиотеки для работы с ВМЕ280.

Цитата

скину это все на форум в виде Portable версии

Был бы очень благодарен за это.

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


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

@vavandemidov Спасибо за мысль о версии библиотеки. Вы попали в точку, моя версия оказалась более старой.

Я внес исправления и обновил архив, можете забрать его и проверить. Сама проблема заключалась в том, что разработчик ввел перечисление для адреса сенсора описав его в файле BME280I2C.h

enum I2CAddr
{
    I2CAddr_0x76 = 0x76,
    I2CAddr_0x77 = 0x77
};

Работать это будет следующим образом

#include <BME280I2C.h>
BME280I2C::Settings
settings_out(
  BME280::OSR_X1,
  BME280::OSR_X1,
  BME280::OSR_X1,
  BME280::Mode_Forced,
  BME280::StandbyTime_1000ms,
  BME280::Filter_Off,
  BME280::SpiEnable_False,
  BME280I2C::I2CAddr_0x76
),
settings_in(
  BME280::OSR_X1,
  BME280::OSR_X1,
  BME280::OSR_X1,
  BME280::Mode_Forced,
  BME280::StandbyTime_1000ms,
  BME280::Filter_Off,
  BME280::SpiEnable_False,
  BME280I2C::I2CAddr_0x77
);
BME280I2C BME_OUT(settings_out), BME_IN(settings_in);

Еще раз спасибо за помощь.

  • Like 1

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


Ссылка на сообщение
Поделиться на других сайтах
BME280I2C::I2CAddr_0x76
BME280I2C::I2CAddr_0x77
);
BME280I2C BME_OUT(settings_out), BME_IN(settings_in);

Однако, так я уже пробовал, не получилось. Попробую Ваш обновленный архив....

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


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

Добрый вечер!

Давно пользуюсь старой версией, чуть изменив её под себя (использую TSL2561 и BME280). Всё делал из portable версии Arduino IDE (1.8.4). Вчера решил включить режим ota и добавить DS18B20 и тут началось не могу откомпилировать, постоянные ошибки. Увидел обновлении темы и решил проверить новую версию - результат тот же. Сейчас ошибка: 'class MDNSResponder' has no member named 'notifyAPChange'. Что-нибудь подскажете?

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


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

@ewanpips Доброе время суток.

Данная ошибка говорит об отсутствии у класса, отвечающего за реализацию поддержки MDNS протокола, метода notifyAPChange. Последний, в свою очередь, нужен для запуска цепочки событий при смене параметров сети. Я могу предположить, что у Вас более старая версия этой библиотека. Рекомендую Вам проверить в менеджере плат версию esp8266 которую Вы используете в Arduino IDE. На данный момент я использую версию 2.4.0

На всякий случай я скидываю свою текущую Portable версию Arduino IDE которой пользуюсь сам, с установленной поддержкой esp8266 v2.4.0. В комплекте также идет скетч о 27.02.2018 и набор несколько используемых библиотек. Для эксперимента можете проверить её.

Yandex Disk: https://yadi.sk/d/oXaQdiTi3Sq7WZ

 

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


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

@Kitsum Проверю Вашу версию, хотя вроде в моей все обновлено было. Меня больше смутила ситуация, что старая версия не компилируется. Сейчас занимаюсь установкой датчиков в "метеобудку" по Вашему эскизу.

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


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

Привет. Что за два файла esp8266_firmware_v2.0_beta.bin и esp8266_spiffs_v2.0_beta.bin лежат в архиве?

После прошивки Вашей версией программы 1.8.5:

ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x4010f000, len 1384, room 16 
tail 8
chksum 0x2d
csum 0x2d
v4ceabea9
~ld

Как впрочем и моей 1.8.6...

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


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

@vavandemidov Доброе время суток.

  • firmware - прошивка микроконтроллера
  • spiffs - образ файловой системы со всеми файлами web сервера

Я удалю их чтобы никого не смущать.

Отключите все датчики и перезапустите микроконтроллер. Если все в порядке, то подключенные датчики не соответствуют выбранным библиотекам. А лучше опишите, как и в каком порядке Вы прошиваете микроконтроллер.

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


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

1.    spiffs прошивал программой nodemcu-flasher с дефолтными настройками по адресу 0х000. Процесс прошивки заканчивался нормально. после прошивки в мониторе порта пусто, но стоит перегрузить контроллер:

ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x4010f000, len 1384, room 16 
tail 8
chksum 0x2d
csum 0x2d
v4ceabea9
~ld2.

2.    Вашей программой FrduinoIDE 1.8.5 и своей 1.8.6 прошиваю - компиляция/загрузка/DataUpload идет нормально, после прошивки в мониторе порта пусто, но стоит перегрузить контроллер:

ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x4010f000, len 1384, room 16 
tail 8
chksum 0x2d
csum 0x2d
v4ceabea9
~ld.

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

(NODEMCU_V3 LOLIN+ВМЕ280x2+питание от usb компьютера.)

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


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

@vavandemidov Тогда все становится на свои места.

  1. При прошивке через NodeMCU Flasher Вы пытаетесь загрузить образ файловой системы по адресу с которого начинается программа микроконтроллера. Это фатальная ошибка, работать ничего не будет.
  2. При прошивке через Arduino IDE у меня возникает ряд вопросов с настройками используемой Вами платы.

Чтобы подобные ситуации впредь не возникали, все бинарные файлы были удалены из исходников. Все датчики также выключены по умолчанию, дабы стимулировать желание внести изменение в код и загрузить программу через Arduino IDE.

Как надо делать:

  1. Используйте среду Arduino IDE с поддержкой esp8266 версии 2.4.0 или выше.
  2. В настройках используемой платы выберите свой модуль, но предполагается, что используется NodeMCU 1.0 (ESP-12E Module).
  3. Размер Flash обязательно должен быть выставлен как 4M (3M SPIFFS), при этой настройке под файловую систему будет выделен "раздел" объемом 3M.
  4. Выберите COM порт к которому подключен микроконтроллер.
  5. Все остальные настройки оставляем по умолчанию, они должны совпадать.
  6. Компилируем и загружаем образ файловой системы, меню  "Инструменты/ESP8266 Sketch Data Upload", долго и упорно ждем окончания загрузки. При этом Serial монитор должен быть закрыт, иначе получим соответствующую ошибку.
  7. В последнюю очередь компилируем и загружаем саму программу в микроконтроллер, меню "Скетч/Загрузка".
  8. Откройте Serial монитор на скорости 115200, нажмите на кнопку Reset и посмотрите на вывод

После всего этого можете вносить собственные изменения в программу.

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

Возможно еще кто-то изъявит желание отписаться о своих результатах.

PS: Увидеть отчет о работе загрузчика я смог только на скорости 74880, а сама программа пишет в Serial на скорости 115200, что опять вызывает ряд вопросов, но не суть... Пройдитесь внимательно по всем описанным пунктам.

PSS: Нашел полное описание для адресного пространства на официальном сайте https://www.espressif.com/en/support/explore/get-started/esp8266/getting-started-guide раздел 4.1.это на тот случай если Вам удобнее подготавливать контроллер и загружать программу самостоятельно через Flasher и подобные программы.

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


Ссылка на сообщение
Поделиться на других сайтах
  1. Используйте среду Arduino IDE с поддержкой esp8266 версии 2.4.0 или выше. - ДА
  2. В настройках используемой платы выберите свой модуль, но предполагается, что используется NodeMCU 1.0 (ESP-12E Module). - ДА
  3. Размер Flash обязательно должен быть выставлен как 4M (3M SPIFFS), при этой настройке под файловую систему будет выделен "раздел" объемом 3M. - ДА
  4. Выберите COM порт к которому подключен микроконтроллер. - ОК
  5. Все остальные настройки оставляем по умолчанию, они должны совпадать. - ОК
  6. Компилируем и загружаем образ файловой системы, меню  "Инструменты/ESP8266 Sketch Data Upload", долго и упорно ждем окончания загрузки. При этом Serial монитор должен быть закрыт, иначе получим соответствующую ошибку. - ОК, все загружается.
  7. В последнюю очередь компилируем и загружаем саму программу в микроконтроллер, меню "Скетч/Загрузка". - ОК, все загружается.

//Пробовал разную последовательность загрузки "Инструменты/ESP8266 Sketch Data Upload" <->   "Скетч/Загрузка"

        8. Откройте Serial монитор на скорости 115200, нажмите на кнопку Reset и посмотрите на вывод - 


Exception (0):
epc1=0x4000dce5 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000

ctx: cont 
sp: 3fff1920 end: 3fff1bc0 offset: 01a0

>>>stack>>>
3fff1ac0:  0000005b 00005b00 3fff04c4 40216682  
3fff1ad0:  00001388 3ffe8524 3fff04c4 402166d8  
3fff1ae0:  3fff0794 3ffe8524 3fff409c 402077a4  
3fff1af0:  3fff0794 00001388 3fff1b40 4020964a  
3fff1b00:  3fff384c 3ffe8524 3fff409c 4020968d  
3fff1b10:  3fff4674 00001388 3fff1b80 402096ac  
3fff1b20:  3fff0a94 00000166 3fff1b80 4020a6f2  
3fff1b30:  3fff0794 00001388 3fff1b80 4020a900  
3fff1b40:  3fff2dfc 000002ec 40208144 402096a0  
3fff1b50:  00000000 00000000 3fff0794 401004d8  
3fff1b60:  3fff2c1c 0000001c 3fff0794 40219528  
3fff1b70:  4021953c 00000000 3fff0794 4020ce8a  
3fff1b80:  3fff2c1c 00000000 40208144 402096a0  
3fff1b90:  feefeffe feefeffe feefeffe 3fff0b90  
3fff1ba0:  3fffdad0 00000000 3fff0b88 402185b4  
3fff1bb0:  feefeffe feefeffe 3fff0ba0 40100710  
<<<stack<<<

 ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x4010f000, len 1384, room 16 
tail 8
chksum 0x2d
csum 0x2d
v4ceabea9
~ld

 

Загружаю свой скетч - все работает с ВМЕ280х2. Т.е. NODEMCU рабочий, ВМЕ280х2 тоже работают. ArduinoIDE работает.

Я уж было хотел писать что Вы сделали в этом проекте все, о чем только можно мечтать и моя жизнь больше не имеет смысла - ан нет! Поживу еще, есть пока к чему стремиться.

Но с Вашей метеостанцией печалька (

 

С папкой src или ее содержимым что-нибудь надо делать?

У кого результат по этой версии положительный?

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


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

Блин! В прошлой версии можно было настройки сети через скетч менять, сейчас надо ковырять, суть проблемы SSID моей сети точнее одной из сетей HomeWifi_N (режим N протокола wifi) а второй HomeWifi_AC, так вот веб интерфейс на отрез не признает "_" это символ, подскажите куда копать, переименовывать сеть не вариант (25 устройств в сети)

PS: Нашел_))) в основном скетче в начале, но в веб пока не могу побороть.

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


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

@MOHAX Добавил поддержку нижнего подчеркивания в имена сетей. Скачайте новый архив и загрузите файл index.htm.gz в файловую систему web сервера.

@vavandemidov У меня есть пачка абсолютно новых модулей ESP-12. Постараюсь завтра провести эксперимент и загрузить программу на один из них, а заодно снять все это на видео. Посмотрим, возможно в процессе появятся какие-то идеи.

2 часа назад, vavandemidov сказал:

С папкой src или ее содержимым что-нибудь надо делать?

Можете удалить её. На данный момент её содержимое не используется в проекте. Была идея, основываясь на опыте разработчика библиотеки для датчиков BME280, набросать свои библиотеки для разных сенсоров, описанных в проекте. Все это помогло бы привести набор библиотек к одному общему виду и добавить необходимый функционал. Но пока оставляем это как идею.

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


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

@MOHAX Добавил поддержку нижнего подчеркивания в имена сетей. Скачайте новый архив и загрузите файл index.htm.gz в файловую систему web сервера.

@vavandemidov У меня есть пачка абсолютно новых модулей ESP-12. Постараюсь завтра провести эксперимент и загрузить программу на один из них, а заодно снять все это на видео. Посмотрим, возможно в процессе появятся какие-то идеи.

Можете удалить её. На данный момент её содержимое не используется в проекте. Была идея, основываясь на опыте разработчика библиотеки для датчиков BME280, набросать свои библиотеки для разных сенсоров, описанных в проекте. Все это помогло бы привести набор библиотек к одному общему виду и добавить необходимый функционал. Но пока оставляем это как идею.

Спасибо

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


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

Здравствуйте. Благодарю за проделанную работу!

Возник вопрос, загрузил проект в wemos d1mini, что со шрифтами?

IMG_20180301_104549_349.jpg

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


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

что со шрифтами?

Смена кодировки в браузере не помогает? У меня было такое, в настройках браузера надо поставить кодировку UTF8.

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


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

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

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



Войти сейчас

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

    • Автор: 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 пользователей

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

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