Форум РадиоКот https://radiokot.ru/forum/ |
|
Энкодер вместо кнопок https://radiokot.ru/forum/viewtopic.php?f=57&t=197015 |
Страница 1 из 3 |
Автор: | vlasovzloy [ Вс мар 02, 2025 17:05:31 ] |
Заголовок сообщения: | Re: Энкодер вместо кнопок |
Я брал поворотный переключатель, хотел встроить пока не встроил https://aliexpress.ru/item/32983137351.html Типа три кнопки вверх вниз и по центру как в энкодерах кнопка Добавлено after 33 seconds: Похоже на энкодер, но это не энкодер |
Автор: | shonty [ Вс мар 02, 2025 18:29:42 ] |
Заголовок сообщения: | Re: Энкодер вместо кнопок |
grot писал(а): хочу вот это (REX-C100) на картинке управлять энкодером велика вероятность, что ерунда получится ![]() В самом термоконтроллере опрос клавиатуры запрограммирован с определёнными задержками, может с фильтрацией дребезга и т.п.. И вы вместо кнопок подсунете ему эмулятор кнопок на энкодере.. Взаимодействовать то они так или иначе будут, но сомневаюсь, что такое управление тоже не будет "подбешивать")) |
Автор: | metan [ Вс мар 02, 2025 19:49:22 ] |
Заголовок сообщения: | Re: Энкодер вместо кнопок |
Код: //МОДУЛЬ ПОДДЕРЖКИ ЭНКОДЕРА (От Леонида Ивановича) //Для подавления дребезга используется анализ двух последовательных //состояний. Это позволяет обойтись без временных задержек. //Функция 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; //сохранение предыдущего состояния } } Все Благодарности Леониду Ивановичу ![]() |
Автор: | Starichok51 [ Вс мар 02, 2025 21:41:01 ] |
Заголовок сообщения: | Re: Энкодер вместо кнопок |
enum { State0, StateA, StateB, StateAB }; а где инициализация каждой величины в этом перечне? |
Автор: | metan [ Вс мар 02, 2025 22:12:50 ] |
Заголовок сообщения: | Re: Энкодер вместо кнопок |
Starichok51 писал(а): где инициализация тут ![]() ---------- cut here ---------- Идентификаторы в списке-перечисления описываются как константы и могут появиться там, где требуются (по контекс- ту) константы. Если не используется вторая форма перечисляе- мого (с равеством =), то величины констант начинаются с 0 и возрастают на 1 в соответствии с прочтением их описания сле- ва на право. Перечисляемое с присвоением = придает соответс- твующему идентификатору указанную величину; последующие идентификаторы продолжают прогрессию от приписанной величи- ны. |
Автор: | Котоник [ Вс мар 02, 2025 22:15:03 ] |
Заголовок сообщения: | Re: Энкодер вместо кнопок |
сильно подбешивает тыкать эти китайские кнопочки Многие изделия электронной промышленности имеют подобные кнопочки-малютки. Такие конструкции не только бесят и утомляют, но и нередко приводят к неверным нажатиям, приводящим к неожиданным результатам. Вот бы коллективным разумом выбрать оптимальное техническое решение для устранения этих недостатков ? И энкодер, это хорошая альтернатива. И, как всегда, компромисс между софтом и железом должен быть достигнут. Несомненно, благодарности Леониду Ивановичу за изящное кодирование будут многократными. А вот если на логике рассыпухе нечто подобное изобразить ? С устранением дребезга, с анализом направления вращения энкодера, с настраиваемой задержкой... ? Этакая платка с парой корпусов, и чтобы можно было подвесить параллельно контактам кнопок ? Наверное кто-то уже так делал ? |
Автор: | metan [ Вс мар 02, 2025 22:22:36 ] |
Заголовок сообщения: | Re: Энкодер вместо кнопок |
Котоник писал(а): Наверное кто-то уже так делал ? Наверное, кто-то леницца поискать в сети https://forum.cxem.net/index.php?/topic ... на-логике/ |
Автор: | veso74 [ Вс мар 02, 2025 23:03:05 ] |
Заголовок сообщения: | Re: Энкодер вместо кнопок |
Работает на CMOS. Но с МК "красивее". (И более компактное). ![]() |
Автор: | Котоник [ Вс мар 02, 2025 23:48:13 ] |
Заголовок сообщения: | Re: Энкодер вместо кнопок |
поискать в сети Классная микросхемка LS7082N1 ! Надо попробовать. Добавлено after 3 minutes 38 seconds: МК "красивее". (И более компактное). Да, МК, это весчь ! Но а п̶о̶г̶о̶в̶о̶р̶и̶т̶ь̶ попаять ? Да и размер самоделки доставляющей удовольствие, зачастую неважен. |
Автор: | smacorp [ Пн мар 03, 2025 01:41:08 ] |
Заголовок сообщения: | Re: Энкодер вместо кнопок |
. |
Автор: | grot [ Пн мар 03, 2025 02:56:10 ] |
Заголовок сообщения: | Re: Энкодер вместо кнопок |
Спасибо всем и Леониду Ивановичу! Буду пробовать. Как что получится, обязательно отпишусь. п.с. попаять конечно хорошо, но и попаять и попрограммировать еще лучше ) |
Автор: | Котоник [ Пн мар 03, 2025 03:13:10 ] |
Заголовок сообщения: | Re: Энкодер вместо кнопок |
. Можно вот так попробовать. Добавлено after 2 minutes 15 seconds: попаять и попрограммировать еще лучше Согласен. Поддерживаю. Стараюсь следовать этой стратегии. |
Автор: | grot [ Пн мар 03, 2025 03:16:12 ] |
Заголовок сообщения: | Re: Энкодер вместо кнопок |
Похоже на энкодер, но это не энкодер А вот за эту штуку большое спасибо, много где пригодится. Если с мк не получится, то это всяко лучше, чем выносить на панель отдельные кнопки. |
Автор: | Вячеслав М. [ Вс мар 09, 2025 08:53:10 ] |
Заголовок сообщения: | Re: Энкодер вместо кнопок |
На счёт антидребезга, посмотрите моё сообщение по ссылке: viewtopic.php?f=61&t=79801&start=460 |
Автор: | Demiurg [ Вс мар 09, 2025 19:52:05 ] | ||
Заголовок сообщения: | Re: Энкодер вместо кнопок | ||
Дарю идею. Этой идее много лет. Использую. Комп далеко. Попробую словами. D-триггер. КМОП. Положительная логика. То есть, активный уровень 1. D вход на + питания. C-вход типа вход S. R-вход как есть. Асинхронный. Сброс. Берется два триггера. К примеру, К561ТМ2. Такой триггер я назвал идеальным. Кто то возможно и вспомнит. Поднимал я эту тему. Идеальный триггер. Выход A энкодера на вход C первого триггера. Выход B энкодера на вход R первого триггера. Выход B энкодера на вход C второго триггера. Выход A энкодера на вход R второго триггера. По такой схеме исключается дребезг вообще. Особенно с энкодерами на контактах. Так как схема триггерная. Особенность есть. Учитываются только полные состояния энкодера. Без промежуточных. По поводу примера от Ридико Леонида Ивановича. Вы забыли схему привести. Источник. Предупреждаю сразу. Авторство этой схемы (антидребезг энкодера) за мной. Все моменты по этой схеме в личку.
|
Автор: | Вячеслав М. [ Вс мар 09, 2025 20:27:41 ] |
Заголовок сообщения: | Re: Энкодер вместо кнопок |
У всех этих энкодеров есть офигительная особенность - через не продолжительное время они начинают дребезжать, а эти все триггеры рассыпухой будут работать только когда победить эту болезнь, по этому начинайте с антидребезга. Эту болезнь можно увидеть практически везде, самые именитые фирмы не могут с ней справиться, и их аппаратура подглючивает везде и всюду по причине не решённой проблемы, но она решается легко, в той ссылке я подробно всё объяснил. |
Автор: | Demiurg [ Вс мар 09, 2025 20:29:40 ] |
Заголовок сообщения: | Re: Энкодер вместо кнопок |
Вячеслав М., я только что вам всем дал схему, которая решает проблему антидребезга энкодеров. Любых. Контакты, оптические. |
Автор: | Вячеслав М. [ Вс мар 09, 2025 20:33:05 ] |
Заголовок сообщения: | Re: Энкодер вместо кнопок |
Demiurg, Вы похоже в митсубиси Альфа программируете, тоже писал программы на него, уже десяток лет без сбоев работают контроллеры. Но тут то и прикол, вы ничего не дали, можете сами посмотреть, там только внешние контуры функциональных блоков от промышленного контроллера митсубиси Альфа. |
Автор: | Demiurg [ Вс мар 09, 2025 20:48:57 ] | ||
Заголовок сообщения: | Re: Энкодер вместо кнопок | ||
Mitsubishi Alpha один из инструментов. Для отработки некоторых логических схем. Ну и да, были и проекты на этих программируемых релюшках. Схема антидребезга энкодеров. Авторская.
|
Страница 1 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |