Энкодер вместо кнопок

Обсуждаем контроллеры компании Atmel.
grot
Родился
Сообщения: 4
Зарегистрирован: Сб мар 11, 2017 16:21:27

Энкодер вместо кнопок

Сообщение grot »

Здравствуйте, уважавемые коты.

Вопрос такой - хочу перевести управление кнопками на энкодер. Уверен, тема не нова, но я смог найти только проект на пике. Пик мне программировать нечем, поэтому ищу вариант с атмегой. Представляется, что аттини 13 должно хватить с головой. Если вдруг такое уже существует на атмеге, и тыкать меня в ссылку не хотите, дайте вектор - попробую найти и разобраться.

Чтобы быть более конкретным, хочу вот это (REX-C100) на картинке управлять энкодером, у меня на нем термостолик ,и сильно подбешивает тыкать эти китайские кнопочки

Изображение
Аватара пользователя
vlasovzloy
Друг Кота
Сообщения: 20066
Зарегистрирован: Чт янв 26, 2012 16:44:29
Откуда: Таксимо

Re: Энкодер вместо кнопок

Сообщение vlasovzloy »

Я брал поворотный переключатель, хотел встроить пока не встроил
https://aliexpress.ru/item/32983137351.html
Типа три кнопки вверх вниз и по центру как в энкодерах кнопка

Добавлено after 33 seconds:
Похоже на энкодер, но это не энкодер
Мои поставщики запчастей с отличной репутацией
texnomag.ru
radioremont.com
pl-1.org
4ip.info
elitan.ru
Аватара пользователя
shonty
Мучитель микросхем
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Re: Энкодер вместо кнопок

Сообщение shonty »

grot писал(а):хочу вот это (REX-C100) на картинке управлять энкодером
велика вероятность, что ерунда получится :dont_know:
В самом термоконтроллере опрос клавиатуры запрограммирован с определёнными задержками, может с фильтрацией дребезга и т.п.. И вы вместо кнопок подсунете ему эмулятор кнопок на энкодере..
Взаимодействовать то они так или иначе будут, но сомневаюсь, что такое управление тоже не будет "подбешивать"))
metan
Вымогатель припоя
Сообщения: 593
Зарегистрирован: Ср янв 06, 2010 10:01:46

Re: Энкодер вместо кнопок

Сообщение 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;                   //сохранение предыдущего состояния
    }
} 
Все Благодарности Леониду Ивановичу :)
Аватара пользователя
Starichok51
Модератор
Сообщения: 19039
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Энкодер вместо кнопок

Сообщение Starichok51 »

enum { State0, StateA, StateB, StateAB };
а где инициализация каждой величины в этом перечне?
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
metan
Вымогатель припоя
Сообщения: 593
Зарегистрирован: Ср янв 06, 2010 10:01:46

Re: Энкодер вместо кнопок

Сообщение metan »

Starichok51 писал(а):где инициализация
тут :wink: "Керниган, Ричи. Язык C.txt"
----------- cut here -----------------------------------------------------
Идентификаторы в списке-перечисления описываются как
константы и могут появиться там, где требуются (по контекс-
ту) константы. Если не используется вторая форма перечисляе-
мого (с равеством =), то величины констант начинаются с 0 и
возрастают на 1 в соответствии с прочтением их описания сле-
ва на право. Перечисляемое с присвоением = придает соответс-
твующему идентификатору указанную величину; последующие
идентификаторы продолжают прогрессию от приписанной величи-
ны.
Аватара пользователя
Котоник
Родился
Сообщения: 16
Зарегистрирован: Вс июн 05, 2022 00:15:01

Re: Энкодер вместо кнопок

Сообщение Котоник »

[uquote="grot",url="/forum/viewtopic.php?p=4688912#p4688912"]сильно подбешивает тыкать эти китайские кнопочки[/uquote]

Многие изделия электронной промышленности имеют подобные кнопочки-малютки.
Такие конструкции не только бесят и утомляют, но и нередко приводят к неверным нажатиям, приводящим к неожиданным результатам.

Вот бы коллективным разумом выбрать оптимальное техническое решение для устранения этих недостатков ?

И энкодер, это хорошая альтернатива. И, как всегда, компромисс между софтом и железом должен быть достигнут.

Несомненно, благодарности Леониду Ивановичу за изящное кодирование будут многократными.

А вот если на логике рассыпухе нечто подобное изобразить ? С устранением дребезга, с анализом направления вращения энкодера, с настраиваемой задержкой... ?
Этакая платка с парой корпусов, и чтобы можно было подвесить параллельно контактам кнопок ?
Наверное кто-то уже так делал ?
metan
Вымогатель припоя
Сообщения: 593
Зарегистрирован: Ср янв 06, 2010 10:01:46

Re: Энкодер вместо кнопок

Сообщение metan »

Котоник писал(а):Наверное кто-то уже так делал ?
Наверное, кто-то леницца поискать в сети
https://forum.cxem.net/index.php?/topic ... на-логике/
veso74
Поставщик валерьянки для Кота
Сообщения: 1902
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: Энкодер вместо кнопок

Сообщение veso74 »

Работает на CMOS. Но с МК "красивее". (И более компактное).

Изображение
Аватара пользователя
Котоник
Родился
Сообщения: 16
Зарегистрирован: Вс июн 05, 2022 00:15:01

Re: Энкодер вместо кнопок

Сообщение Котоник »

[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]

Да, МК, это весчь !
Но а п̶о̶г̶о̶в̶о̶р̶и̶т̶ь̶ попаять ?
Да и размер самоделки доставляющей удовольствие, зачастую неважен.
Аватара пользователя
smacorp
Друг Кота
Сообщения: 3471
Зарегистрирован: Вт окт 22, 2013 04:37:23
Откуда: Казань

Re: Энкодер вместо кнопок

Сообщение smacorp »

.
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезист Ordyl Alpha 350
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльные маски XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com
grot
Родился
Сообщения: 4
Зарегистрирован: Сб мар 11, 2017 16:21:27

Re: Энкодер вместо кнопок

Сообщение grot »

Спасибо всем и Леониду Ивановичу! Буду пробовать. Как что получится, обязательно отпишусь.

п.с. попаять конечно хорошо, но и попаять и попрограммировать еще лучше )
Аватара пользователя
Котоник
Родился
Сообщения: 16
Зарегистрирован: Вс июн 05, 2022 00:15:01

Re: Энкодер вместо кнопок

Сообщение Котоник »

[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]
Согласен. Поддерживаю. Стараюсь следовать этой стратегии.
grot
Родился
Сообщения: 4
Зарегистрирован: Сб мар 11, 2017 16:21:27

Re: Энкодер вместо кнопок

Сообщение grot »

[uquote="vlasovzloy",url="/forum/viewtopic.php?p=4688921#p4688921"]Похоже на энкодер, но это не энкодер[/uquote]
А вот за эту штуку большое спасибо, много где пригодится. Если с мк не получится, то это всяко лучше, чем выносить на панель отдельные кнопки.
Вячеслав М.
Нашел транзистор. Понюхал.
Сообщения: 174
Зарегистрирован: Пн янв 13, 2025 15:24:02

Re: Энкодер вместо кнопок

Сообщение Вячеслав М. »

На счёт антидребезга, посмотрите моё сообщение по ссылке:
https://radiokot.ru/forum/viewtopic.php ... &start=460
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: Энкодер вместо кнопок

Сообщение Demiurg »

Дарю идею. Этой идее много лет. Использую. Комп далеко. Попробую словами. D-триггер. КМОП. Положительная логика. То есть, активный уровень 1. D вход на + питания. C-вход типа вход S. R-вход как есть. Асинхронный. Сброс. Берется два триггера. К примеру, К561ТМ2.

Такой триггер я назвал идеальным. Кто то возможно и вспомнит. Поднимал я эту тему. Идеальный триггер.

Выход A энкодера на вход C первого триггера. Выход B энкодера на вход R первого триггера.
Выход B энкодера на вход C второго триггера. Выход A энкодера на вход R второго триггера.

По такой схеме исключается дребезг вообще. Особенно с энкодерами на контактах. Так как схема триггерная.

Особенность есть. Учитываются только полные состояния энкодера. Без промежуточных.

По поводу примера от Ридико Леонида Ивановича. Вы забыли схему привести. Источник.

Предупреждаю сразу. Авторство этой схемы (антидребезг энкодера) за мной. Все моменты по этой схеме в личку.
Вложения
2025-03-09_23-57-31.png
(105.46 КБ) 533 скачивания
Вячеслав М.
Нашел транзистор. Понюхал.
Сообщения: 174
Зарегистрирован: Пн янв 13, 2025 15:24:02

Re: Энкодер вместо кнопок

Сообщение Вячеслав М. »

У всех этих энкодеров есть офигительная особенность - через не продолжительное время они начинают дребезжать, а эти все триггеры рассыпухой будут работать только когда победить эту болезнь, по этому начинайте с антидребезга. Эту болезнь можно увидеть практически везде, самые именитые фирмы не могут с ней справиться, и их аппаратура подглючивает везде и всюду по причине не решённой проблемы, но она решается легко, в той ссылке я подробно всё объяснил.
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: Энкодер вместо кнопок

Сообщение Demiurg »

Вячеслав М., я только что вам всем дал схему, которая решает проблему антидребезга энкодеров. Любых. Контакты, оптические.
Вячеслав М.
Нашел транзистор. Понюхал.
Сообщения: 174
Зарегистрирован: Пн янв 13, 2025 15:24:02

Re: Энкодер вместо кнопок

Сообщение Вячеслав М. »

Demiurg, Вы похоже в митсубиси Альфа программируете, тоже писал программы на него, уже десяток лет без сбоев работают контроллеры. Но тут то и прикол, вы ничего не дали, можете сами посмотреть, там только внешние контуры функциональных блоков от промышленного контроллера митсубиси Альфа.
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: Энкодер вместо кнопок

Сообщение Demiurg »

Mitsubishi Alpha один из инструментов. Для отработки некоторых логических схем. Ну и да, были и проекты на этих программируемых релюшках.

Схема антидребезга энкодеров. Авторская.
Вложения
2025-03-10_01-05-37.png
(127.77 КБ) 486 скачиваний
Последний раз редактировалось Demiurg Вс мар 09, 2025 21:08:13, всего редактировалось 1 раз.
Ответить

Вернуться в «AVR»