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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2015, 01:26   #51
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
По умолчанию

Цитата:
Сообщение от TransF Посмотреть сообщение
Помогите пожалуйста, дописать кусок скетча для переключения треков.
Второй энкодер подключается к D10 и D16, так же с резисторами и конденсаторами:
PHP код:
void setup() {             
PCICR=1<<PCIE0
PCMSK0=(1<<PCINT5)|(1<<PCINT4)|(1<<PCINT2)|(1<<PCINT6); 
pinMode (9,INPUT); 
pinMode (8,INPUT);
pinMode (16,INPUT);
pinMode (10,INPUT);
Keyboard.begin(); 

void loop() {


ISR (PCINT0_vect){ 
static 
byte old_n=PINB&B01110100
byte new_n=PINB&B01110100

if ((
old_n B00110000) == 32 && (new_n B00110000) == 48 || (old_n B00110000) == 16 && (new_n B00110000) == 0) { 
        
Remote.increase();    
        
Remote.clear();
      } 
if ((
old_n B00110000) == 16 && (new_n B00110000) == 48 || (old_n B00110000) == 32 && (new_n B00110000) == 0) { 
        
Remote.decrease();   
        
Remote.clear();
      } 
        
if ((
old_n B01000100) == 64 && (new_n B01000100) == 68 || (old_n B01000100) == && (new_n B01000100) == 0) { 
        
Remote.next();   
        
Remote.clear();
      } 
if ((
old_n B01000100) == && (new_n B01000100) == 68 || (old_n B01000100) == 64 && (new_n B01000100) == 0) { 
        
Remote.previous();  
        
Remote.clear();
      }
        
old_nnew_n


Последний раз редактировалось admin; 27.03.2017 в 02:13.
lti1 вне форума   Ответить с цитированием
Старый 05.12.2015, 15:45   #52
TransF
Старший Пользователь
 
Регистрация: 14.06.2009
Город: Ставрополь
Регион: 26
Машина: AUDI A6 (C5) 2000г.в. V6 2.8L
Сообщений: 131
TransF is on a distinguished road
По умолчанию

Цитата:
Сообщение от lti1 Посмотреть сообщение
Второй энкодер подключается к D10 и D16, так же с резисторами и конденсаторами:
PHP код:
int analogPin=0;
int data;

void setup() {             
PCICR=1<<PCIE0
PCMSK0=(1<<PCINT5)|(1<<PCINT4)|(1<<PCINT2)|(1<<PCINT6); 
pinMode (9,INPUT); 
pinMode (8,INPUT);
pinMode (16,INPUT);
pinMode (10,INPUT);
Keyboard.begin(); 

void loop() {


ISR (PCINT0_vect){ 
static 
byte old_n=PINB&B01110100
byte new_n=PINB&B01110100

if ((
old_n B00110000) == 32 && (new_n B00110000) == 48 || (old_n B00110000) == 16 && (new_n B00110000) == 0) { 
        
Remote.increase();    
        
Remote.clear();
      } 
if ((
old_n B00110000) == 16 && (new_n B00110000) == 48 || (old_n B00110000) == 32 && (new_n B00110000) == 0) { 
        
Remote.decrease();   
        
Remote.clear();
      } 
        
if ((
old_n B01000100) == 64 && (new_n B01000100) == 68 || (old_n B01000100) == && (new_n B01000100) == 0) { 
        
Remote.next();   
        
Remote.clear();
      } 
if ((
old_n B01000100) == && (new_n B01000100) == 68 || (old_n B01000100) == 64 && (new_n B01000100) == 0) { 
        
Remote.previous();  
        
Remote.clear();
      }
        
old_nnew_n

Спасибо огромнейшее, теперь всё ровно и четко.

А не подскажете принцип вот этой строчки
if ((old_n & B01000100) == 4 && (new_n & B01000100) == 68 || (old_n & B01000100) == 64 && (new_n & B01000100) == 0) {
для собственного понимания?
__________________

AUDI A6 (C5) V6 2.8L

Последний раз редактировалось admin; 27.03.2017 в 02:13.
TransF вне форума   Ответить с цитированием
Старый 05.12.2015, 16:03   #53
TransF
Старший Пользователь
 
Регистрация: 14.06.2009
Город: Ставрополь
Регион: 26
Машина: AUDI A6 (C5) 2000г.в. V6 2.8L
Сообщений: 131
TransF is on a distinguished road
По умолчанию

Закончил, на компе всё работает, на телефоне тоже.
иду проверять на планшете в машине)
Последняя версия скетча

Код HTML:
int analogPin=0;
int data;
void setup() {             
PCICR=1<<PCIE0; 
PCMSK0=(1<<PCINT5)|(1<<PCINT4)|(1<<PCINT2)|(1<<PCINT6);
pinMode (9,INPUT); 
pinMode (8,INPUT); 
pinMode (16,INPUT);
pinMode (10,INPUT);
Keyboard.begin(); 
Serial.begin(9600);
} 
void loop() {
    data=analogRead(analogPin); //читаем значение нажатой кнопки
    Serial.println(data); //для определения кодов нажатых кнопок на мониторе порта
if (data>=28 && data<=35)  // приглушение звука
    {
      Remote.play_pause();
      Remote.clear();
    }
if (data>=58 && data<=65)  // воспроизведение / пауза
    {
      Remote.mute();
      Remote.clear();
    }
  delay(100);
if (data>=88 && data<=95)  // ALT+TAB
    {
      Keyboard.press(KEY_LEFT_ALT);  
      Keyboard.press(KEY_TAB);  
      Keyboard.release(KEY_TAB);  
      Keyboard.press(KEY_TAB);  
      Keyboard.releaseAll();
}
  delay(180);
if (data>=140 && data<=150)  // спать
    {
      Remote.power();
      Remote.clear();
    }
} 
ISR (PCINT0_vect){ 
static byte old_n=PINB&B01110100; 
byte new_n=PINB&B01110100; 

if ((old_n & B00110000) == 32 && (new_n & B00110000) == 48 || (old_n & B00110000) == 16 && (new_n & B00110000) == 0) { 
        Remote.increase();    
        Remote.clear();
      } 
if ((old_n & B00110000) == 16 && (new_n & B00110000) == 48 || (old_n & B00110000) == 32 && (new_n & B00110000) == 0) { 
        Remote.decrease();   
        Remote.clear();
      } 
        
if ((old_n & B01000100) == 64 && (new_n & B01000100) == 68 || (old_n & B01000100) == 4 && (new_n & B01000100) == 0) { 
        Remote.previous();   
        Remote.clear();
      } 
if ((old_n & B01000100) == 4 && (new_n & B01000100) == 68 || (old_n & B01000100) == 64 && (new_n & B01000100) == 0) { 
        Remote.next();  
        Remote.clear();
      }
        
old_n= new_n; 
}
ОГРОМНОЕ спасибо всем кто помог мне в этой совсем не простой (для меня) задаче)
__________________

AUDI A6 (C5) V6 2.8L
TransF вне форума   Ответить с цитированием
Старый 05.12.2015, 16:15   #54
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
По умолчанию

Цитата:
Сообщение от TransF Посмотреть сообщение
Спасибо огромнейшее, теперь всё ровно и четко.

А не подскажете принцип вот этой строчки
if ((old_n & B01000100) == 4 && (new_n & B01000100) == 68 || (old_n & B01000100) == 64 && (new_n & B01000100) == 0) {
для собственного понимания?
Так как оба энкодера пишутся в одну переменную, сравнение производится с применением битовой маски. Нагляднее будет так:
PHP код:
if ((old_n B01000100) == B00000100 && (new_n B01000100) == B01000100 || 
    (
old_n B01000100) == B01000000 && (new_n B01000100) == B00000000
lti1 вне форума   Ответить с цитированием
Старый 05.12.2015, 16:22   #55
TransF
Старший Пользователь
 
Регистрация: 14.06.2009
Город: Ставрополь
Регион: 26
Машина: AUDI A6 (C5) 2000г.в. V6 2.8L
Сообщений: 131
TransF is on a distinguished road
По умолчанию

Проверяю на nexus-e,
Альт\таб - переключает между собой только последние 2 приложения
Мьют - вообще не работает( планшет думает что мьют включают на входящие звонки, во время воспроизведения звук не глушит как на компьютере (((
Рано радоваться(((
Цитата:
Сообщение от lti1 Посмотреть сообщение
Так как оба энкодера пишутся в одну переменную, сравнение производится с применением битовой маски. Нагляднее будет так:
PHP код:
if ((old_n B01000100) == B00000100 && (new_n B01000100) == B01000100 || 
    (
old_n B01000100) == B01000000 && (new_n B01000100) == B00000000
Спасибо за информацию. Чесно говоря ничего не понял.
__________________

AUDI A6 (C5) V6 2.8L
TransF вне форума   Ответить с цитированием
Старый 05.12.2015, 16:39   #56
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
По умолчанию

Цитата:
Сообщение от TransF Посмотреть сообщение
Проверяю на nexus-e,
Альт\таб - переключает между собой только последние 2 приложения
Мьют - вообще не работает( планшет думает что мьют включают на входящие звонки, во время воспроизведения звук не глушит как на компьютере (((
Рано радоваться(((

Спасибо за информацию. Чесно говоря ничего не понял.
Про Alt+Tab я же вам в личку писал, то что Вы сделали нормально работать не будет.
lti1 вне форума   Ответить с цитированием
Старый 26.02.2016, 16:27   #57
~aviator~
Старший Пользователь
 
Регистрация: 02.04.2010
Возраст: 41
Город: Минск
Регион: Беларусь
Машина: Honda Accord 2.0 DOHC
Сообщений: 660
~aviator~ is on a distinguished road
По умолчанию

темка еще жива?
на панели компа есть энкодер с кнопкой и еще 2 кнопки
поможет ли мне этот скетч и схема в реализации задачи по регулирвки громкости например+ выкл/вкл звука и еще 2 кнопки например по переходу трека вперед/назад
~aviator~ вне форума   Ответить с цитированием
Старый 27.02.2016, 10:05   #58
TransF
Старший Пользователь
 
Регистрация: 14.06.2009
Город: Ставрополь
Регион: 26
Машина: AUDI A6 (C5) 2000г.в. V6 2.8L
Сообщений: 131
TransF is on a distinguished road
По умолчанию

Цитата:
Сообщение от ~aviator~ Посмотреть сообщение
темка еще жива?
на панели компа есть энкодер с кнопкой и еще 2 кнопки
поможет ли мне этот скетч и схема в реализации задачи по регулирвки громкости например+ выкл/вкл звука и еще 2 кнопки например по переходу трека вперед/назад
Да поможет, но может там уже какое то устройство есть, чтобы не изобретать велосипед?
__________________

AUDI A6 (C5) V6 2.8L
TransF вне форума   Ответить с цитированием
Старый 28.02.2016, 00:25   #59
~aviator~
Старший Пользователь
 
Регистрация: 02.04.2010
Возраст: 41
Город: Минск
Регион: Беларусь
Машина: Honda Accord 2.0 DOHC
Сообщений: 660
~aviator~ is on a distinguished road
По умолчанию

есть но дорого для меня пока
~aviator~ вне форума   Ответить с цитированием
Старый 28.02.2016, 00:27   #60
TransF
Старший Пользователь
 
Регистрация: 14.06.2009
Город: Ставрополь
Регион: 26
Машина: AUDI A6 (C5) 2000г.в. V6 2.8L
Сообщений: 131
TransF is on a distinguished road
По умолчанию

Цитата:
Сообщение от ~aviator~ Посмотреть сообщение
есть но дорого для меня пока
Если устройство уже есть, ведь энкодер есть, значит просто нужно заставить работать.
__________________

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


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

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

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



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


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