Страница 1 из 2

Блок энкодер для меню

Добавлено: 02 сен 2019, 17:50
Dryundel
Энкодер для меню V1.0
Блок энкодера для одноуровневого меню
2019-09-02_100815.jpg
.
Энкодер_для_меню_V1.0_(CODE).ubi
.
Блок EncMenuV1.0 предназначен для управления стандартным блоком Меню с помощью энкодера.
Внимание! Блок поддерживает управление только одноуровневым меню.
Все выходы блока подключаются к соответствующим входам блока меню.

[spoiler=Подробное описание]
Функционал блока:

Первое одиночное нажатие на кнопку энкодера - Вход в меню (активируется выход EnOut )
Последующие одиночные нажатия кнопки - Переход между Скролом(выбором пункта меню) и установкой значения выбранного пункта.
Скрол и установка значения осуществляются поворотом ручки энкодера.
Двойное нажатие на кнопку - Переход к первому пункту главного меню (активируется выход Reset).
Удержание кнопки (длинное нажатие) - Выход из мени (деактивация выхода EnOut)
Авто-выход из меню - Выход из меню по истечении заданного временного промежутка бездействия (по умолчанию 60000 мс (60 сек))
Для активации Авто-выхода из меню необходимо установить True в соответствующем параметре пользователя (по умолчанию False - Авто-выход отключен).

В параметрах пользователя необходимо:
1. Указать 2 пина к которым подключены CLK и DT энкодера (по умолчанию 2, 3).
2. Установить значение (TicStep) соответствующее количеству тиков на один физический шаг энкодера (по умолчанию 1).
Пример: При использовании энкодера EC-11 ( KY-040) на один физический шаг энкодер выдает 2 или 4 импульса, поэтому надо поставить TicStep = 2 или 4.
Для определения количества тиков на один физический шаг можно воспользоваться блоком "Тестер для энкодера" EncTest
3. Установить (Timeout) - время в (мс) после которого нажатие на кнопку будет считаться длинным (по умолчанию 2000 мс (2 сек))
4. Установить (ClickTime) максимальное время задержки в (мс) между кликами это необходимо для отслеживания двойного клика (по умолчанию 300 мс)

Входы блока:
Key - вход для подключения кнопки или управляющего сигнала.

Есть три варианта подключения (из описания библиотеки):
1. Лучший результат - используются два пина поддерживающие прерывания.
2. Хорошая производительность - один из пинов поддерживает прерывания.
3. Низкая поизводительность - оба пина не поддерживают прерывания.

Ограничения:
1, Не рекомендуется использовать пины к которым подключена светодиодная индикация (в большинстве случаев Pin 13)!!!
2. Если одним энкодером задействованы два пина пина поддерживающие прерывание, то в проекте нельзя использовать более одного блока. Если хотя бы один из пинов к которому подключен энкодер не поддерживает прерывание, ограничение снимается.

При использовании длинных проводов между энкодером и платой на выходы CLK и DT можно поставить подтягивающий резистор 1К.
Для уменьшения дребезга контактов можно соединить выходы CLK и DT с GND конденсаторами в несколько пФ

Пины поддерживающие прерывания на различных платах Arduino:
UNO - Pin 2,3
LEONARDO - Pin 0,1,2,3
MEGA - Pin 2,3,18,19,20,21
DUE - все[/spoiler]

Пример использования блока:
Энкодер для меню V1_0.jpg
Другие блоки для энкодера:
Набор блоков ЭНКОДЕР
Тестер для энкодера

Блок энкодер для меню

Добавлено: 02 сен 2019, 18:08
Dryundel
Энкодер для меню V1.1(обновление)
2019-09-03_062520.jpg
В новой версии добавлена возможность добавления нескольких страниц начального (стартового) дисплея.
До входа в меню блок поддеживает несколько стартовых дисплеев (страниц) без возможности настройки параметров.
Количество стартовых дисплеев (страниц) Задается в параметрах пользователя.
Переход по страницам осуществляется поворотом ручки энкодера.
.
Энкодер_для_меню_V1.1_(CODE).ubi
.
[spoiler=Подробное описание]
Энкодер для меню V1.1

