PCCar.ru - Ваш автомобильный компьютер

Вернуться   PCCar.ru - Ваш автомобильный компьютер > MP3Car ТехИнфа > Устройства ввода > Резистивные кнопки

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2015, 23:20   #11
<<МиТяЙ>>
Новый Пользователь
 
Регистрация: 24.12.2012
Возраст: 37
Город: Кстово
Регион: 52
Машина: Лада Калина
Сообщений: 25
<<МиТяЙ>> is on a distinguished road
По умолчанию

Код HTML:
int val; 
 int encoder0PinA = 3;
 int encoder0PinB = 4;
 int encoder0PinC = 5;
 int encoder0PinD = 6;
 int encoder0Pos = 0;
 int encoder0PinALast = LOW;
 int encoder0PinCLast = LOW;
 int n = LOW;
 int d = LOW;

 void setup() { 
   pinMode (encoder0PinA,INPUT);
   pinMode (encoder0PinB,INPUT);
   pinMode (encoder0PinC,INPUT);
   pinMode (encoder0PinD,INPUT);
   pinMode (8,INPUT_PULLUP);
   attachInterrupt(4, key_mute, FALLING); 
   Serial.begin (9600);
 } 
 
//  энкодер.1 - обработка звука
 void loop() { 
   n = digitalRead(encoder0PinA);
   d = digitalRead(encoder0PinC);
   
   if ((encoder0PinALast == LOW) && (n == HIGH)) {
     if (digitalRead(encoder0PinB) == LOW) {
       Remote.increase();  
delay(50);  
Remote.clear();
     } else {
        Remote.decrease();  
delay(50);  
Remote.clear();
     }
    } 
   encoder0PinALast = n;
 
//  энкодер.2 - обработка треков 
    
   if ((encoder0PinCLast == LOW) && (d == HIGH)) {
     if (digitalRead(encoder0PinD) == LOW) {
       Remote.next();  
delay(50);  
Remote.clear();
     } else {
        Remote.previous();  
delay(50);  
Remote.clear();
     }
    } 
   encoder0PinCLast = d;
}
    
//  энкодер.2 - обработка нажатия 

 void key_mute() {         
        Remote.mute();  
        delay(100);  
        Remote.clear();}
Подскажите вот такой код для обработки 2 энкодеров можно использовать.
<<МиТяЙ>> вне форума   Ответить с цитированием
Старый 11.10.2015, 11:32   #12
nikopol70
Старший Пользователь
 
Регистрация: 01.08.2014
Возраст: 46
Регион: Украина
Сообщений: 274
nikopol70 is on a distinguished road
По умолчанию

Цитата:
Сообщение от TransF Посмотреть сообщение
Уважаемый lti1 прислал мне свой скетч для энекодера

Код HTML:
//Скетч регулятора громкости на энкодере для Arduino PRO MICRO 
// энкодер на 8 и 9 пинах  выводы подтянуты к питанию, 
// конденсаторы на землю желательно. 
//кнопка энкодера на 7 ноге, притянута к + программно. конденсатор желательно. 
void setup() {             
PCICR=1<<PCIE0; 
PCMSK0=(1<<PCINT5)|(1<<PCINT4); 
pinMode (7,INPUT_PULLUP); 
pinMode (8,INPUT); 
pinMode (9,INPUT); 
attachInterrupt(4, key_mute, FALLING); 
Keyboard.begin(); 
} 
void loop() { } 
  
ISR (PCINT0_vect){ 
static byte old_n=PINB&B00110000; 
byte new_n=PINB&B00110000; 
if (old_n==32&&new_n==48||old_n==16&&new_n==0) { 
        Remote.increase();  
        delay(10);   
        Remote.clear();} 
if (old_n==16&&new_n==48||old_n==32&&new_n==0) { 
        Remote.decrease(); 
        delay(10);   
        Remote.clear();} 
old_n= new_n;
} 
  
void key_mute() {         
        Remote.mute();  
        delay(10);  
        Remote.clear();}  
И он на самом деле шикарный нет ни дребезга ни проскакиваний всё чётко.
Но видимо у меня кривые руки не могу обьеденить скетч для кнопок и энкодера.
Хочу переделать теперь кнопки потому как щелчки не красивые и именно они дают дребезг при нажатии на кнопки хотя новые
шаг регулировки 4, а как сделать шаг 1?
nikopol70 вне форума   Ответить с цитированием
Старый 11.10.2015, 14:42   #13
lti1
Старший Пользователь
 
Аватар для lti1
 
Регистрация: 17.01.2010
Возраст: 48
Город: Самара
Регион: 63, 163
Машина: Skoda Octavia A5 FL && Skoda Octavia Tour && ̶F̶F̶3̶
Сообщений: 457
lti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond repute
По умолчанию

Цитата:
Сообщение от nikopol70 Посмотреть сообщение
шаг регулировки 4, а как сделать шаг 1?
Похоже на дребезг контактов, конденсаторы в схеме присутствуют? Если нет попробуйте поставить 100 nF.
lti1 вне форума   Ответить с цитированием
Старый 11.10.2015, 15:07   #14
nikopol70
Старший Пользователь
 
