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


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

Ответ
 
Опции темы
Старый 21.10.2015, 10:39   #31
ali_vlad
Старший Пользователь
 
Регистрация: 21.06.2014
Возраст: 40
Регион: 05
Машина: Hyundai Accent II
Сообщений: 576
ali_vlad is on a distinguished road
По умолчанию

Я ошибся. Библиотека encoder называется.
ali_vlad вне форума   Ответить с цитированием
Старый 23.10.2015, 17:26   #32
TransF
Старший Пользователь
 
Регистрация: 14.06.2009
Город: Ставрополь
Регион: 26
Машина: AUDI A6 (C5) 2000г.в. V6 2.8L
Сообщений: 132
TransF is on a distinguished road
По умолчанию

Цитата:
Сообщение от ali_vlad Посмотреть сообщение
Я ошибся. Библиотека encoder называется.
Что-то я такой не нахожу ни где



НАШЕЛ)))
теперь бы как нибудь её изучить, сама библиотека есть теперь, а вот информации по ней, кто-то маловато будет (((
__________________

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

Посмотри ссылки, которые я осталял. Там готовый пример с регулятором громкости и библиотекой энкодер и с пояснениями. С ней вообще всё просто: 3 режима. С аппаратным прерыванием, без прерываний и еще какой-то. На мой взгляд, лучше без прерываний.
ali_vlad вне форума   Ответить с цитированием
Старый 23.10.2015, 20:33   #34
ali_vlad
Старший Пользователь
 
Регистрация: 21.06.2014
Возраст: 40
Регион: 05
Машина: Hyundai Accent II
Сообщений: 576
ali_vlad is on a distinguished road
По умолчанию

Забыл самое главное. Библиотека remote. Она всем рулит. А bounce, encoder это для избавления дребезга контактов.
ali_vlad вне форума   Ответить с цитированием
Старый 24.10.2015, 17:55   #35
defed
Новый Пользователь
 
Регистрация: 02.07.2015
Город: Красноярск
Регион: 24
Машина: Toyota Premio
Сообщений: 11
defed is on a distinguished road
По умолчанию

Привет.Подскажите, может знает кто нибудь. Залил скетч на ардуино pro micro управление звуком энкодером,все отлично работает. Но если запуск pipo x8 идет с данным регулятором то при включении он не работает пока не отключишь и подключишь его обратно. Может есть способ программно побороть это без задержки включения 5 вольт на usb?
defed вне форума   Ответить с цитированием
Старый 24.10.2015, 20:14   #36
ali_vlad
Старший Пользователь
 
Регистрация: 21.06.2014
Возраст: 40
Регион: 05
Машина: Hyundai Accent II
Сообщений: 576
ali_vlad is on a distinguished road
По умолчанию

defed, мне кажется тебе с этой проблемой обратиться на ардуиновский форум. Там программистов больше чем здесь, а значит и вероятность получить решение проблемы больше.
ali_vlad вне форума   Ответить с цитированием
Старый 22.11.2015, 18:34   #37
TransF
Старший Пользователь
 
Регистрация: 14.06.2009
Город: Ставрополь
Регион: 26
Машина: AUDI A6 (C5) 2000г.в. V6 2.8L
Сообщений: 132
TransF is on a distinguished road
По умолчанию

Эпопея продолжается...
теперь есть всё необходимое для рулевого управления,
пишу скетч для правой (пока) чести управления

по отдельности 2 счетча работают
1 для кнопок
PHP код:
int analogPin=0;
int data;

void setup()
{
  
Keyboard.begin();
  
Serial.begin(9600);
}

void loop()
{
  
data=analogRead(analogPin); //читаем значение нажатой кнопки
  
Serial.println(data); //для определения кодов нажатых кнопок на мониторе порта
  /*поддерживаемые коды управляющих клавиш
  http://arduino.cc/en/Reference/KeyboardModifiers*/

  
if (data>=28 && data<=35)  // приглушение звука
    
{
      
Remote.mute();
      
Remote.clear();
    }
  if (
data>=58 && data<=65)  // воспроизведение / пауза
    
{
      
Remote.play_pause();
      
Remote.clear();
    }
  
delay(100);

2-й для энекодера громкости от lti1

а вот вместе они дружить не хотят ((((
что я могу не так соединять?
PHP код:
//Скетч регулятора громкости на энкодере для Arduino PRO MICRO 
// энкодер на 8 и 9 пинах  выводы подтянуты к питанию, 
// конденсаторы на землю желательно. 
//кнопка энкодера на 7 ноге, притянута к + программно. конденсатор желательно. 
int analogPin=0;
int data;
void setup() {             
PCICR=1<<PCIE0
PCMSK0=(1<<PCINT5)|(1<<PCINT4); 
pinMode (7,INPUT_PULLUP); 
pinMode (8,INPUT); 
pinMode (9,INPUT); 
attachInterrupt(4key_muteFALLING); 
Keyboard.begin(); 
Serial.begin(9600);

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_nnew_n

  
void key_mute() {         
        
Remote.mute();  
        
delay(10);  
        
Remote.clear();}  
        {
  
data=analogRead(analogPin); //читаем значение нажатой кнопки
  
Serial.println(data); //для определения кодов нажатых кнопок на мониторе порта
  /*поддерживаемые коды управляющих клавиш
  http://arduino.cc/en/Reference/KeyboardModifiers*/
  
if (data==614)  Keyboard.write(176); //ENTER
  
if (data==122)  Keyboard.write(216); //стрелка влево
  
if (data==165)  Keyboard.write(215); //стрелка вправо
  
if (data==216)  Keyboard.write(218); //стрелка вверх
  
if (data==276)  Keyboard.write(217); //стрелка вниз
  
if (data>=38 && data<=35)  // приглушение звука
    
{
      
Remote.mute();
      
Remote.clear();
    }
  if (
data>=58 && data<=65)  // воспроизведение / пауза
    
{
      
Remote.play_pause();
      
Remote.clear();
    }
  
delay(100);

выдает вот такую ошибку
sketch_encoder:37: error: expected unqualified-id before '{' token
__________________

AUDI A6 (C5) V6 2.8L
TransF вне форума   Ответить с цитированием
Старый 22.11.2015, 19:39   #38
lti1
Старший Пользователь
 
Аватар для lti1
 
Регистрация: 17.01.2010
Возраст: 41
Город: Самара
Регион: 63, 163
Машина: Skoda Octavia Tour && ̶F̶F̶3̶
Сообщений: 448
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, ну наверное потому, что в loop добавлять нужно, чтиво.
PHP код:
int analogPin=0;
int data;
void setup() {             
PCICR=1<<PCIE0
PCMSK0=(1<<PCINT5)|(1<<PCINT4); 
pinMode (7,INPUT_PULLUP); 
pinMode (8,INPUT); 
pinMode (9,INPUT); 
attachInterrupt(4key_muteFALLING); 
Keyboard.begin(); 
Serial.begin(9600);

void loop() {
 
data=analogRead(analogPin); //читаем значение нажатой кнопки
  
Serial.println(data); //для определения кодов нажатых кнопок на мониторе порта
  /*поддерживаемые коды управляющих клавиш
  http://arduino.cc/en/Reference/KeyboardModifiers*/
  
if (data==614)  Keyboard.write(176); //ENTER
  
if (data==122)  Keyboard.write(216); //стрелка влево
  
if (data==165)  Keyboard.write(215); //стрелка вправо
  
if (data==216)  Keyboard.write(218); //стрелка вверх
  
if (data==276)  Keyboard.write(217); //стрелка вниз
  
if (data>=38 && data<=35)  // приглушение звука
    
{
      
Remote.mute();
      
Remote.clear();
    }
  if (
data>=58 && data<=65)  // воспроизведение / пауза
    
{
      
Remote.play_pause();
      
Remote.clear();
    }

  
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_nnew_n

  
void key_mute() {         
        
Remote.mute();  
        
delay(10);  
        
Remote.clear();} 
И зачем delay(100); в конце цикла?
P.S.
Это не мой скетч, я его только подправил.
lti1 вне форума   Ответить с цитированием
Старый 22.11.2015, 23:59   #39
TransF
Старший Пользователь
 
Регистрация: 14.06.2009
Город: Ставрополь
Регион: 26
Машина: AUDI A6 (C5) 2000г.в. V6 2.8L
Сообщений: 132
TransF is on a distinguished road
По умолчанию

Цитата:
Сообщение от lti1 Посмотреть сообщение
P.S.
Это не мой скетч, я его только подправил.
Прошу прощения исправлюсь

И еще спасибо за чтиво, пока только читаю кучу теории и не совсем понимаю для чего какая команда,скорее даже пытаюсь повторить что делают другие

Опытным путем выяснено что дэлэй для энкодера в показателе 100 исключает дребезг контактов (вместо 10 в оригинальном скетче)
Верхний дэлэй пришлось вернуть, так как только с его помощью исключил дребезг в кнопках мьют и плэй/пауза

на данном этапе скетч выглядит вот так
Код:
int analogPin=0;
int data;
void setup() {             
PCICR=1<<PCIE0; 
PCMSK0=(1<<PCINT5)|(1<<PCINT4); 
pinMode (8,INPUT); 
pinMode (9,INPUT); 
Keyboard.begin(); 
Serial.begin(9600);
} 
void loop() {
 data=analogRead(analogPin); //читаем значение нажатой кнопки
  Serial.println(data); //для определения кодов нажатых кнопок на мониторе порта
  /*поддерживаемые коды управляющих клавиш
  http://arduino.cc/en/Reference/KeyboardModifiers*/
  if (data>=28 && data<=35)  // приглушение звука
    {
      Remote.mute();
      Remote.clear();
    }
  if (data>=58 && data<=65)  // воспроизведение / пауза
    {
      Remote.play_pause();
      Remote.clear();
    }
  delay(180);
} 
  
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(100);   
        Remote.clear();} 
old_n= new_n; 
}
Может быть криво написано но работает. т.к. мои энкодеры без нажимных кнопок, удалил из части энкодера мьют

начал работу над левый частью, по особо не получается, мучаюсь с альт+табом
__________________

AUDI A6 (C5) V6 2.8L

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

Помогите пожалуйста люди добрые, где-то скосячил не пойму где

Код HTML:
int analogPin=0;
int data;
unsigned long flag = 0;  
unsigned long eventTime = 0;  
unsigned long pauseMillis = 0; 
void setup() {             
PCICR=1<<PCIE0; 
PCMSK0=(1<<PCINT5)|(1<<PCINT4); 
pinMode (8,INPUT); 
pinMode (9,INPUT); 
Keyboard.begin(); 
Serial.begin(9600);
} 
void loop() {
 data=analogRead(analogPin); //читаем значение нажатой кнопки
  Serial.println(data); //для определения кодов нажатых кнопок на мониторе порта


              
if (data>=28 && data<=35)  // альт+таб
  {
flag = 1;
  }
  {
Keyboard.press(KEY_LEFT_ALT);  
Keyboard.press(KEY_TAB);  
Keyboard.release(KEY_TAB);  
Keyboard.press(KEY_TAB);  
Keyboard.release(KEY_TAB);  
flag = 0;  
pauseMillis = millis();
}
// что-то
if (data>=58 && data<=65)  // воспроизведение / пауза
{
  Remote.play_pause();
  Remote.clear();
  delay(180);}
  
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.next();  
        delay(10);   
        Remote.clear();} 
if (old_n==16&&new_n==48||old_n==32&&new_n==0) { 
        Remote.previous(); 
        delay(100);   
        Remote.clear();} 
old_n= new_n; 
}
выходят ошибки
Код HTML:
sketch_nov24a.ino: In function 'void loop()':
sketch_nov24a:40: error: expected unqualified-id before string constant
sketch_nov24a:41: error: a function-definition is not allowed here before '{' token
sketch_nov24a:53: error: expected `}' at end of input
я так понял первая потянула за собой остальной клубок
__________________

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


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

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

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



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


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