Блок EncMenuV1.1 предназначен для управления стандартным блоком Меню с помощью энкодера.
Внимание! Блок поддеривает управление только одноуровневым меню.
Все выходы блока, кроме StartD, подключаются к соответствующим входам блока меню.

Функционал блока:
До входа в меню блок поддеживает несколько стартовых дисплеев (страниц) без возможности настройки параметров.
Количество стартовых дисплеев (страниц) Задается в параметрах пользователя.
Переход по страницам осуществляется поворотом ручки энкодера.
Первое одиночное нажатие на кнопку энкодера - Вход в меню (активируется выход EnOut )
Последующие одиночные нажатия кнопки - Переход между Скролом(выбором пункта меню) и установкой значения выбранного пункта.
Скрол и установка значения осуществляются поворотом ручки энкодера.
Двойное нажатие на кнопку - Переход к первому пункту главного меню (активируется выход Reset).
Удержание кнопки (длинное нажатие) - Выход из меню (деактивация выхода EnOut) и переход на стартоввый дисплей (страницу) №1
Авто-выход из меню - Выход из меню по истечении заданного временного промежутка бездействия (по умолчанию 60000 мс (60 сек))
Для активации Авто-выхода из меню необходимо установить True в соответствующем параметре пользователя (по умолчанию False - Авто-выход отключен).

В параметрах пользователя необходимо:
1. Указать 2 пина к которым подключены CLK и DT энкодера (по умолчанию 2, 3).
2. Установить значение (TicStep) соответствующее количеству тиков на один физический шаг энкодера (по умолчанию 1).
Пример: При использовании энкодера EC-11 ( KY-040) на один физический шаг энкодер выдает 2 или 4 импульса, поэтому надо поставить TicStep = 2 или 4.
Для определения количества тиков на один физический шаг можно воспользоваться блоком "Тестер для энкодера" EncTest
3. Установить (Timeout) - время в (мс) после которого нажатие на кнопку будет считаться длинным (по умолчанию 2000 мс (2 сек))
4. Установить (ClickTime) максимальное время задержки в (мс) между кликами это необходимо для отслеживания двойного клика (по умолчанию 300 мс)

Входы блока:
Key - вход для подключения кнопки или управляющего сигнала.

Выходы блока (кроме выходов для блока меню):

StartD - При неактивном меню выводит номер активного стартового дисплея (страницы). При активном меню на данном выходе выводится "0"

Есть три варианта подключения (из описания библиотеки):
1. Лучший результат - используются два пина поддерживающие прерывания.
2. Хорошая производительность - один из пинов поддерживает прерывания.
3. Низкая поизводительность - оба пина не поддерживают прерывания.

Ограничения:
1, Не рекомендуется использовать пины к которым подключена светодиодная индикация (в большинстве случаев Pin 13)!!!
2. Если одним энкодером задействованы два пина пина поддерживающие прерывание, то в проекте нельзя использовать более одного блока. Если хотя бы один из пинов к которому подключен энкодер не поддерживает прерывание, ограничение снимается.

При использовании длинных проводов между энкодером и платой на выходы CLK и DT можно поставить подтягивающий резистор 1К.
Для уменьшения дребезга контактов можно соединить выходы CLK и DT с GND конденсаторами в несколько пФ

Пины поддерживающие прерывания на различных платах Arduino:
UNO - Pin 2,3
LEONARDO - Pin 0,1,2,3
MEGA - Pin 2,3,18,19,20,21
DUE - все

[/spoiler]

Пример использования:
Энкодер для меню V1_1.jpg

Блок энкодер для меню

Добавлено: 02 сен 2019, 22:48
Dryundel
Энкодер для меню V2.0 (Новый релиз)

С поддержкой многоуровневого меню!
.
2019-09-03_100245.jpg
.
Энкодер_для_меню_V2.0_(CODE).ubi
.
Блок EncMenuV2.0 предназначен для управления стандартным блоком Меню с помощью энкодера.
[spoiler=Подробное описание]Блок поддерживает управление многоуровневым меню!
Все выходы блока, кроме StartD, подключаются к соответствующим входам блока меню.
Входы блока AMM (активно главное меню) и AG (активен групповой пункт меню) требуют сигнала с соответствующих выходов блока меню (подключение через переменную)

Внимание! Для корректной работы блока подключение входов AMM и AG, а так же всех выходов к соответствующим входам/выходам блока меню обязательно!

Функционал блока:
До входа в меню блок поддерживает несколько стартовых дисплеев (страниц) без возможности настройки параметров.
Количество стартовых дисплеев (страниц) Задается в параметрах пользователя.
Переход по страницам осуществляется поворотом ручки энкодера.
Первое одиночное нажатие на кнопку энкодера - Вход в меню (активируется выход EnOut )
Последующие одиночные нажатия кнопки - Переход между Скролом(выбором пункта меню) и установкой значения выбранного пункта. При активном групповом пункте меню по одиночному клику осуществляется переход к дочерним пунктам меню.
Скрол и установка значения осуществляются поворотом ручки энкодера.
Двойное нажатие на кнопку - Переход к родительскому пункту меню. Если активно главное меню (при нахождении на любом из пунктов главного меню) по двойному клику осуществляется переход к первому пункту главного меню (активируется выход Reset).
Удержание кнопки (длинное нажатие) - Выход из меню (деактивация выхода EnOut) и переход на стартоввый дисплей (страницу) №1
Авто-выход из меню - Выход из меню по истечении заданного временного промежутка бездействия (по умолчанию 60000 мс (60 сек))
Авто-выход так же осуществляет переход на стартовый дисплей (страницу) №1
Для активации Авто-выхода из меню необходимо установить True в соответствующем параметре пользователя (по умолчанию False - Авто-выход отключен).

В параметрах пользователя необходимо:
1. Указать 2 пина к которым подключены CLK и DT энкодера (по умолчанию 2, 3).
2. Установить значение (TicStep) соответствующее количеству тиков на один физический шаг энкодера (по умолчанию 1).
Пример: При использовании энкодера EC-11 ( KY-040) на один физический шаг энкодер выдает 2 или 4 импульса, поэтому надо поставить TicStep = 2 или 4.
Для определения количества тиков на один физический шаг можно воспользоваться блоком "Тестер для энкодера" EncTest
3. Установить (Timeout) - время в (мс) после которого нажатие на кнопку будет считаться длинным (по умолчанию 2000 мс (2 сек))
4. Установить (ClickTime) максимальное время задержки в (мс) между кликами это необходимо для отслеживания двойного клика (по умолчанию 300 мс)

Входы блока (кроме входов для блока меню):
Key - вход для подключения кнопки или управляющего сигнала.

Выходы блока (кроме выходов для блока меню):
StartD - При неактивном меню выводит номер активного стартового дисплея (страницы). При активном меню на данном выходе выводится "0"

Есть три варианта подключения (из описания библиотеки):
1. Лучший результат - используются два пина поддерживающие прерывания.
2. Хорошая производительность - один из пинов поддерживает прерывания.
3. Низкая производительность - оба пина не поддерживают прерывания.

Ограничения:
1, Не рекомендуется использовать пины к которым подключена светодиодная индикация (в большинстве случаев Pin 13)!!!
2. Если одним энкодером задействованы два пина пина поддерживающие прерывание, то в проекте нельзя использовать более одного блока. Если хотя бы один из пинов к которому подключен энкодер не поддерживает прерывание, ограничение снимается.

При использовании длинных проводов между энкодером и платой на выходы CLK и DT можно поставить подтягивающий резистор 1К.
Для уменьшения дребезга контактов можно соединить выходы CLK и DT с GND конденсаторами в несколько пФ

Пины поддерживающие прерывания на различных платах Arduino:
UNO - Pin 2,3
LEONARDO - Pin 0,1,2,3
MEGA - Pin 2,3,18,19,20,21
DUE - все [/spoiler]
Энкодер для меню V2_0.jpg
Скачать

Блок энкодер для меню

Добавлено: 02 сен 2019, 22:49
Dryundel
Резерв2

Блок энкодер для меню

Добавлено: 03 сен 2019, 12:51
Dryundel
03.09.2019 обновление до версии V1.1

Блок энкодер для меню

Добавлено: 04 сен 2019, 14:26
Dryundel
Dryundel писал(а): 02 сен 2019, 22:48 Энкодер для меню V2.0 (Новый релиз)

С поддержкой многоуровневого меню!
(готовится)
.
Требуются бета-тестеры для тестирования нового блока Энкодер для меню V2.0 (с поддержкой многоуровневого меню)
Кому интересно пишите в личку.
(предложение закрыто)

Блок энкодер для меню

Добавлено: 04 сен 2019, 14:52
cmept-27

Блок энкодер для меню

Добавлено: 22 сен 2019, 20:24
uglerod
Dryundel, Прикупил блок, подскажите по библиотеке Encoder 1.4.1. Что то "слёту" не нашёл.Если не затруднит-подскажите где скачать. Спасибо.

Блок энкодер для меню

Добавлено: 22 сен 2019, 22:16
Dryundel
uglerod писал(а): 22 сен 2019, 20:24 Dryundel, Прикупил блок, подскажите по библиотеке Encoder 1.4.1. Что то "слёту" не нашёл.Если не затруднит-подскажите где скачать. Спасибо.
Библиотека к блоку привязана.
А вообще здесь
https://github.com/PaulStoffregen/Encoder

Блок энкодер для меню

Добавлено: 23 сен 2019, 07:05
Yurii85
Как насчет поддержки ESP8266 ?

Блок энкодер для меню

Добавлено: 23 сен 2019, 07:38
Dryundel
Yurii85 писал(а): 23 сен 2019, 07:05 Как насчет поддержки ESP8266 ?
Тестировалось на NodeMCU - работает.

Блок энкодер для меню

Добавлено: 23 сен 2019, 10:15
Dryundel
Добавлен новый блок
Энкодер для меню V2.0 - С поддержкой многоуровневого меню!
viewtopic.php?p=75572#p75572

Блок энкодер для меню

Добавлено: 25 сен 2019, 18:32
Yurii85
[ref]Dryundel[/ref], такой вопрос ваши новые блоки основаны все на тойже библиотеки encoder.h ?

Блок энкодер для меню

Добавлено: 25 сен 2019, 18:34
Dryundel
Yurii85 писал(а): 25 сен 2019, 18:32 [ref]Dryundel[/ref], такой вопрос ваши новые блоки основаны все на тойже библиотеки encoder.h ?
Да, именно так.

Блок энкодер для меню

Добавлено: 25 сен 2019, 18:41
Yurii85
то есть ранний блок энкодер импульсный V 1.0 должен работать с esp8266 ?

Блок энкодер для меню

Добавлено: 25 сен 2019, 18:46
Dryundel
Yurii85 писал(а): 25 сен 2019, 18:41 то есть ранний блок энкодер импульсный V 1.0 должен работать с esp8266 ?
В принципе должен.

Блок энкодер для меню

Добавлено: 25 сен 2019, 18:48
Yurii85
тогда прошу помощи
есп после добавления блока уходит в режим прошивки или как то так (шлет свои данные в ком порт)

Блок энкодер для меню

Добавлено: 25 сен 2019, 18:50
Dryundel
Энкодер импульсный V 1.1 надежнее.
Там добавлен алгоритм предотвращающий пропуск импульсов.

Блок энкодер для меню

Добавлено: 25 сен 2019, 18:53
Yurii85
ets Jan 8 2013,rst cause:2, boot mode:(3,6)



load 0x4010f000, len 1384, room 16

tail 8

chksum 0x2d

csum 0x2d

v8b899c12

~ld
вот что сыпет в ком порт

Отправлено спустя 1 минуту 31 секунду:
я понимаю но проблема не в пропусках а в конфликте библиотеки с чем то при компиляции

Блок энкодер для меню

Добавлено: 25 сен 2019, 19:00
pan
Самый лучший алгоритм это пара конденсаторов...