Регистрация: 01.08.2014
Возраст: 46
Регион: Украина
Сообщений: 274
nikopol70 is on a distinguished road
По умолчанию

Цитата:
Сообщение от lti1 Посмотреть сообщение
Похоже на дребезг контактов, конденсаторы в схеме присутствуют? Если нет попробуйте поставить 100 nF.
Нет, не верно поняли, кондеры стоят и регулировка происходит четко. Дребезга нет взагали.
В винде шаг регурировки 4 единицы, т.е. 0-4-8-12... и т.д.

В андроиде тоже все четко, но от мин до макс ползунок проходит за 4-5 щелчков энкодера.
nikopol70 вне форума   Ответить с цитированием
Старый 11.10.2015, 15:15   #15
Rage2
Banned
 
Регистрация: 06.11.2009
Возраст: 38
Город: Nizhniy Novgorod
Регион: 52
Машина: Ford Focus III
Сообщений: 1,776
Rage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant future
По умолчанию

Цитата:
Сообщение от nikopol70 Посмотреть сообщение

В андроиде тоже все четко, но от мин до макс ползунок проходит за 4-5 щелчков энкодера.
Так значит нужно увеличить количество пунктов уровня громкости в андройд до нужного значения. Xposed в помошь
как пример http://ru.wikihow.com/увеличить-шаги...ойства-Андроид
Rage2 вне форума   Ответить с цитированием
Старый 19.10.2015, 00:24   #16
TransF
Старший Пользователь
 
Регистрация: 14.06.2009
Город: Ставрополь
Регион: 26
Машина: AUDI A6 (C5) 2000г.в. V6 2.8L
Сообщений: 131
TransF is on a distinguished road
По умолчанию

В связи с покупкой нового руля, и ковырянием в куче всякой информации выяснилось что подключить новый руль в машине с его заводским устройством не представится возможным. (единственное поможет замена почти всей проводки в авто)
Родилась идея воткнуть всё рулевое (4 кнопки и 2 энкодера) в ещё одну ардуину.
Вот тут нашёл пример включения 2 энкодеров.
Убрал всё что не относится к рулевому

Может кто посоветует что со скетчем?
Миниатюры
Нажмите на изображение для увеличения
Название: схема arduino моя версия.jpg
Просмотров: 1690
Размер:	58.5 Кб
ID:	41326  
__________________

AUDI A6 (C5) V6 2.8L
TransF вне форума   Ответить с цитированием
Старый 19.10.2015, 09:25   #17
ali_vlad
Старший Пользователь
 
Регистрация: 21.06.2014
Возраст: 47
Регион: 05
Машина: Hyundai Accent II
Сообщений: 556
ali_vlad is on a distinguished road
По умолчанию

Тут уже кучу скетчей выложили, выбирай любой. Но я бы посоветовал использовать не аппаратное прерывание, а библиотеки. Bounce.h для ликвидации дребезга и encoder.h. Описания и примеры в интернете навалом.
Вечером добирусь до компа - выложу пример.
ali_vlad вне форума   Ответить с цитированием
Старый 19.10.2015, 09:29   #18
TransF
Старший Пользователь
 
Регистрация: 14.06.2009
Город: Ставрополь
Регион: 26
Машина: AUDI A6 (C5) 2000г.в. V6 2.8L
Сообщений: 131
TransF is on a distinguished road
По умолчанию

Все скетчи тут выложенные предусматривают подключение 3 пинов к ардуине, а в последнем варианте, всего 2.
В этом и вся сложность(((
Может я конечно совсем чайник, но мы тут и находимся все, чтобы делится опытом...
__________________

AUDI A6 (C5) V6 2.8L
TransF вне форума   Ответить с цитированием
Старый 19.10.2015, 11:15   #19
ali_vlad
Старший Пользователь
 
Регистрация: 21.06.2014
Возраст: 47
Регион: 05
Машина: Hyundai Accent II
Сообщений: 556
ali_vlad is on a distinguished road
По умолчанию

Ну хоть чуть теорию почитай. Есть аналоговые входы. На них резистивные кнопки вешаются. Есть цифровые входы. Без матчасти тяжело будет.
ali_vlad вне форума   Ответить с цитированием
Старый 19.10.2015, 11:44   #20
TransF
Старший Пользователь
 
Регистрация: 14.06.2009
Город: Ставрополь
Регион: 26
Машина: AUDI A6 (C5) 2000г.в. V6 2.8L
Сообщений: 131
TransF is on a distinguished road
По умолчанию

Ну как всегда ((( повторюсь тем что было написано выше, мы тут для обсуждения того как и что тут реализовывает а не для ликвидации безграмотности.

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

Я сравниваю скетчи которые у меня есть из разных примеров, и реально не могу понять алгоритм действий который необходим для реализации моей идеи.

Правый энкодер - горомкость + -
TEL - play+stop
кнопка на правом энкодере - mute

Левый энкодер - треки >> и <<
MODE - Alt+tab
кнопка на левом энкодере - хотелось бы реализовать как яркость экрана в связке с левым энкодером, нажал и покрутил
__________________

AUDI A6 (C5) V6 2.8L
TransF вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 20:48.


Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot