Вложений: 13
	
	
		Управление рулевыми кнопками при помощи Carduino.
	
	
		Софт написан для Arduino v.7 
Выкладываю программу для управления компьютером рулевыми кнопками. Можно сделать резистивную клавиатуру и тоже ее использовать совмесно с Arduino. Программа легко одним нажатием настраивается на любые комбинации клавиш , также настраивается на расширенные мультимедийные клавиши(проверил лично) . Тому у кого нет мультимедийных клавиш на клавиатуре могут прописать в ручную в файле config.txt, например регулировка громкости в виндовс использует сканкод мультимедийных клавиши (уменьшить это код -174, увеличить это код-175)
Список горячих клавиш для Centrafuse
 
 
Сначала настраиваем на рулевые кнопки горячие клавиши запустив файл KeyConfig.exe, нажимать клавиши на клавиатуре нужно последовательно и по очереди. Набрав нужную комбинацию нажмите кнопку на руле и потом кнопку Добавить. Таким образом можно добавлять до 100 комбинаций и больше. После того как вы назначили все нужные вам кнопки. Нажмите кнопку Сохранить и выйдите из программы.
Теперь ставим в автозагрузку программу HotKey.exe и пользуемся.
 
Код для Arduino Nano v.7 работающий с одним нажатием: 
	PHP код:
	
//http://compcar.ru  
#define PIN 5  //номер аналогового порта 
#define LIMIT 5 //предел погрешности сопротивления 
byte bytes[2];  
int res_dt1, res_d; 
unsigned long math_time,old_time,real_time;  
void setup()       
{      
Serial.begin(115200); // настроить скорость com порта       
}  
void loop()      
{    
  res_d = analogRead(PIN); // прочитать данные АЦП
  delay(30);
  res_dt1 = analogRead(PIN); // прочитать данные АЦП 
        old_time = millis(); 
        math_time = 0;  
        while(math_time < 300 && (res_dt1 > res_d-LIMIT && res_dt1 < res_d+LIMIT )) 
          { 
             real_time = millis();             //получить реальное время  
             math_time = real_time - old_time; //считаем длительность нажатия
            res_dt1 = analogRead(PIN); // прочитать данные АЦП    
          } 
    
    if( math_time > 50)  //если нет дребезга то короткое нажатие
      {  
        bytes[0] = res_d & 255;          // преобразовать в 2-байта   
        bytes[1] = (res_d & 768) >> 8;   
        Serial.write( bytes,2); // отправить прочитаное значение компьютеру       
      }    
} 
 
Код для Arduino, работает с длинным и коротким нажатием.
	PHP код:
	
//http://compcar.ru  
#define PIN 5  //номер аналогового порта 
#define LIMIT 6 //предел погрешности сопротивления 
byte bytes[2];  
int res_dt1; 
byte idx=0; 
unsigned long math_time,old_time,real_time; 
void setup()       
{      
Serial.begin(115200); // настроить скорость com порта       
}   
void loop()       
{   
  old_time = real_time; 
  math_time = 0;  
  res_dt1 = analogRead(PIN); // прочитать данные АЦП    
        while(math_time < 500 && analogRead(PIN)>res_dt1-LIMIT && analogRead(PIN) < res_dt1+LIMIT && res_dt1 != 1023) 
          { 
             real_time = millis();             //получить реальное время  
             math_time = real_time - old_time; //считаем длительность паузы 
          } 
    
         if(math_time > 30 && res_dt1 != 1023)  //если нет дребезга 
         {  
           if (idx==1 && math_time < 500){ res_dt1 = 1023; idx=0; }  
           else if(math_time > 499){ res_dt1 |= 1024; idx=1; } 
               
            bytes[0] = res_dt1 & 255;        // преобразовать в 2-байта   
            bytes[1] = (res_dt1 & 1792) >> 8; 
            Serial.write( bytes,2);         // отправить прочитаное значение компьютеру   
          } else idx=0;  
} 
 
	 
	
	
	
		Re: Управление рулевыми кнопками при помощи Carduino.
	
	
		А как подключить кнопки с руля к Arduino?
	 
	
	
	
		Re: Управление рулевыми кнопками при помощи Carduino.
	
	
		Прочти первый пост внимательней , там написано.
	 
	
	
	
		Re: Управление рулевыми кнопками при помощи Carduino.
	
	
		на autohotkey будет ли подерживатся?
	 
	
	
	
		Re: Управление рулевыми кнопками при помощи Carduino.
	
	
		Я с autohotkey не разбирался , а для чего если прога есть настраиваешь свои клавиши и все
	 
	
	
	
		Re: Управление рулевыми кнопками при помощи Carduino.
	
	
		Мне надо что бы она работала с окнами приложения, например если запущено окно приложения и оно не активно, делала его активным и нажимала в нём нужную кнопку.
	 
	
	
	
		Re: Управление рулевыми кнопками при помощи Carduino.
	
	
		Откуда программе знать какому приложению ты посылаешь нажатия?
Для этого нужно переписывать программу.
	 
	
	
	
		Re: Управление рулевыми кнопками при помощи Carduino.
	
	
		ну вот если бы она была совместима с автохоткей то тогда бы можно было научить. Мб есть вариант прикрутить его к драйверу джойстика?
	 
	
	
	
		Re: Управление рулевыми кнопками при помощи Carduino.
	
	
		А что имеется ввиду про совместимость с  автохоткей ?
Опиши задачу .
	 
	
	
	
		Re: Управление рулевыми кнопками при помощи Carduino.
	
	
		
	Цитата:
	
		
		
			
				Сообщение от 
Chip
				 
			А что имеется ввиду про совместимость с  автохоткей ?
Опиши задачу .
			
		
	 
 Под совместимостью я подразумевают что бы можно было данный девайс индефицировать в скрипте autohotkeya, получать от него координаты, имя устройства и т.д. то что понадобится, а далее прикручивать скриптовым языком к чему либо. Например как дела обстоят с микрухой от джойстика, когда она подсоединена к усб и настроена. По этому линку лежат 2 скрипта для автохоткей, первый это для настройки кнопок и индификации, а второй для узнавания координат по осям. Вот это я имел ввиду есть ли возможно как-то прикрутить данный девайс к драйверу джойстика, или каким нибудь другим способом что бы оно распознавалось автохоткеим.