как заменить кнопки на энкодер?

Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
Аватара пользователя
poliak-man
Потрогал лапой паяльник
Сообщения: 321
Зарегистрирован: Пн ноя 19, 2012 12:13:02
Откуда: Королёв
Контактная информация:

Re: как заменить кнопки на энкодер?

Сообщение poliak-man »

Сегодня платка пришла, и как раз с кнопками, а хочется энкодер. Пойду пока собирать на проводах. Только у меня не громкость, а регулятор напряжения в бп.
Четырехканальный комбайнёр на букву Х.
Аватара пользователя
postal2201
Нашел транзистор. Понюхал.
Сообщения: 164
Зарегистрирован: Чт янв 17, 2013 20:28:05

Re: как заменить кнопки на энкодер?

Сообщение 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;
		} 
Аватара пользователя
Oberstserj
Родился
Сообщения: 2
Зарегистрирован: Чт авг 04, 2016 17:24:36
Откуда: Мюнхен (серьезно)

Re: как заменить кнопки на энкодер?

Сообщение Oberstserj »

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

Изображение
Nulla poena sine lege
Masterr
Родился
Сообщения: 5
Зарегистрирован: Чт фев 09, 2017 11:57:54

Re: как заменить кнопки на энкодер?

Сообщение Masterr »

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

Изображение
https://yadi.sk/d/gJqjwra83E7Whs
Аватара пользователя
Serj66610
Поставщик валерьянки для Кота
Сообщения: 1910
Зарегистрирован: Ср июл 15, 2015 19:03:17
Откуда: Могилев

Re: как заменить кнопки на энкодер?

Сообщение Serj66610 »

параллельно клавишам-RC цепочка из конденсатора на 470 пик и резистора на 5 МОм.
Ом намо Бха га ва-тэ,Васу дэва -йа.
Masterr
Родился
Сообщения: 5
Зарегистрирован: Чт фев 09, 2017 11:57:54

Re: как заменить кнопки на энкодер?

Сообщение Masterr »

Serj66610, спасибо. Я так понял это от дребезжания контактов. Надеюсь поможет. Однако при эмуляции в мультисиме 10 версии, осциллограф выдает следующие импульсы на неактивном выходе (см. картинку).
Возможно это из-за паразитной емкости транзистора или логического элемента или прога гонит, даже не знаю...

Изображение
starbart
Родился
Сообщения: 1
Зарегистрирован: Ср мар 22, 2017 06:19:32

Re: как заменить кнопки на энкодер?

Сообщение starbart »

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

Изображение
Подскажите пожалуйста, для тупого, как вот это дело собрать.
Паял когда давно в детстве, но до такого не доходил.
Вот сейчас хочу заменить две кнопки энкодером, но далек от этого всего :(
dennko
Родился
Сообщения: 1
Зарегистрирован: Пт фев 24, 2017 05:20:12

Re: как заменить кнопки на энкодер?

Сообщение dennko »

Здравствуйте, присоединяюсь к просьбе.
Аватара пользователя
Oberstserj
Родился
Сообщения: 2
Зарегистрирован: Чт авг 04, 2016 17:24:36
Откуда: Мюнхен (серьезно)

Re: как заменить кнопки на энкодер?

Сообщение Oberstserj »

Здравствуйте, присоединяюсь к просьбе.
Не хочу показаться грубым, но, ребят, может вы сначала с основами разберетесь, паять научитесь, разберетесь с тем как работает логика, научитесь платы делать...
Вы серьезно считаете, что вас на словах можно всему этому научить? Хотите без знаний и опыта сразу взять и собрать работающее устройство? Серьезно?
Или я чего-то не понимаю? Что скрывается за вашей просьбой помочь собрать? По шагам учить основам? Так дуйте в обучалку и нарабатывайте опыт, пока не осознаете, что готовы самостоятельно и с пониманием собирать подобные вещи. Что вы в тематическую ветку-то лезете?
Nulla poena sine lege
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: как заменить кнопки на энкодер?

Сообщение akl »

Oberstserj писал(а):...Так дуйте в обучалку и нарабатывайте опыт, пока не осознаете, что готовы самостоятельно и с пониманием собирать подобные вещи. Что вы в тематическую ветку-то лезете?
Вроде и так в обучалке задают вопросы. :) Или есть ещё какая-то? Кстати, вышеприведенная Вами схема (в том виде как нарисована) энкодер не обрабатывает.
Для сравнения посмотрите
ВАЛКОДЕР.PNG
(90.29 КБ) 2939 скачиваний
Последний раз редактировалось akl Чт мар 30, 2017 14:43:51, всего редактировалось 1 раз.
Аватара пользователя
acckyiboxxx
Нашел транзистор. Понюхал.
Сообщения: 182
Зарегистрирован: Ср янв 25, 2012 07:26:40

Re: как заменить кнопки на энкодер?

Сообщение acckyiboxxx »

http://radiokot.ru/forum/viewtopic.php?f=61&t=115308 , читайте, разберетесь как работает - поймете как использовать для ваших целей.
deftvk
Родился
Сообщения: 1
Зарегистрирован: Чт окт 20, 2016 22:25:54

Re: как заменить кнопки на энкодер?

Сообщение deftvk »

Как раз о замене энкодером двух кнопок на логике, без МК. Вот здесь http://codius.ru/articles/255 с 57 абзаца более чем подробно расписано что происходит. А в видео к статье наглядно продемострирован эффект.
Ответить

Вернуться в «Теория»