Успехов.
P.S. Сами дисплеи подключать постоянно не обязательно - они могут подключаться/отключаться в "горячем" режиме.
Библиотеки для разных контроллеров
1.Ваш пример для ESP32.Gordon0007 писал(а): ↑01.06.2020{, 17:14}ecoins, Так не смог адаптировать ваш блок и заставить его работать
Проверка MCP23017 урезаная.flp
------Gordon0007 писал(а): ↑01.06.2020{, 17:14}ecoins, Так не смог адаптировать ваш блок и заставить его работать
Проверка MCP23017 урезаная.flp
Это кусок кода, который я собираюсь использовать для своего аквариума, проект большой и интересный. Мне нужно было разобраться с данным модулем как он работает и столкнулся с зависанием при его использование. Если интересно могу скинуть перечень сигналов и оборудования которое будет использоваться в моем проекте. Причина использования ESP32 и модулей расширения в том, что хочу сделать управление через комп/телефон и не хватает портов управления.Во-первых забыт один вход - 15.
1. Побитное управление отброшена - что один бит, что 8 бит требует одного времени при обмене с i2c. При SPI это еще и могло иметь смысл. Общая рекомендация такая - ставьте дополнительные модули, если есть проблемы с нехваткой входов при порегистровой (побайтной) настройке.Gordon0007 писал(а): ↑04.06.2020{, 09:29}1. как управлять каждым каналом в отдельности, как встроенного блока?
Gordon0007 писал(а): ↑04.06.2020{, 09:29}2. Можно ли использовать как модуль ввода/вывода или только по отдельности ввод или вывод?
Поставьте поменьше подтягивающие резисторы к пинам 21,22 (SDA,SCL) - i2c будет работать устойчивее. Ошибки обрабатываются еще и библиотекой и потому модуль работает устойчиво.Gordon0007 писал(а): ↑04.06.2020{, 09:29}3. На какую длинны максимально можно выводить провода от контроллера до модуля (у меня в с вашей прошивкой не зависает про длине проводов 20см)?
Gordon0007 писал(а): ↑04.06.2020{, 09:29}4. Можно ли после испытания этих блоков согласовать с автором "Сергеем" их использование как штатные блоки в новых версиях программы?
SDA,SCL UNO - 18,19 (или А4,А5) - не меняются;Gordon0007 писал(а): ↑04.06.2020{, 09:29}5. Так же мне не очень понятны как и где присваиваются ноги контроллера ESP32, МЕГИ и УНЫ, они же разные (в родном блоке все прозрачно)? Ну и у ESP32 2 x I2C а у остальных по одному.
Вопрос несколько сложнее. Часть блоков (например счетчики) у нас автономные. Блоки для работы с устройствами основаны на собственных библиотеках и их всегда надо подключать к FLProg в директорию ideV5. Сейчас мы реализуем собственную концепцию библиотек для Arduino IDE, библиотеки развиваются вместе с концепцией. В концепции применен другой подход по совместимости проекта с разными контроллерами - он сильно отличается от текущего подхода FLProg.Gordon0007 писал(а): ↑04.06.2020{, 09:29}6. этот вопрос может быть моим не верным суждением но, мне хочется как можно больше использовать штатные блоки, что бы не зависить от пользовательских блоков при изменение версии программы. Можно ли как то договориться с создателем для внесения в штатные блоки проверенные блоки пользователей, что бы при изменение программы не искать библиотеки и ПБ?
Не понял о каких блоках Вы пишите. Если о наших то любой бит можно проинвертировать по входу (байт в 8-бит и 8-бит в байт) или все одновременно через блок вычитания (255-значение байта).Gordon0007 писал(а): ↑04.06.2020{, 09:29}Реле переключается, модуль для приема сигналов DI работает и отправляет в контроллер данные
Но есть, но
1. Почему то у меня реле работает в инверсном виде (видимо у меня другая реле они бывают с постоянным "+" или "-"). Все реле кроме одного включены ну и по очереди выключаются и включаются.
Gordon0007 писал(а): ↑04.06.2020{, 09:29}
2. На второй плате MCP23017 в исходнике модуль работает не только как DI, а как DI/DO (видимо по этой причине вы не нашли 15 пин). В данный момент там стоит два светодиода и по очереди моргают подтверждая, что связь с платой есть. В дальнейшем это будет работать как - нажал кнопку и на этой же плате загорается светодиод потверждающий нажатие кнопки и что контроллер обработал нажатие и обработал прекращение нажатой кнопки, тем самым уменьшается пучок проводов до кнопок и светодиодов.
Во-первых забыт один вход - 15.
Мы сейчас создаем новую платформу, там это будет предусмотрено.
Причина простая, на одну шину можно подключить только 8 таких плат, но если их нужно больше, допустим 10шт. Вот второе применение в эти пины просто заняты другими устройствами (дисплеем, часами или просто дискретными сигналами), а переподключать нет возможности и в макетке нет свободного отверстия, так как плата занимает 4 из 5 отверстия. Причин может быть много, я могу только предположить. Но если есть такая возможность почему бы ей не пользоваться в полной мере.
Понятно. Если не вскрывать набор разных нюансов, то подобное использование контроллеров в FLProg лучше избегать.Gordon0007 писал(а): ↑06.06.2020{, 09:11}Причин может быть много, я могу только предположить. Но если есть такая возможность почему бы ей не пользоваться в полной мере.
1.По обновлению выходам исправили - в новых версиях это и другое выполним поаккуратнее.Gordon0007 писал(а): ↑06.06.2020{, 12:07}В момент обрыва происходит следующее:
- DI (входы) сбрасываюся на "0" как будто их и не нажимали даже если они были нажаты в момент обрыва связи, после востановления связи сигнал моментально приходит на контроллер "Для меня это нормально и устраивает на все 100%"
- DO (выхода) "не знаю как" сохраняют последние поданные на них данные и пока не востановится связи удерживает эти контакты включенными или выключенными, после востановления связи на модуль приходит именно то состояние контактов которое должно быть по программе, если стоит значение "w". Но есть"НО" У меня стоит значение "W" (W -вывод с записью по изменению.Выполняется при инициализации(1 раз) и при каждом изменении значения регистра), что значит если изменение произошли в момент когда был обрыв связи, то у вас будет висеть старое значение пока не обновится значение следующий раз. "Для меня это не подходит буду ставить значение "w""
2. Это проблема не блока, а то, как удобнее предусмотреть эту опцию для FLProg - интерфейсы могут использовать для разных блоков и для разных контроллеров разных архитектур(AVR,DUE,ESP8266,ESP32,STM32). Настройка для разных контроллеров разная. Сейчас вроде определились с подходом - проходит испытание.