Страница 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 писал(а):...Так дуйте в обучалку и нарабатывайте опыт, пока не осознаете, что готовы самостоятельно и с пониманием собирать подобные вещи. Что вы в тематическую ветку-то лезете?
Вроде и так в обучалке задают вопросы. :) Или есть ещё какая-то? Кстати, вышеприведенная Вами схема (в том виде как нарисована) энкодер не обрабатывает.
Для сравнения посмотрите
ВАЛКОДЕР.PNG
(90.29 КБ) 2986 скачиваний

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 абзаца более чем подробно расписано что происходит. А в видео к статье наглядно продемострирован эффект.