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

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

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

Цитата:
Сообщение от Chubaka885 Посмотреть сообщение
lti1 Большое спасибо!! Всё заработало как надо.

Осталось, вместо play/pause сделать AltTab. Попробую сам.
Здесь можно посмотреть как сделан Alt+Tab и по аналогии доработать под себя. Алгоритм следующий: первое нажатие нажимает Alt+Tab и сразу отпускает Tab, повторное нажатие, в течении секунды опять нажимает Alt+Tab и опять отпускает Tab, через секунду после любого нажатия Alt отпускается.
Цитата:
Сообщение от Chubaka885 Посмотреть сообщение
И ещё. Не подскажите, существует ли команда HID переключения папок в аудиоплеере?
Сам задавался таким вопросом, ни чего не нашел, скорее всего такого не существует. Пробовал у себя реализовать через Tasker, отлавливать комбинации клавиш и назначать действия перехода по папкам, но мне не понравилось, иногда сильно тормозит.

Последний раз редактировалось lti1; 12.10.2014 в 23:38.
lti1 вне форума   Ответить с цитированием
Старый 24.02.2014, 17:50   #212
Chubaka885
Старший Пользователь
 
Регистрация: 08.10.2013
Возраст: 41
Регион: 56
Машина: Toyota Corolla e150
Сообщений: 325
Chubaka885 is a jewel in the roughChubaka885 is a jewel in the roughChubaka885 is a jewel in the roughChubaka885 is a jewel in the rough
По умолчанию

Цитата:
Сообщение от lti1 Посмотреть сообщение
Здесь можно посмотреть как сделан Alt+Tab и по аналогии доработать под себя. Алгоритм следующий: первое нажатие нажимает Alt+Tab и сразу отпускает Tab, повторное нажатие, в течении секунды опять нажимает Alt+Tab и опять отпускает Tab, через секунду после любого нажатия Alt отпускается.
Спасибо ещё раз, всё получилось. Только мне кажется что первое нажатие должно отправлять таб два раза а последующие уже по одному, иначе (на планшете) приходится нажимать два раза чтобы переключится на следующею активную программу.

Цитата:
Сообщение от lti1 Посмотреть сообщение
Сама задавался таким вопросом, ни чего не нашел, скорее всего такого не существует. Пробовал у себя реализовать через Tasker, отлавливать комбинации клавиш и назначать действия перехода по папкам, но мне не понравилось, иногда сильно тормозит.
Да, скорей всего такой команды нет. Придётся для переключения папок в дисплей тыкать))). А если с помощью таскера сильно тормозит?

Последний раз редактировалось Chubaka885; 24.02.2014 в 18:36.
Chubaka885 вне форума   Ответить с цитированием
Старый 24.02.2014, 19:20   #213
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
По умолчанию

Цитата:
Сообщение от Chubaka885 Посмотреть сообщение
Спасибо ещё раз, всё получилось. Только мне кажется что первое нажатие должно отправлять таб два раза а последующие уже по одному, иначе (на планшете) приходится нажимать два раза чтобы переключится на следующею активную программу.
Да наверное так логичнее будет, когда сделаете, выложите в эту тему.
Цитата:
Сообщение от Chubaka885 Посмотреть сообщение
Да, скорей всего такой команды нет. Придётся для переключения папок в дисплей тыкать))). А если с помощью таскера сильно тормозит?
Иногда сильно, но возможно у меня планшет криво прошит, от сюда и тормоза. Сейчас вообще Tasker отключил, потому как не только переход по папкам тормозил.
lti1 вне форума   Ответить с цитированием
Старый 26.02.2014, 20:24   #214
Chubaka885
Старший Пользователь
 
Регистрация: 08.10.2013
Возраст: 41
Регион: 56
Машина: Toyota Corolla e150
Сообщений: 325
Chubaka885 is a jewel in the roughChubaka885 is a jewel in the roughChubaka885 is a jewel in the roughChubaka885 is a jewel in the rough
По умолчанию

Готовый скетч для резестивных кнопок, любезно предоставленный lti1 за что ему огромное спасибо. Для работы требуются модифицированные USBAPI.h, HID.cpp. Скачать вложение с поста #182.
Скетч работает на arduino pro micro, arduino leonardo.

Алгоритм:
Кнопки громкости.
Одиночное нажатие - прибавление/убавление на одну единицу.
Удержание - прибавление/убавление до отпускания.

Кнопки следующий/предидущий трек
Одно нажатие - следующий/предидущий трек
Удержание - перемотка

Кнопка mode
первое нажатие - отсылается нажатие ALT и два раза TAB. Каждое следующее нажатие, если не истекло 800 мили сек. отсылает один раз TAB, ALT остаётся нажатым.
Удержание - плей/пауза.

PHP код:
int analogPin=6;    //пин для подключения кнопок
int data;
unsigned long flag 0;
unsigned long eventTime 0;
unsigned long pauseMillis 0;

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

void loop()
{
  
data=analogRead(analogPin); //читаем значение нажатой кнопки
  
//********************** Громкость ************************************

  
if(data>=950 && flag == 0// все кнопки отпущены
   
{
    
eventTime=millis();
   }

  if(
millis()-eventTime>10 && millis()-eventTime<499 && data>=210 && data<=230 && flag == 0// короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
   

    
Remote.increase();
    
flag 5;
    
delay(10);
    
Remote.clear();
   }

  if(
millis()-eventTime>500 && data>=210 && data<=230 && flag == || data>=210 && data<=230 && flag == 3// удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
   

    
Remote.increase(); // действие после удержание кнопки, Увеличить громкость каждые 0,1 секунды
    
flag 3;
    
Remote.clear();
    
delay(100);
   }

  if(
millis()-eventTime>10 && millis()-eventTime<499 && data>=457 && data<=477 && flag == 0// короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
   

    
Remote.decrease();
    
flag 6;
    
delay(10);
    
Remote.clear();
   }

  if(
millis()-eventTime>500 && data>=457 && data<=477 && flag == || data>=457 && data<=477 && flag == 3// удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
   

    
Remote.decrease(); // действие после удержание кнопки, Уменьшить громкость каждые 0,1 секунды
    
flag 3;
    
Remote.clear();
    
delay(100);
   }
   
//********************** AltTab + Play/pause ************************************    

if(millis()-eventTime>10 && millis()-eventTime<499 && data>=567 && data<=587// короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
   

    
flag 1;
   }

  if(
data>=950 && flag == && pauseMillis == 0// действие после короткого нажатия кнопки, Alt+Tab
   
{
    
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>=950 && flag == && pauseMillis != 0// действие после короткого повторного нажатия кнопки, Alt+Tab
   
{
    
Keyboard.press(KEY_TAB);
    
Keyboard.release(KEY_TAB);
    
flag 0;
    
pauseMillis millis();
   }
   
  if(
pauseMillis && millis()-pauseMillis >= 800 && data>=950// && flag == 7 && data>=950)
  
{
    
flag 0;
    
pauseMillis 0;
    
Keyboard.releaseAll();
  }
   
  if(
millis()-eventTime>500 && data>=567 && data<=587 && flag == 1// удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
   

    
Remote.play_pause(); // действие после удержание кнопки, воспроизведение / пауза
    
flag 0;
    
delay(10);
    
Remote.clear();
   }
//********************** Next и Fast Forward ************************************    
    
  
if(millis()-eventTime>10 && millis()-eventTime<499 && data>=&& data<=10// короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
   

    
flag 2;
   }
   
  if(
data>=950 && flag == 2// действие после короткого нажатия кнопки, Next
   
{
    
Remote.next();
    
flag 0;
    
delay(10);
    
Remote.clear();
   }

  if(
millis()-eventTime>500 && data>=&& data<=10 && flag == || data>=&& data<=10 && flag == 3// удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
   

    
Remote.forward(); // действие после удержание кнопки, Fast Forward
    
flag 3;
    
Remote.clear();
    
delay(100);
   }
//********************** Previous и Rewind ************************************    
    
  
if(millis()-eventTime>10 && millis()-eventTime<499 && data>=74 && data<=94// короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
   

    
flag 4;
   }
   
  if(
data>=950 && flag == 4// действие после короткого нажатия кнопки, Previous
   
{
    
Remote.previous();
    
flag 0;
    
delay(10);
    
Remote.clear();
   }

  if(
millis()-eventTime>500 && data>=74 && data<=94 && flag == || data>=74 && data<=94 && flag == 3// удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
   

    
Remote.rewind(); // действие после удержание кнопки, Rewind
    
flag 3;
    
Remote.clear();
    
delay(100);
   }
   
  if(
data>=950 && flag == || data>=950 && flag == || data>=950 && flag == 6// действие после отпускания кнопки
   
{
    
flag 0;
   }   


Последний раз редактировалось Chubaka885; 24.01.2015 в 01:14.
Chubaka885 вне форума   Ответить с цитированием
Старый 26.03.2014, 16:41   #215
Oreshrek
Старший Пользователь
 
Регистрация: 24.02.2013
Возраст: 39
Город: Москва
Регион: 77, 97, 99, 177
Машина: Kia Optima
Сообщений: 180
Oreshrek is on a distinguished road
По умолчанию

Цитата:
Сообщение от armlive Посмотреть сообщение
Вот рабочий вариант ардуино уно r3 , с управлением по питанию.
Код взят у ilya174, основа и настроен под кашкай.
У кашкая по три кнопки на каждом выводе, соединяем их резисторами(разные номиналы обязательно) и делаем один вывод от шести полученных кнопок и общий минус. К ардуино уно подключаем минус к минусу, вывод от кнопок к A0, A0 через подтягивающий резистор(2ком) подключаем к +
Раскомментируйте //Serial.println(dt1); и залейте скетч.
Считайте свои значения в мониторе и установите для каждой кнопки и залейте скетч.
Дальше прошейте USB HID и почти готово.
Открываем "system\usr\keylayout\Generic.kl" (сделайте обязательно копию оригинала) и правим под себя.
Ни клавиатура, ни кнопки не страдают.
PHP код:
// Для рулевых кнопок
uint8_t buf[8] = { 
  
};
  
// реле питания звуковой карты  
  #define relePin4 11 
  
// Задержки между нажатиями конкретных кнопок, миллисекунды
#define KEY_CH_VOL_MINUS_DELAY   (200)
#define KEY_CH_VOL_PLUS_DELAY    (200)
#define KEY_CH_PAUSE_DELAY       (200)
#define KEY_CH_PREV_TRACK_DELAY  (200)
#define KEY_CH_FORW_TRACK_DELAY  (200)
#define KEY_CH_TAB_DELAY         (200)
#define KEY_CH_ESC_DELAY         (200)
#define KEY_CH_AUDIO_OFF_DELAY   (400)
#define KEY_CH_PLUS_DELAY        (200)
#define KEY_MODE_DELAY        (200)
#define KEY_MODE_DELAY        (200)
#define KEY_MODE_DELAY        (200)
#define KEY_MODE_DELAY        (200)

// Значения кнопок
#define KEY_CH_VOL_MINUS    (540)
#define KEY_CH_VOL_PLUS     (337)
#define KEY_CH_PAUSE         (0)
#define KEY_CH_PREV_TRACK   (500)
#define KEY_CH_FORW_TRACK   (252)
#define KEY_CH_TAB          (484)
#define KEY_CH_ESC          (218)
#define KEY_CH_AUDIO_OFF    (0)
#define KEY_CH_PLUS    (0)
#define KEY_CH_MINUS    (0)
#define KEY_CH_MINUS    (0)
#define KEY_CH_MINUS    (1500)
#define KEY_CH_MINUS    (1500)


// Погрешность при чтении кнопок
#define KEY_DELTA       (10)

// Коды кнопок, что отсылаем в порт внешней проге
#define CH_VOL_MINUS        (81) //Кнопка down
#define CH_VOL_PLUS         (82) //Кнопка   up
#define CH_PAUSE            (0) //
#define CH_PREV_TRACK       (80) //Кнопка   left
#define CH_FORW_TRACK       (79) //Кнопка  right
#define CH_TAB              (72)  //Кнопка        break, Pause
#define CH_ESC              (74) //Кнопка         Home
#define CH_AUDIO_OFF        (0) 
#define CH_PLUS             (0)
#define CH_MINUS            (0)
#define CH_MINUS            (0)
#define CH_MINUS            (0)
#define CH_MINUS            (0)
#define NONE                (0)

// Кнопки
#define ACCPin 2 // через делитель к ACC
#define ControlPin A1 // через делитель к +12В
#define relePin1 8 // реле USB HUB
#define relePin2 9 // реле планшета (OTG)
#define relePin3 10 // реле звуковой карты (замыкания на землю)            
#define ONHUB 1000 // время включения реле HUB
#define ONTablet 4000 // время включения планшета
#define ONAudio 9000 // время включения аудио        
#define OFFHUB 8000 // время выключения реле HUB
#define OFFTablet 3000 // время выключения планшета
#define OFFAudio 10 // время выключения аудио        

unsigned long LastTimeKeyPressed millis();
unsigned long durationmillisoldoff 0;
boolean stateACCrelestate1relestate2,relestate3,relestate4  0;
int LastKeyPressed NONE;
int flag 1;
int flag2 0;
void setup()      
{  
Serial.begin(9600);
pinMode(relePin1OUTPUT); 
pinMode(relePin2OUTPUT);
pinMode(relePin3OUTPUT);
pinMode(relePin4OUTPUT);
}      

void loop()      
{   
  
ReadSteering();
  
Knopki();
  
delay(10);


// Читает рулевые кнопки и пишет в порт код нажатой кнопки
void ReadSteering()      
{   
  
pinMode(relePin4OUTPUT);
  
digitalWrite(relePin4,flag );
  
unsigned long TimeKeyPressed;
  
int KeyPressed NONE;
  
int dt1 analogRead(A0);
  
delay(10);
  
//Serial.println(dt1); // Раскомментировать для вывода и обозначения значения кнопок в монитор 
  
int dt2 analogRead(A0);
  
//Serial.println(dt2);  
  
if (abs(dt1-dt2)<=490 and dt1<1024 //если нет дребезга и что-то есть
  

    
// Регистрируем время нажатия кнопки
    
    
TimeKeyPressed millis();  //получить реальное время     
    
    //CH_VOL_MINUS    
    
if ( (dt1-KEY_DELTA <= KEY_CH_VOL_MINUS) and (dt1+KEY_DELTA >= KEY_CH_VOL_MINUS) )
    {
      if ( (
LastKeyPressed != CH_VOL_MINUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_VOL_MINUS_DELAY))
      { 
        
LastKeyPressed CH_VOL_MINUS;        
        
buf[2] = CH_VOL_MINUS;                 
    
LastTimeKeyPressed TimeKeyPressed;
    
//Serial.print(CH_VOL_MINUS);
     
Serial.write(buf8);
      
releaseKey();
       
//Serial.print(CH_VOL_MINUS);
      
}
    }  
    
//CH_VOL_PLUS
    
else if ( (dt1-KEY_DELTA <= KEY_CH_VOL_PLUS) and (dt1+KEY_DELTA >=KEY_CH_VOL_PLUS) )
    {
      if ( (
LastKeyPressed != CH_VOL_PLUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_VOL_PLUS_DELAY) )
      {
        
LastKeyPressed CH_VOL_PLUS;
        
buf[2]=CH_VOL_PLUS;
         
LastTimeKeyPressed TimeKeyPressed;
     
Serial.write(buf8);
     
//Serial.println(CH_VOL_PLUS);      
    
releaseKey();        
      }  
    }
    
//CH_PAUSE
    
else if ( (dt1-KEY_DELTA <= KEY_CH_PAUSE) and (dt1+KEY_DELTA >=KEY_CH_PAUSE) )
    {
      if ( (
LastKeyPressed != CH_PAUSE) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_PAUSE_DELAY) )
      {
        
LastKeyPressed CH_PAUSE;
        
buf[2]=CH_PAUSE;
         
LastTimeKeyPressed TimeKeyPressed;
     
Serial.write(buf8);
     
//Serial.println(CH_PAUSE);    
     
releaseKey();        
      }  
    }
    
//CH_PREV_TRACK
    
else if ( (dt1-KEY_DELTA <= KEY_CH_PREV_TRACK) and (dt1+KEY_DELTA >=KEY_CH_PREV_TRACK) )
    {
      if ( (
LastKeyPressed != CH_PREV_TRACK) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_PREV_TRACK_DELAY) )
      {
        
LastKeyPressed CH_PREV_TRACK;
        
buf[2]=CH_PREV_TRACK;
         
LastTimeKeyPressed TimeKeyPressed;
     
Serial.write(buf8);
     
//Serial.println(CH_PREV_TRACK);    
    
releaseKey();        
      }  
    }
    
//CH_FORW_TRACK
    
else if ( (dt1-KEY_DELTA <= KEY_CH_FORW_TRACK) and (dt1+KEY_DELTA >=KEY_CH_FORW_TRACK) )
    {
      if ( (
LastKeyPressed != CH_FORW_TRACK) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_FORW_TRACK_DELAY) )
      {
        
LastKeyPressed CH_FORW_TRACK;
        
buf[2]=CH_FORW_TRACK;
         
LastTimeKeyPressed TimeKeyPressed;
     
Serial.write(buf8);
     
//Serial.println(CH_FORW_TRACK);    
    
releaseKey();       
      }  
    }
    
//CH_TAB
    
else if ( (dt1-KEY_DELTA <= KEY_CH_TAB) and (dt1+KEY_DELTA >=KEY_CH_TAB) )
    {
      if ( (
LastKeyPressed != CH_TAB) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_TAB_DELAY) )
      {
        
LastKeyPressed CH_TAB;
        
buf[2]=CH_TAB;
         
LastTimeKeyPressed TimeKeyPressed;
     
Serial.write(buf8);
     
//Serial.println(CH_TAB);    
    
releaseKey();        
      }  
    }
    
//CH_ESC
    
else if ( (dt1-KEY_DELTA <= KEY_CH_ESC) and (dt1+KEY_DELTA >=KEY_CH_ESC) )
    {
      if ( (
LastKeyPressed != CH_ESC) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_ESC_DELAY) )
      {
        
LastKeyPressed CH_ESC;
        
buf[2]=CH_ESC;
         
LastTimeKeyPressed TimeKeyPressed;
     
Serial.write(buf8);
     
//Serial.println(CH_ESC);    
    
releaseKey();        
      }  
    }
    
//CH_AUDIO_OFF    
    
else if ( (dt1-KEY_DELTA <= KEY_CH_AUDIO_OFF) and (dt1+KEY_DELTA >=KEY_CH_AUDIO_OFF) )
    {      
      if ( (
LastKeyPressed != CH_AUDIO_OFF) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_AUDIO_OFF_DELAY)&& flag==1)      
      {        
        
digitalWrite(relePin4flag2);
         
flag 0;
         
flag2 1;
        }
         else if ( (
LastKeyPressed != CH_AUDIO_OFF) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_AUDIO_OFF_DELAY)&& flag==0)
      {       
         
digitalWrite(relePin4flag2);        
         
flag 1;
         
flag2 0;
        }        
        
LastKeyPressed CH_AUDIO_OFF;  
   
LastTimeKeyPressed TimeKeyPressed;
    
//Serial.println(CH_AUDIO_OFF);
        
releaseKey();                
      }  
    
    
//CH_PLUS
    
else if ( (dt1-KEY_DELTA <= KEY_CH_PLUS) and (dt1+KEY_DELTA >=KEY_CH_PLUS) )
    {
      if ( (
LastKeyPressed != CH_PLUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_PLUS_DELAY) )
      {
        
LastKeyPressed CH_PLUS;
        
buf[2]=CH_MINUS;
         
LastTimeKeyPressed TimeKeyPressed;
     
Serial.write(buf8);    
    
releaseKey();         
      }  
    }
    
//CH_PLUS
    
else if ( (dt1-KEY_DELTA <= KEY_CH_PLUS) and (dt1+KEY_DELTA >=KEY_CH_PLUS) )
    {
      if ( (
LastKeyPressed != CH_PLUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_PLUS_DELAY) )
      {
        
LastKeyPressed CH_PLUS;
        
buf[2]=CH_MINUS;
         
LastTimeKeyPressed TimeKeyPressed;
     
Serial.write(buf8);    
    
releaseKey();         
      }  
    }
    
//CH_PLUS
    
else if ( (dt1-KEY_DELTA <= KEY_CH_PLUS) and (dt1+KEY_DELTA >=KEY_CH_PLUS) )
    {
      if ( (
LastKeyPressed != CH_PLUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_PLUS_DELAY) )
      {
        
LastKeyPressed CH_PLUS;
        
buf[2]=CH_MINUS;
         
LastTimeKeyPressed TimeKeyPressed;
     
Serial.write(buf8);    
    
releaseKey();         
      }  
    }
    
//CH_PLUS
    
else if ( (dt1-KEY_DELTA <= KEY_CH_PLUS) and (dt1+KEY_DELTA >=KEY_CH_PLUS) )
    {
      if ( (
LastKeyPressed != CH_PLUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_PLUS_DELAY) )
      {
        
LastKeyPressed CH_PLUS;
        
buf[2]=CH_MINUS;
         
LastTimeKeyPressed TimeKeyPressed;
     
Serial.write(buf8);    
    
releaseKey();         
      }  
    }
    
//CH_PLUS
    
else if ( (dt1-KEY_DELTA <= KEY_CH_PLUS) and (dt1+KEY_DELTA >=KEY_CH_PLUS) )
    {
      if ( (
LastKeyPressed != CH_PLUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_PLUS_DELAY) )
      {
        
LastKeyPressed CH_PLUS;
        
buf[2]=CH_MINUS;
         
LastTimeKeyPressed TimeKeyPressed;
     
Serial.write(buf8);    
    
releaseKey();        
      }  
    }
  }   
}

void releaseKey() 
{
  
buf[0] = 0;
  
buf[2] = 0;
  
Serial.write(buf8);    // Release key  
}
  
void  Knopki()
{
  if (
digitalRead(ACCPin)&&!stateACC) {
    
stateACC=1;
    
duration millis();
    }
    if (!
digitalRead(ACCPin)&&stateACC) {
    
stateACC=0;
    
off millis();
        }
    if(
digitalRead(ACCPin) && stateACC && millis ()-duration ONHUB){
    
digitalWrite(relePin1HIGH);
    
relestate1 1;
    
millisold millis();
    }
    if(
digitalRead(ACCPin) && stateACC &&  millis ()-duration ONTablet){
    
digitalWrite(relePin2HIGH);
    
relestate2 1;
    
millisold millis();
    }
    if(
digitalRead(ACCPin) && stateACC &&  millis ()-duration ONAudio){
    
digitalWrite(relePin3HIGH);
    
relestate3 1;
    
millisold millis();
    }
 if(!
digitalRead(ACCPin) && !stateACC && millis () -offOFFHUB){
    
digitalWrite(relePin1LOW);
    
relestate1 0;
    
millisold millis();    
  } 
if(!
digitalRead(ACCPin) && !stateACC &&  millis () -off OFFTablet){
    
digitalWrite(relePin2LOW);
    
relestate2 0;
    
millisold millis();     
  } 
 if(!
digitalRead(ACCPin) && !stateACC &&  millis () -off OFFAudio){
    
digitalWrite(relePin3LOW);
    
relestate3 0;
    
millisold millis();     
  } 



Для таких как я, впервые сталкивающихся с программированием на arduino прошу разъяснить "что" и "как")
Имею arduino uno r3, qashqai 2013
Ардуину я прошил, залил без раскомментирования, т.е. не делал так как ты написал про переназначение, думаю, что значения кнопок у меня те же, что и у тебя)
Что не понял, что за "прошейте usb hid" это ты так заливку скетча назвал или что-то еще как-то, где-то надо шить?)
"system\usr\keylayout\Generic.kl" это я так понял, в нексусе надо править, что именно? Если есть возможность, свой файл можешь выложить или мне скинуть?
3) Не понятно, по этому "К ардуино уно подключаем минус к минусу, вывод от кнопок к A0, A0 через подтягивающий резистор(2ком) подключаем к +" вопрос куда втыкать минус (где power на плате, там несколько gnd), что за резистор, и к какому плюсу подключать опять же на плате, где power, там 3.3 и 5 в, который?
Oreshrek вне форума   Ответить с цитированием
Старый 26.03.2014, 16:52   #216
armlive
Старший Пользователь
 
Регистрация: 12.12.2013
Возраст: 43
Город: Армавир
Регион: 23, 93
Машина: Nissan Qashqai
Сообщений: 510
armlive is a glorious beacon of lightarmlive is a glorious beacon of lightarmlive is a glorious beacon of lightarmlive is a glorious beacon of lightarmlive is a glorious beacon of light
По умолчанию

Цитата:
Сообщение от Oreshrek Посмотреть сообщение
Для таких как я, впервые сталкивающихся с программированием на arduino прошу разъяснить "что" и "как")
Имею arduino uno r3, qashqai 2013
Ардуину я прошил, залил без раскомментирования, т.е. не делал так как ты написал про переназначение, думаю, что значения кнопок у меня те же, что и у тебя)
Что не понял, что за "прошейте usb hid" это ты так заливку скетча назвал или что-то еще как-то, где-то надо шить?)
"system\usr\keylayout\Generic.kl" это я так понял, в нексусе надо править, что именно? Если есть возможность, свой файл можешь выложить или мне скинуть?
3) Не понятно, по этому "К ардуино уно подключаем минус к минусу, вывод от кнопок к A0, A0 через подтягивающий резистор(2ком) подключаем к +" вопрос куда втыкать минус (где power на плате, там несколько gnd), что за резистор, и к какому плюсу подключать опять же на плате, где power, там 3.3 и 5 в, который?
Нужно делать как я написал, у меня номиналы резисторов другие.
Все файлы я скину. Резистор подключай к 5в
__________________
Nexus 7 (2013) Nissan Qashqai
armlive вне форума   Ответить с цитированием
Старый 26.03.2014, 17:13   #217
Oreshrek
Старший Пользователь
 
Регистрация: 24.02.2013
Возраст: 39
Город: Москва
Регион: 77, 97, 99, 177
Машина: Kia Optima
Сообщений: 180
Oreshrek is on a distinguished road
По умолчанию

Цитата:
Сообщение от armlive Посмотреть сообщение
Нужно делать как я написал, у меня номиналы резисторов другие.
Все файлы я скину. Резистор подключай к 5в
так, пишу, что я понял,
1) подключаю к 6пину колодки резистор на 47ом, к 16 пину, резистор на 150 ом, объединяю проводом, вставляю конец в ардуину А0, припаиваю к этому проводу резистор и вставляю в ардуину +5в, из 15 пина вставляю провод в любой gnd на ардуине.
2) Убираю слеши перед //Serial.println(dt1), заливаю через программу для ардуины получившийся скетч
3) В программе нажимаю иконку справа с лупой типа (монитор порта, как я понял), нажимаю кнопки, смотрю, как они у меня определяются.
4) Меняю в скетче значения кнопок на мои (определившиеся), заливаю готовый скетч.
Дальше, что делать?
Oreshrek вне форума   Ответить с цитированием
Старый 26.03.2014, 18:29   #218
armlive
Старший Пользователь
 
Регистрация: 12.12.2013
Возраст: 43
Город: Армавир
Регион: 23, 93
Машина: Nissan Qashqai
Сообщений: 510
armlive is a glorious beacon of lightarmlive is a glorious beacon of lightarmlive is a glorious beacon of lightarmlive is a glorious beacon of lightarmlive is a glorious beacon of light
По умолчанию

