как заменить кнопки на энкодер?
- poliak-man
- Потрогал лапой паяльник
- Сообщения: 321
- Зарегистрирован: Пн ноя 19, 2012 12:13:02
- Откуда: Королёв
- Контактная информация:
Re: как заменить кнопки на энкодер?
Сегодня платка пришла, и как раз с кнопками, а хочется энкодер. Пойду пока собирать на проводах. Только у меня не громкость, а регулятор напряжения в бп.
Четырехканальный комбайнёр на букву Х.
- postal2201
- Нашел транзистор. Понюхал.
- Сообщения: 164
- Зарегистрирован: Чт янв 17, 2013 20:28:05
Re: как заменить кнопки на энкодер?
Друзья, помогите поправить код для замены 3х кнопок энкодером, сам в программировании пока не силен. В общем вот участок кода обрабатывающий кнопки:
PIND.4 - должен быть кнопкой энкодера, PIND.2 и PIND.3 вращение влево о вправо соответственно.
Нашел вот такой код обрабатывающий энкодер но совместить знаний не хватает
Спойлер
Код: Выделить всё
void getkey(void)
{
if(PIND.4 == 0)
{
REQUIRED_TEMP = d;
u = t_max;
if (PIND.2 == 0)
{
delay_ms(20);
if(PIND.2 ==0)
REQUIRED_TEMP++;
d = REQUIRED_TEMP;
}
if (PIND.3 == 0)
{delay_ms(20);
if(PIND.3 ==0)
REQUIRED_TEMP--;
d = REQUIRED_TEMP;
}
}
else
{
REQUIRED_TEMP = u;
d = t_min;
if (PIND.2 == 0)
{
delay_ms(20);
if(PIND.2 ==0)
REQUIRED_TEMP++ ;
u = REQUIRED_TEMP;
}
if (PIND.3 == 0)
{delay_ms(20);
if(PIND.3 ==0)
REQUIRED_TEMP-- ;
u = REQUIRED_TEMP;
}
}
return;
}
unsigned char fSelButton()
{
unsigned char selbut;
selbut=PIND;
selbut&=(0b00001100);
//цикл антидребезга контактов
while((PIND&0b00000000)==0b00000100 || (PIND&0b00000000)==0b00001000 || (PIND&0b00000000)==0b00010000 || (PIND&0b00000000)==0b00100000);
return selbut;
}PIND.4 - должен быть кнопкой энкодера, PIND.2 и PIND.3 вращение влево о вправо соответственно.
Нашел вот такой код обрабатывающий энкодер но совместить знаний не хватает
Спойлер
Код: Выделить всё
input = PINC & 0x03;
if(buf != input)
{
switch(buf)
{
case 0:
{
if(input == 2) data++;
if(input == 1) data--;
break;
}
case 1:
{
if(input == 0) data++;
if(input == 3) data--;
break;
}
case 2:
{
if(input == 3) data++;
if(input == 0) data--;
break;
}
case 3:
{
if(input == 1) data++;
if(input == 2) data--;
break;
}
}
buf = input;
} - Oberstserj
- Родился
- Сообщения: 2
- Зарегистрирован: Чт авг 04, 2016 17:24:36
- Откуда: Мюнхен (серьезно)
Re: как заменить кнопки на энкодер?
Тема, конечно, умерла, но вдруг кому понадобится.
Топикстартер хотел заменить кнопки "больше"/"меньше" энкодером. Очень удивился, что у такой, казалось бы, примитивной задачи не нашлось решения НЕ на основе МК. Почему-то начали придумывать схемы с триггерами, генераторами стробсигнала...наверное я невнимательно читал, но так и не понял почему. А тем временем, именно для решения такой же задачи у меня уже седьмой год работает простенькая схемка на основе всего навсего одной попсовой 7400. Она же 555ЛА3. По началу боялся проблем с дребезгом, но по сей день полет нормальный и проблем нет. Хотя, справедливости ради, скажу, что повторял схему с одним энкодером, который уж очень дребезжал и ни о какой стабильности речи не шло, пока не заменил его на другой. Принцип работы описывать наверное нет смысла, все предельно просто. Вместо первой кнопки вешаем терминал А энкодера, вместо второй - В. С на землю. Выходы 8 и 11 выдают соответственно сигнал низкого уровня в зависимости от направления вращения энкодера либо на одной, либо на другой ножке (то, что и нужно). Энкодер самый обычный, квадратурный со сдвигом 90 градусов.
Срабатывает схема четко, никакой грязи на втором выходе при активном первом (и наоборот) не наблюдается, как в одной из приведенных выше схем.

Топикстартер хотел заменить кнопки "больше"/"меньше" энкодером. Очень удивился, что у такой, казалось бы, примитивной задачи не нашлось решения НЕ на основе МК. Почему-то начали придумывать схемы с триггерами, генераторами стробсигнала...наверное я невнимательно читал, но так и не понял почему. А тем временем, именно для решения такой же задачи у меня уже седьмой год работает простенькая схемка на основе всего навсего одной попсовой 7400. Она же 555ЛА3. По началу боялся проблем с дребезгом, но по сей день полет нормальный и проблем нет. Хотя, справедливости ради, скажу, что повторял схему с одним энкодером, который уж очень дребезжал и ни о какой стабильности речи не шло, пока не заменил его на другой. Принцип работы описывать наверное нет смысла, все предельно просто. Вместо первой кнопки вешаем терминал А энкодера, вместо второй - В. С на землю. Выходы 8 и 11 выдают соответственно сигнал низкого уровня в зависимости от направления вращения энкодера либо на одной, либо на другой ножке (то, что и нужно). Энкодер самый обычный, квадратурный со сдвигом 90 градусов.
Срабатывает схема четко, никакой грязи на втором выходе при активном первом (и наоборот) не наблюдается, как в одной из приведенных выше схем.

Nulla poena sine lege
Re: как заменить кнопки на энкодер?
Сделал так. Энкодер применен от компьютерной мыши. При вращении в одну сторону на одном выходе цикл 1001, на другом цикл 1100 соответственно. При обратном вращении циклы меняются местами. Цель была получить при вращении в одну сторону сигнал на одном выходе 1010, на другом -1. При вращении в обратную сторону - смену сигналов на выходе. Есть недостаток у схемы - помехи на неактивном выходе во время срабатывания активного. Но в целом она работает и уже проверена. Если кто подскажет как ее можно усовершенствовать буду рад.

https://yadi.sk/d/gJqjwra83E7Whs
https://yadi.sk/d/gJqjwra83E7Whs
- Serj66610
- Поставщик валерьянки для Кота
- Сообщения: 1910
- Зарегистрирован: Ср июл 15, 2015 19:03:17
- Откуда: Могилев
Re: как заменить кнопки на энкодер?
параллельно клавишам-RC цепочка из конденсатора на 470 пик и резистора на 5 МОм.
Ом намо Бха га ва-тэ,Васу дэва -йа.
Re: как заменить кнопки на энкодер?
Serj66610, спасибо. Я так понял это от дребезжания контактов. Надеюсь поможет. Однако при эмуляции в мультисиме 10 версии, осциллограф выдает следующие импульсы на неактивном выходе (см. картинку).
Возможно это из-за паразитной емкости транзистора или логического элемента или прога гонит, даже не знаю...

Возможно это из-за паразитной емкости транзистора или логического элемента или прога гонит, даже не знаю...
Re: как заменить кнопки на энкодер?
Подскажите пожалуйста, для тупого, как вот это дело собрать.Oberstserj писал(а):Тема, конечно, умерла, но вдруг кому понадобится.
Топикстартер хотел заменить кнопки "больше"/"меньше" энкодером. Очень удивился, что у такой, казалось бы, примитивной задачи не нашлось решения НЕ на основе МК. Почему-то начали придумывать схемы с триггерами, генераторами стробсигнала...наверное я невнимательно читал, но так и не понял почему. А тем временем, именно для решения такой же задачи у меня уже седьмой год работает простенькая схемка на основе всего навсего одной попсовой 7400. Она же 555ЛА3. По началу боялся проблем с дребезгом, но по сей день полет нормальный и проблем нет. Хотя, справедливости ради, скажу, что повторял схему с одним энкодером, который уж очень дребезжал и ни о какой стабильности речи не шло, пока не заменил его на другой. Принцип работы описывать наверное нет смысла, все предельно просто. Вместо первой кнопки вешаем терминал А энкодера, вместо второй - В. С на землю. Выходы 8 и 11 выдают соответственно сигнал низкого уровня в зависимости от направления вращения энкодера либо на одной, либо на другой ножке (то, что и нужно). Энкодер самый обычный, квадратурный со сдвигом 90 градусов.
Срабатывает схема четко, никакой грязи на втором выходе при активном первом (и наоборот) не наблюдается, как в одной из приведенных выше схем.
Паял когда давно в детстве, но до такого не доходил.
Вот сейчас хочу заменить две кнопки энкодером, но далек от этого всего
Re: как заменить кнопки на энкодер?
Здравствуйте, присоединяюсь к просьбе.
- Oberstserj
- Родился
- Сообщения: 2
- Зарегистрирован: Чт авг 04, 2016 17:24:36
- Откуда: Мюнхен (серьезно)
Re: как заменить кнопки на энкодер?
Не хочу показаться грубым, но, ребят, может вы сначала с основами разберетесь, паять научитесь, разберетесь с тем как работает логика, научитесь платы делать...Здравствуйте, присоединяюсь к просьбе.
Вы серьезно считаете, что вас на словах можно всему этому научить? Хотите без знаний и опыта сразу взять и собрать работающее устройство? Серьезно?
Или я чего-то не понимаю? Что скрывается за вашей просьбой помочь собрать? По шагам учить основам? Так дуйте в обучалку и нарабатывайте опыт, пока не осознаете, что готовы самостоятельно и с пониманием собирать подобные вещи. Что вы в тематическую ветку-то лезете?
Nulla poena sine lege
Re: как заменить кнопки на энкодер?
Вроде и так в обучалке задают вопросы.Oberstserj писал(а):...Так дуйте в обучалку и нарабатывайте опыт, пока не осознаете, что готовы самостоятельно и с пониманием собирать подобные вещи. Что вы в тематическую ветку-то лезете?
Для сравнения посмотрите
Последний раз редактировалось akl Чт мар 30, 2017 14:43:51, всего редактировалось 1 раз.
- acckyiboxxx
- Нашел транзистор. Понюхал.
- Сообщения: 182
- Зарегистрирован: Ср янв 25, 2012 07:26:40
Re: как заменить кнопки на энкодер?
http://radiokot.ru/forum/viewtopic.php?f=61&t=115308 , читайте, разберетесь как работает - поймете как использовать для ваших целей.
Re: как заменить кнопки на энкодер?
Как раз о замене энкодером двух кнопок на логике, без МК. Вот здесь http://codius.ru/articles/255 с 57 абзаца более чем подробно расписано что происходит. А в видео к статье наглядно продемострирован эффект.