Страница 1 из 4
Энкодер вместо кнопок
Добавлено: Вс мар 02, 2025 16:48:46
grot
Здравствуйте, уважавемые коты.
Вопрос такой - хочу перевести управление кнопками на энкодер. Уверен, тема не нова, но я смог найти только проект на пике. Пик мне программировать нечем, поэтому ищу вариант с атмегой. Представляется, что аттини 13 должно хватить с головой. Если вдруг такое уже существует на атмеге, и тыкать меня в ссылку не хотите, дайте вектор - попробую найти и разобраться.
Чтобы быть более конкретным, хочу вот это (REX-C100) на картинке управлять энкодером, у меня на нем термостолик ,и сильно подбешивает тыкать эти китайские кнопочки

Re: Энкодер вместо кнопок
Добавлено: Вс мар 02, 2025 17:05:31
vlasovzloy
Я брал поворотный переключатель, хотел встроить пока не встроил
https://aliexpress.ru/item/32983137351.html
Типа три кнопки вверх вниз и по центру как в энкодерах кнопка
Добавлено after 33 seconds:
Похоже на энкодер, но это не энкодер
Re: Энкодер вместо кнопок
Добавлено: Вс мар 02, 2025 18:29:42
shonty
grot писал(а):хочу вот это (REX-C100) на картинке управлять энкодером
велика вероятность, что ерунда получится
В самом термоконтроллере опрос клавиатуры запрограммирован с определёнными задержками, может с фильтрацией дребезга и т.п.. И вы вместо кнопок подсунете ему эмулятор кнопок на энкодере..
Взаимодействовать то они так или иначе будут, но сомневаюсь, что такое управление тоже не будет "подбешивать"))
Re: Энкодер вместо кнопок
Добавлено: Вс мар 02, 2025 19:49:22
metan
Код: Выделить всё
//МОДУЛЬ ПОДДЕРЖКИ ЭНКОДЕРА (От Леонида Ивановича)
//Для подавления дребезга используется анализ двух последовательных
//состояний. Это позволяет обойтись без временных задержек.
//Функция EncoderInit() должна вызываться один раз в начале программы.
//Функция EncoderExe() должна вызываться в основном цикле.
//При повороте энкодера на шаг вправо или влево изменяется значение глобальной переменной EncoderValue.
//
//
//Глобалльные переменные
signed char EncoderValue = 0;
//Константы
#define EncoderDDR DDRC /*порт настройки*/
#define EncoderPORT PORTC /*порт управления*/
#define EncoderPIN PINC /*порт чтения*/
#define EncoderF1 (1<<3) /*пины чтения енкодера*/
#define EncoderF2 (1<<4) /*пины чтения енкодера*/
enum { State0, StateA, StateB, StateAB }; //состояния энкодера
//Переменные
static char EncPrev; //предыдущее состояние энкодера
static char EncPrevPrev; //пред-предыдущее состояние энкодера
//Инициализация энкодера
void EncoderInit(void)
{
EncoderDDR &= ~(EncoderF1 | EncoderF2); //настройка портов на ввод
EncoderPORT |= EncoderF1 | EncoderF2; //включение подтягивающих резисторов
EncPrev = State0; //инициализация предыдущего состояния
EncPrevPrev = State0; //инициализация пред-предыдущего состояния
}
//Обработка энкодера
void EncoderExe(void)
{
char EncCur = 0;
if(! (EncoderPIN & EncoderF1))
EncCur = StateA; //опрос фазы 1 энкодера
if(! (EncoderPIN & EncoderF2))
EncCur |= StateB; //опрос фазы 2 энкодера
if(EncCur != EncPrev) { //если состояние изменилось,
if(EncPrev == StateAB && EncCur != EncPrevPrev ){//если предыдущее состояние StateAB и текущее и пред-предыдущее не равны,
if(EncCur == StateB) //если текущее состояние StateB,
EncoderValue ++; //шаг вверх
else
EncoderValue --; //шаг вниз
}
EncPrevPrev = EncPrev; //сохранение пред-предыдущего состояния
EncPrev = EncCur; //сохранение предыдущего состояния
}
}
Все Благодарности Леониду Ивановичу

Re: Энкодер вместо кнопок
Добавлено: Вс мар 02, 2025 21:41:01
Starichok51
enum { State0, StateA, StateB, StateAB };
а где инициализация каждой величины в этом перечне?
Re: Энкодер вместо кнопок
Добавлено: Вс мар 02, 2025 22:12:50
metan
Starichok51 писал(а):где инициализация
тут

"Керниган, Ричи. Язык C.txt"
----------- cut here -----------------------------------------------------
Идентификаторы в списке-перечисления описываются как
константы и могут появиться там, где требуются (по контекс-
ту) константы. Если не используется вторая форма перечисляе-
мого (с равеством =), то величины констант начинаются с 0 и
возрастают на 1 в соответствии с прочтением их описания сле-
ва на право. Перечисляемое с присвоением = придает соответс-
твующему идентификатору указанную величину; последующие
идентификаторы продолжают прогрессию от приписанной величи-
ны.
Re: Энкодер вместо кнопок
Добавлено: Вс мар 02, 2025 22:15:03
Котоник
[uquote="grot",url="/forum/viewtopic.php?p=4688912#p4688912"]сильно подбешивает тыкать эти китайские кнопочки[/uquote]
Многие изделия электронной промышленности имеют подобные кнопочки-малютки.
Такие конструкции не только бесят и утомляют, но и нередко приводят к неверным нажатиям, приводящим к неожиданным результатам.
Вот бы коллективным разумом выбрать оптимальное техническое решение для устранения этих недостатков ?
И энкодер, это хорошая альтернатива. И, как всегда, компромисс между софтом и железом должен быть достигнут.
Несомненно, благодарности Леониду Ивановичу за изящное кодирование будут многократными.
А вот если на логике рассыпухе нечто подобное изобразить ? С устранением дребезга, с анализом направления вращения энкодера, с настраиваемой задержкой... ?
Этакая платка с парой корпусов, и чтобы можно было подвесить параллельно контактам кнопок ?
Наверное кто-то уже так делал ?
Re: Энкодер вместо кнопок
Добавлено: Вс мар 02, 2025 22:22:36
metan
Котоник писал(а):Наверное кто-то уже так делал ?
Наверное, кто-то леницца поискать в сети
https://forum.cxem.net/index.php?/topic ... на-логике/
Re: Энкодер вместо кнопок
Добавлено: Вс мар 02, 2025 23:03:05
veso74
Работает на CMOS. Но с МК "красивее". (И более компактное).

Re: Энкодер вместо кнопок
Добавлено: Вс мар 02, 2025 23:48:13
Котоник
[uquote="metan",url="/forum/viewtopic.php?p=4689081#p4689081"]поискать в сети[/uquote]
Классная микросхемка LS7082N1 !
Надо попробовать.
Добавлено after 3 minutes 38 seconds:
[uquote="veso74",url="/forum/viewtopic.php?p=4689097#p4689097"]МК "красивее". (И более компактное).[/uquote]
Да, МК, это весчь !
Но а п̶о̶г̶о̶в̶о̶р̶и̶т̶ь̶ попаять ?
Да и размер самоделки доставляющей удовольствие, зачастую неважен.
Re: Энкодер вместо кнопок
Добавлено: Пн мар 03, 2025 01:41:08
smacorp
.
Re: Энкодер вместо кнопок
Добавлено: Пн мар 03, 2025 02:56:10
grot
Спасибо всем и Леониду Ивановичу! Буду пробовать. Как что получится, обязательно отпишусь.
п.с. попаять конечно хорошо, но и попаять и попрограммировать еще лучше )
Re: Энкодер вместо кнопок
Добавлено: Пн мар 03, 2025 03:13:10
Котоник
[uquote="smacorp",url="/forum/viewtopic.php?p=4689134#p4689134"].[/uquote]
Можно
вот так попробовать.
Добавлено after 2 minutes 15 seconds:
[uquote="grot",url="/forum/viewtopic.php?p=4689139#p4689139"]попаять и попрограммировать еще лучше[/uquote]
Согласен. Поддерживаю. Стараюсь следовать этой стратегии.
Re: Энкодер вместо кнопок
Добавлено: Пн мар 03, 2025 03:16:12
grot
[uquote="vlasovzloy",url="/forum/viewtopic.php?p=4688921#p4688921"]Похоже на энкодер, но это не энкодер[/uquote]
А вот за эту штуку большое спасибо, много где пригодится. Если с мк не получится, то это всяко лучше, чем выносить на панель отдельные кнопки.
Re: Энкодер вместо кнопок
Добавлено: Вс мар 09, 2025 08:53:10
Вячеслав М.
На счёт антидребезга, посмотрите моё сообщение по ссылке:
https://radiokot.ru/forum/viewtopic.php ... &start=460
Re: Энкодер вместо кнопок
Добавлено: Вс мар 09, 2025 19:52:05
Demiurg
Дарю идею. Этой идее много лет. Использую. Комп далеко. Попробую словами. D-триггер. КМОП. Положительная логика. То есть, активный уровень 1. D вход на + питания. C-вход типа вход S. R-вход как есть. Асинхронный. Сброс. Берется два триггера. К примеру, К561ТМ2.
Такой триггер я назвал идеальным. Кто то возможно и вспомнит. Поднимал я эту тему. Идеальный триггер.
Выход A энкодера на вход C первого триггера. Выход B энкодера на вход R первого триггера.
Выход B энкодера на вход C второго триггера. Выход A энкодера на вход R второго триггера.
По такой схеме исключается дребезг вообще. Особенно с энкодерами на контактах. Так как схема триггерная.
Особенность есть. Учитываются только полные состояния энкодера. Без промежуточных.
По поводу примера от Ридико Леонида Ивановича. Вы забыли схему привести. Источник.
Предупреждаю сразу. Авторство этой схемы (антидребезг энкодера) за мной. Все моменты по этой схеме в личку.
Re: Энкодер вместо кнопок
Добавлено: Вс мар 09, 2025 20:27:41
Вячеслав М.
У всех этих энкодеров есть офигительная особенность - через не продолжительное время они начинают дребезжать, а эти все триггеры рассыпухой будут работать только когда победить эту болезнь, по этому начинайте с антидребезга. Эту болезнь можно увидеть практически везде, самые именитые фирмы не могут с ней справиться, и их аппаратура подглючивает везде и всюду по причине не решённой проблемы, но она решается легко, в той ссылке я подробно всё объяснил.
Re: Энкодер вместо кнопок
Добавлено: Вс мар 09, 2025 20:29:40
Demiurg
Вячеслав М., я только что вам всем дал схему, которая решает проблему антидребезга энкодеров. Любых. Контакты, оптические.
Re: Энкодер вместо кнопок
Добавлено: Вс мар 09, 2025 20:33:05
Вячеслав М.
Demiurg, Вы похоже в митсубиси Альфа программируете, тоже писал программы на него, уже десяток лет без сбоев работают контроллеры. Но тут то и прикол, вы ничего не дали, можете сами посмотреть, там только внешние контуры функциональных блоков от промышленного контроллера митсубиси Альфа.
Re: Энкодер вместо кнопок
Добавлено: Вс мар 09, 2025 20:48:57
Demiurg
Mitsubishi Alpha один из инструментов. Для отработки некоторых логических схем. Ну и да, были и проекты на этих программируемых релюшках.
Схема антидребезга энкодеров. Авторская.