Цитата:
Сообщение от Oreshrek Посмотреть сообщение
так, пишу, что я понял,
1) подключаю к 6пину колодки резистор на 47ом, к 16 пину, резистор на 150 ом, объединяю проводом, вставляю конец в ардуину А0, припаиваю к этому проводу резистор и вставляю в ардуину +5в, из 15 пина вставляю провод в любой gnd на ардуине.
2) Убираю слеши перед //Serial.println(dt1), заливаю через программу для ардуины получившийся скетч
3) В программе нажимаю иконку справа с лупой типа (монитор порта, как я понял), нажимаю кнопки, смотрю, как они у меня определяются.
4) Меняю в скетче значения кнопок на мои (определившиеся), заливаю готовый скетч.
Дальше, что делать?
Правильно, дальше позже скину файлы и объясню
__________________
Nexus 7 (2013) Nissan Qashqai
armlive вне форума   Ответить с цитированием
Старый 26.03.2014, 19:08   #219
Oreshrek
Старший Пользователь
 
Регистрация: 24.02.2013
Возраст: 39
Город: Москва
Регион: 77, 97, 99, 177
Машина: Kia Optima
Сообщений: 180
Oreshrek is on a distinguished road
По умолчанию

Цитата:
Сообщение от armlive Посмотреть сообщение
Правильно, дальше позже скину файлы и объясню
Ок, спасибо, буду ждать)
Oreshrek вне форума   Ответить с цитированием
Старый 26.03.2014, 21:00   #220
armlive
Старший Пользователь
 
Регистрация: 12.12.2013
Возраст: 43
Город: Армавир
Регион: 23, 93
Машина: Nissan Qashqai
Сообщений: 510
armlive is a glorious beacon of lightarmlive is a glorious beacon of lightarmlive is a glorious beacon of lightarmlive is a glorious beacon of lightarmlive is a glorious beacon of light
По умолчанию

Вот почитай и потренируйся http://arduino.cc/en/Hacking/DFUProgramming8U2

Arduino-keyboard-0.3.hex Для прошивки, будет определятся как HID клавиатура, это конечный вариант.
UNO-dfu_and_usbserial_combined.hex стандартная, для UNO-dfu_and_usbserial_combined.hex.
Прикрепил файлы
Вложения
Тип файла: rar 1.rar (10.0 Кб, 462 просмотров)
__________________
Nexus 7 (2013) Nissan Qashqai
armlive вне форума   Ответить с цитированием
Ответ


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

Расширенный поиск

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

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



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


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