Разработки ecoins
-
- Полковник
- Сообщения: 4009
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 153 раза
Разработки ecoins
Вход EN теперь работает следующим образом: при EN=1->EN=0 сразу очищается поле. При EN=0->EN=1 через три такта (обращения к блоку) начинается штатный вывод: 1 раз выводится безусловно, далее периодически осуществляется вывод при изменении переменной.
-----
В действительности сделано много еще.
Работает вывод строковой переменной без буферирования этой переменной. Вывод осуществляется при изменении контрольной суммы строковой переменной.
Вывод текстов из PROGMEМ и вывод переменных (int,hex,float) реализован без использования строковых переменных - код стал компактнее, быстрее, меньше задействовано RAM.
Мерцание, которое вызывается входом blink=1 для всех блоков реализуется с одной периодичностью =400мс.
------
Сейчас идет тестирование и доработка. Это еще пару дней.
Если важно, то можно выложить текущую рабочую версию.
-----
В действительности сделано много еще.
Работает вывод строковой переменной без буферирования этой переменной. Вывод осуществляется при изменении контрольной суммы строковой переменной.
Вывод текстов из PROGMEМ и вывод переменных (int,hex,float) реализован без использования строковых переменных - код стал компактнее, быстрее, меньше задействовано RAM.
Мерцание, которое вызывается входом blink=1 для всех блоков реализуется с одной периодичностью =400мс.
------
Сейчас идет тестирование и доработка. Это еще пару дней.
Если важно, то можно выложить текущую рабочую версию.
-
- Полковник
- Сообщения: 4009
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 153 раза
Разработки ecoins
Новая версия библиотеки - в основном обновлено (переделан) LCD HD44780
Библиотека пользовательских блоков: Библиотеки для Arduino IDE: Большой пример на FLProg - пришлось упаковать: --------------------------------
Что нового.
1.Аккуратнее сделана работа c PROGMEM - это в библиотеке RT_HW_Boards.h. Ранее изредка возникали проблемы при одновременной работе этой библиотеки и библиотеки на LCD. Проблемы были именно на MEGA2560 - на Nano,DUE,ESP,STM32 все было нормально. Это проблема на просторах интернета всплывала, много времени пришлось потратить - сейчас должно работать.
В библиотеке дисплея RT_HW_LCD_HD44780 полностью отказались от PROGMEM - не нашел пока способа косвенной адресации - для ESP8266 библиотека для работы с PROGMEM сделана иначе, "костыли" вставлять не решился, пришлось много чего переработать. А жаль. На всех контроллерах кроме ESP все работало и удалось избавиться от работы со String (много места отнимает). Пришлось искать компромисс.
2.Вывод численных переменных в LCD. Перед каждой переменной можно добавить заголовок, в конце суффикс (один символ). Расширенные блоки имеют вход "blink" - мерцание и вход EN - блокировка. Когда EN 1->0 поле очищается.
2.Вывод текстовых,булевых и символьных переменных в расширенных блоках LCD также предусматривает входы "blink" и EN.
--------
В тестовом примере на MEGA2560 работают:
1. На шине i2c два LCD HD44780 (16x2 и 20x4) на которых отображается динамически меняющиеся данные.
2. На шине i2c два 16-разрядных регистра MCP23017 c динамически меняющиеся данные.
3. На шине SPI сдвиговый регистр 74HC595 c динамически меняющиеся данные.
4. На шине SPI еще один LCD HD44780 16X2 c динамически меняющиеся данные. Это самый быстрый способ работы с LCD.
5. Через 6 пинов напрямую подключен еще один LCD. Всего в примере 4 дисплея, возможна одновременная работа до 15 дисплеев.
6. Еще работами с пинами...
7. Еще работа с консолью - очень удобный инструмент для отладки обладающий существенно большими возможностями чем блок UART в FLProg.
8. и т.п.
------------ ---------
И ничего не тормозит и можно добавлять много плат с задачами.
-------
Проект грузится в ESP8266,ESP32,STM32F103, Arduino DUE, Mega2560.
Если отключить часть плат для экономии памяти грузится и в Nano.
При этом проект переделывать не надо и все работает, тип контроллера определяется при загрузке в Arduino IDE.
Библиотека пользовательских блоков: Библиотеки для Arduino IDE: Большой пример на FLProg - пришлось упаковать: --------------------------------
Что нового.
1.Аккуратнее сделана работа c PROGMEM - это в библиотеке RT_HW_Boards.h. Ранее изредка возникали проблемы при одновременной работе этой библиотеки и библиотеки на LCD. Проблемы были именно на MEGA2560 - на Nano,DUE,ESP,STM32 все было нормально. Это проблема на просторах интернета всплывала, много времени пришлось потратить - сейчас должно работать.
В библиотеке дисплея RT_HW_LCD_HD44780 полностью отказались от PROGMEM - не нашел пока способа косвенной адресации - для ESP8266 библиотека для работы с PROGMEM сделана иначе, "костыли" вставлять не решился, пришлось много чего переработать. А жаль. На всех контроллерах кроме ESP все работало и удалось избавиться от работы со String (много места отнимает). Пришлось искать компромисс.
2.Вывод численных переменных в LCD. Перед каждой переменной можно добавить заголовок, в конце суффикс (один символ). Расширенные блоки имеют вход "blink" - мерцание и вход EN - блокировка. Когда EN 1->0 поле очищается.
2.Вывод текстовых,булевых и символьных переменных в расширенных блоках LCD также предусматривает входы "blink" и EN.
--------
В тестовом примере на MEGA2560 работают:
1. На шине i2c два LCD HD44780 (16x2 и 20x4) на которых отображается динамически меняющиеся данные.
2. На шине i2c два 16-разрядных регистра MCP23017 c динамически меняющиеся данные.
3. На шине SPI сдвиговый регистр 74HC595 c динамически меняющиеся данные.
4. На шине SPI еще один LCD HD44780 16X2 c динамически меняющиеся данные. Это самый быстрый способ работы с LCD.
5. Через 6 пинов напрямую подключен еще один LCD. Всего в примере 4 дисплея, возможна одновременная работа до 15 дисплеев.
6. Еще работами с пинами...
7. Еще работа с консолью - очень удобный инструмент для отладки обладающий существенно большими возможностями чем блок UART в FLProg.
8. и т.п.
------------ ---------
И ничего не тормозит и можно добавлять много плат с задачами.
-------
Проект грузится в ESP8266,ESP32,STM32F103, Arduino DUE, Mega2560.
Если отключить часть плат для экономии памяти грузится и в Nano.
При этом проект переделывать не надо и все работает, тип контроллера определяется при загрузке в Arduino IDE.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- bichek
- Рядовой
- Сообщения: 15
- Зарегистрирован: 11 май 2020, 13:12
- Откуда: Семикаракорск Ростовской обл.
- Имя: Александр
-
- Полковник
- Сообщения: 4009
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 153 раза
Разработки ecoins
viewtopic.php?t=5426#p72349
В 1-ом посте - описание блоков в целом остались прежними.
Со временем руководства будут дополняться, исправляться, улучшаться...
В 1-ом посте - описание блоков в целом остались прежними.
Со временем руководства будут дополняться, исправляться, улучшаться...
Разработки ecoins
[ref]ecoins[/ref], Доброго здоровья! В 701й версии тестили библиотеки? Чет ругается на неправильные в папке 60.
Электронщик как врач, ему нужно постоянно учиться чтобы соответствовать времени.
-
- Полковник
- Сообщения: 4009
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 153 раза
Разработки ecoins
Какой у Вас контроллер и не понял что-такое папка 60?olddolin писал(а): 19 май 2020, 20:22 ecoins, Доброго здоровья! В 701й версии тестили библиотеки? Чет ругается на неправильные в папке 60.
Неплохо бы файл прислать, которым тестируется.
Если контроллер Nano, то там всплыли нюансы и они сейчас поправляются.
Разработки ecoins
Файл ваш тестовый, к сожалению я не дома, по памяти пишу. У вас пвпки библиотек под номерами RT_10 и прочие, есть и с цифрой 60
Я не заливаю в контроллер, просто компилирую.
Я не заливаю в контроллер, просто компилирую.
Электронщик как врач, ему нужно постоянно учиться чтобы соответствовать времени.
-
- Полковник
- Сообщения: 4009
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 153 раза
Разработки ecoins
У Вас наверное контроллер Nano, там действительно была внесена неточность.
Прикладываю исправленную библиотеку. Также прикладываю тестовый пример для Arduino Nano и полный -----
К большому сожалению так до конца и не удалось решить полностью проблему PROGMEM для Mega2560.
Предполагаю, что проблема лежит в области компилятора C++ - для ESP,DUE,STM32 в Arduino IDE используется другая версия компилятора.
На примерах это проявляется в следующем - если загрузить усеченный пример в MEGA2560 (тот что для Nano) скетч грузится, но MEGA2560 встает в режим перезагрузки - такое обычно бывает из-за ошибки адресации к памяти. Другой пример грузится и работает.
Проблема не совсем связано с размером скетча - может повлиять изменение порядка размещения плат. В большинстве случаев работает, но иногда начинаются проблемы.
PROGMEM используется в библиотеке RT_HW_BOARDS.h. Эта библиотека сейчас используется только в блоках настройки параметров и работы с пинами. Если эти пользовательские блоки не использовать, проблем не должно быть вообще.
Проблема системная и пока мы размышляем над её преодолением.
Если у кого-то есть подсказки, помогите!
-------
Успехов.
Прикладываю исправленную библиотеку. Также прикладываю тестовый пример для Arduino Nano и полный -----
К большому сожалению так до конца и не удалось решить полностью проблему PROGMEM для Mega2560.
Предполагаю, что проблема лежит в области компилятора C++ - для ESP,DUE,STM32 в Arduino IDE используется другая версия компилятора.
На примерах это проявляется в следующем - если загрузить усеченный пример в MEGA2560 (тот что для Nano) скетч грузится, но MEGA2560 встает в режим перезагрузки - такое обычно бывает из-за ошибки адресации к памяти. Другой пример грузится и работает.
Проблема не совсем связано с размером скетча - может повлиять изменение порядка размещения плат. В большинстве случаев работает, но иногда начинаются проблемы.
PROGMEM используется в библиотеке RT_HW_BOARDS.h. Эта библиотека сейчас используется только в блоках настройки параметров и работы с пинами. Если эти пользовательские блоки не использовать, проблем не должно быть вообще.
Проблема системная и пока мы размышляем над её преодолением.
Если у кого-то есть подсказки, помогите!
-------
Успехов.
Разработки ecoins
А куда вы приложили исправления, что-то не видно файлов?
контроллер я не менял, мега у вас в тестовом проекте.
Прилагаю лог. Компьютер с виндой 10, версия фл 701 портабле единственная на компе.
контроллер я не менял, мега у вас в тестовом проекте.
Прилагаю лог. Компьютер с виндой 10, версия фл 701 портабле единственная на компе.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Электронщик как врач, ему нужно постоянно учиться чтобы соответствовать времени.
-
- Полковник
- Сообщения: 4009
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 153 раза
Разработки ecoins
Прикрепляю: ----
Не совсем понял, почему не прикрепились файлы прошлый раз.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Полковник
- Сообщения: 4009
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 153 раза
Разработки ecoins
Проверил в версии FLPROG 7.01 portable 64, windows 10.olddolin писал(а): 20 май 2020, 10:50R
Контроллер я не менял, мега у вас в тестовом проекте.
Прилагаю лог.
Документ Microsoft Office Word.docx
(10.64 КБ) 2 скачивания
Компьютер с виндой 10, версия фл 701 портабле единственная на компе.
По логу у Вас FLProg возможно стоит старая библиотека пользовательских блоков и потому в блоке вывода String не совпадает порядок переменных.
Библиотеку прикрепил.
------
Грузил в Nano (отдельный проект - прикреплен), MEGA2560,DUE,ESP8266,ESP32,STM32F103RE (расширенный проект без отключения части плат - прикреплен).
Разработки ecoins
Пошло дело, спасибо! Будем изучать
Электронщик как врач, ему нужно постоянно учиться чтобы соответствовать времени.
-
- Полковник
- Сообщения: 4009
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 153 раза
Разработки ecoins
Ситуация на заметку: если кому-нибудь потребуется использовать выходы DAC на контроллере Arduino Due!
Используйте только DAC1 (pin67).
Реализация ЦАП (DAC) весьма не тривиальна и при работе с DAC0 малых величинах (<100) контроллер не просто зависает, но и портит скетч - приходиться его перепрошивать.
Сейчас мы используем только DAC1 (пин 67) - пока проблем не было. Проверяли и на 8-ми и на 12 разрядах разрешения.
Здесь https://forum.arduino.cc/index.php/topi ... msg1134372 пользователи делятся с аналогичными проблемами, но к выводам приходят не верным.
По моим исследованиям (это уже 3-й заход на проблему за последний год) проблемы лежат в реализации кода в библиотеке Arduino IDE.
----------
Используйте только DAC1 (pin67).
Реализация ЦАП (DAC) весьма не тривиальна и при работе с DAC0 малых величинах (<100) контроллер не просто зависает, но и портит скетч - приходиться его перепрошивать.
Сейчас мы используем только DAC1 (пин 67) - пока проблем не было. Проверяли и на 8-ми и на 12 разрядах разрешения.
Здесь https://forum.arduino.cc/index.php/topi ... msg1134372 пользователи делятся с аналогичными проблемами, но к выводам приходят не верным.
По моим исследованиям (это уже 3-й заход на проблему за последний год) проблемы лежат в реализации кода в библиотеке Arduino IDE.
----------
Разработки ecoins
Здравствуйте можете обьяснить зачем такая заморочка с входом EN ? Нельзя ли сделать привычней?
Отправлено спустя 6 минут 43 секунды:
Не получается построить многоуровневое меню с штатном блоком меню
Отправлено спустя 2 минуты 37 секунд:
Нельзя ли придерживаться стандарту.
Отправлено спустя 2 минуты 48 секунд:
Простой заменой штатного блока lcd на ваш не получается
Отправлено спустя 36 минут 5 секунд:
И зачем блоки вывода строки без входа EN для чего ? Кроме демонстрации на что ещё годится?
Отправлено спустя 6 минут 43 секунды:
Не получается построить многоуровневое меню с штатном блоком меню
Отправлено спустя 2 минуты 37 секунд:
Нельзя ли придерживаться стандарту.
Отправлено спустя 2 минуты 48 секунд:
Простой заменой штатного блока lcd на ваш не получается
Отправлено спустя 36 минут 5 секунд:
И зачем блоки вывода строки без входа EN для чего ? Кроме демонстрации на что ещё годится?
Разработки ecoins
Можно ли сделать так чтобы использовать вход en по прямому назначению ? Если нет назовите его по другому on/off start/stop . И пожалуйста не забудьте написать описания в параметрах блока .Если конечно вы его не делали для личного пользования
Отправлено спустя 12 минут 10 секунд:
Отправлено спустя 14 минут 48 секунд:
Ещё в настройках блока есть пункт про какой то период в тиках если не ошибаюсь. Что за период ? Что за тики и как главное высчитать?
Отправлено спустя 9 минут :
Вход blynk тоже сомнительный функционал по моему . Ну может в некоторых местах можно и поморгать, чисто ради косметики . В острой необходимости можно и штатными средствами реализовать,если конечно вход еn будет правильно работать
Отправлено спустя 17 минут 31 секунду:
Извините конечно я уважаю ваш труд . Я хочу пользоваться вашими блоками , жду новые релизы .Но что-то не получается.Мало информативность отталкивает наверное не только меня . Конечно у вас специфический склад ума для вас все просто и ясно , для рядового пользователя florog совсем не ясно
Отправлено спустя 12 минут 34 секунды:
Например собираюсь сделать универсальный контроллер, как мне сделать многоуровневый меню с вашим блоком lcd ? Lcd собираюсь использовать один?
Отправлено спустя 12 минут 10 секунд:
Получается урезанием функционала увеличиваем скорость? Так я понял, берём штук 15 lcd1602 и леплю меню из блоков вывода строки без входа en . Для каждого пункта меню свой lcd1602 , зато на arduino нано и без тормозов да???av писал(а): 22 май 2020, 22:59 [ref]Avazbek[/ref], это плата за увеличение скорости работы дисплея и производительности микроконтроллера. Как говорится за все надо платить![]()
Отправлено спустя 14 минут 48 секунд:
Ещё в настройках блока есть пункт про какой то период в тиках если не ошибаюсь. Что за период ? Что за тики и как главное высчитать?
Отправлено спустя 9 минут :
Вход blynk тоже сомнительный функционал по моему . Ну может в некоторых местах можно и поморгать, чисто ради косметики . В острой необходимости можно и штатными средствами реализовать,если конечно вход еn будет правильно работать
Отправлено спустя 17 минут 31 секунду:
Извините конечно я уважаю ваш труд . Я хочу пользоваться вашими блоками , жду новые релизы .Но что-то не получается.Мало информативность отталкивает наверное не только меня . Конечно у вас специфический склад ума для вас все просто и ясно , для рядового пользователя florog совсем не ясно
Отправлено спустя 12 минут 34 секунды:
Например собираюсь сделать универсальный контроллер, как мне сделать многоуровневый меню с вашим блоком lcd ? Lcd собираюсь использовать один?
Разработки ecoins
Например такой
https://alexgyver.ru/gyvercontrol/
Отправлено спустя 4 минуты 45 секунд:
https://alexgyver.ru/gyvercontrol/
Отправлено спустя 4 минуты 45 секунд:
штатные блоки устраивают , всё делаю на них . Но я ждал от команды ecoins нечто совершенноеav писал(а): 23 май 2020, 00:15 [ref]Avazbek[/ref], а чем вас штатные блоки не устраивают ? Сам делал множество меню на штатных блоках с энкодером на Ардуино нано и глюков не наблюдалось. Просто нужно правильно распределять блоки по платам и использовать выполнение по условию.
-
- Полковник
- Сообщения: 4009
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 153 раза
Разработки ecoins
Блок EN отключает блок, при этом очищает ранее записанное поле.Avazbek писал(а): 22 май 2020, 22:55 Здравствуйте можете обьяснить зачем такая заморочка с входом EN ? Нельзя ли сделать привычней?
Это сделано по рекомендации пользователя memberlist.php?mode=viewprofile&u=5742 Dryundel.
Если Вы уточните содержание стандарта, то возможно мы что-то поправим.
О стандартной библиотеке LCD (возможно стандарты вытекают из неё) - она очень древняя, скорее это больше демонстрация возможности LCD, работает только со строковыми переменными, а в блок стандартный блок FLProg является источников "тормозов" проекта - об этом уже много раз писалось.
Во многих проектах требуется простое отображение данных на Lcd и блоки без дополнительных входов EN и blink использовать удобнее и быстрее.Avazbek писал(а): 22 май 2020, 22:55 И зачем блоки вывода строки без входа EN для чего ? Кроме демонстрации на что ещё годится?
Такие блоки предпочитают дети в нашей Академии и разработчики проектов.
В последнем случае иногда даже подключается отдельный Lcd (благо библиотека поддерживает одновременную работу 15 дисплеев) на которые выводятся отладочные данные. Особенно удобно наблюдать за булевыми переменными - минимальная скорость обновления 50мс, но такую скорость уже глаз не замечает, обычно устанавливается период обновления от 150 мс и выше.
-
- Полковник
- Сообщения: 4009
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 153 раза
Разработки ecoins
Да, со временем, после отработки новой версии (пока есть проблемы и с совместимостью, и с одновременной работой старой и новой версии) блоки будут сделаны новые.av писал(а): 23 май 2020, 00:27 Возможно команда сделает более универсальные блоки на новой версии редактора ПБ.
Однако не вполне ясно, что имеется под "универсальными блоками"?
Стандартные блоки работают со строковыми переменными - такой блок lcd.String предусмотрен и работает. Работать со строками не самое верное решение (много памяти и много времени отнимают), но он по смыслу должен полностью заменять стандартный блок.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя