Страница 3 из 3
Re: как заменить кнопки на энкодер?
Добавлено: Чт дек 24, 2015 18:06:27
poliak-man
Сегодня платка пришла, и как раз с кнопками, а хочется энкодер. Пойду пока собирать на проводах. Только у меня не громкость, а регулятор напряжения в бп.
Re: как заменить кнопки на энкодер?
Добавлено: Пт мар 25, 2016 10:09:35
postal2201
Друзья, помогите поправить код для замены 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;
}
Re: как заменить кнопки на энкодер?
Добавлено: Чт авг 04, 2016 18:37:00
Oberstserj
Тема, конечно, умерла, но вдруг кому понадобится.
Топикстартер хотел заменить кнопки "больше"/"меньше" энкодером. Очень удивился, что у такой, казалось бы, примитивной задачи не нашлось решения НЕ на основе МК. Почему-то начали придумывать схемы с триггерами, генераторами стробсигнала...наверное я невнимательно читал, но так и не понял почему. А тем временем, именно для решения такой же задачи у меня уже седьмой год работает простенькая схемка на основе всего навсего одной попсовой 7400. Она же 555ЛА3. По началу боялся проблем с дребезгом, но по сей день полет нормальный и проблем нет. Хотя, справедливости ради, скажу, что повторял схему с одним энкодером, который уж очень дребезжал и ни о какой стабильности речи не шло, пока не заменил его на другой. Принцип работы описывать наверное нет смысла, все предельно просто. Вместо первой кнопки вешаем терминал А энкодера, вместо второй - В. С на землю. Выходы 8 и 11 выдают соответственно сигнал низкого уровня в зависимости от направления вращения энкодера либо на одной, либо на другой ножке (то, что и нужно). Энкодер самый обычный, квадратурный со сдвигом 90 градусов.
Срабатывает схема четко, никакой грязи на втором выходе при активном первом (и наоборот) не наблюдается, как в одной из приведенных выше схем.

Re: как заменить кнопки на энкодер?
Добавлено: Ср фев 15, 2017 14:18:59
Masterr
Сделал так. Энкодер применен от компьютерной мыши. При вращении в одну сторону на одном выходе цикл 1001, на другом цикл 1100 соответственно. При обратном вращении циклы меняются местами. Цель была получить при вращении в одну сторону сигнал на одном выходе 1010, на другом -1. При вращении в обратную сторону - смену сигналов на выходе. Есть недостаток у схемы - помехи на неактивном выходе во время срабатывания активного. Но в целом она работает и уже проверена. Если кто подскажет как ее можно усовершенствовать буду рад.
https://yadi.sk/d/gJqjwra83E7Whs
Re: как заменить кнопки на энкодер?
Добавлено: Ср фев 15, 2017 17:52:03
Serj66610
параллельно клавишам-RC цепочка из конденсатора на 470 пик и резистора на 5 МОм.
Re: как заменить кнопки на энкодер?
Добавлено: Чт фев 16, 2017 05:52:57
Masterr
Serj66610, спасибо. Я так понял это от дребезжания контактов. Надеюсь поможет. Однако при эмуляции в мультисиме 10 версии, осциллограф выдает следующие импульсы на неактивном выходе (см. картинку).
Возможно это из-за паразитной емкости транзистора или логического элемента или прога гонит, даже не знаю...

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

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

Re: как заменить кнопки на энкодер?
Добавлено: Чт мар 30, 2017 02:55:03
dennko
Здравствуйте, присоединяюсь к просьбе.
Re: как заменить кнопки на энкодер?
Добавлено: Чт мар 30, 2017 09:13:39
Oberstserj
Здравствуйте, присоединяюсь к просьбе.
Не хочу показаться грубым, но, ребят, может вы сначала с основами разберетесь, паять научитесь, разберетесь с тем как работает логика, научитесь платы делать...
Вы серьезно считаете, что вас на словах можно всему этому научить? Хотите без знаний и опыта сразу взять и собрать работающее устройство? Серьезно?
Или я чего-то не понимаю? Что скрывается за вашей просьбой помочь собрать? По шагам учить основам? Так дуйте в обучалку и нарабатывайте опыт, пока не осознаете, что готовы самостоятельно и с пониманием собирать подобные вещи. Что вы в тематическую ветку-то лезете?
Re: как заменить кнопки на энкодер?
Добавлено: Чт мар 30, 2017 14:28:37
akl
Oberstserj писал(а):...Так дуйте в обучалку и нарабатывайте опыт, пока не осознаете, что готовы самостоятельно и с пониманием собирать подобные вещи. Что вы в тематическую ветку-то лезете?
Вроде и так в обучалке задают вопросы.

Или есть ещё какая-то? Кстати, вышеприведенная Вами схема (в том виде как нарисована) энкодер не обрабатывает.
Для сравнения посмотрите
Re: как заменить кнопки на энкодер?
Добавлено: Чт мар 30, 2017 14:41:23
acckyiboxxx
http://radiokot.ru/forum/viewtopic.php?f=61&t=115308 , читайте, разберетесь как работает - поймете как использовать для ваших целей.
Re: как заменить кнопки на энкодер?
Добавлено: Ср июн 14, 2017 12:24:30
deftvk
Как раз о замене энкодером двух кнопок на логике, без МК. Вот здесь
http://codius.ru/articles/255 с 57 абзаца более чем подробно расписано что происходит. А в видео к статье наглядно продемострирован эффект.