-
Вложений: 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 скрипта для автохоткей, первый это для настройки кнопок и индификации, а второй для узнавания координат по осям. Вот это я имел ввиду есть ли возможно как-то прикрутить данный девайс к драйверу джойстика, или каким нибудь другим способом что бы оно распознавалось автохоткеим.
-
Re: Управление рулевыми кнопками при помощи Carduino.
Chip - респект за программу :) А количество кнопок можно увеличить? А то катастрофически нужно 14 шт.
-
Re: Управление рулевыми кнопками при помощи Carduino.
Прогу переделываю потихоньку, в новой версии можно будет назначать до 100 кнопок через программу, а в в текущей версии можно хоть 40 кнопок назначить, только в ручную прописывать в файле config.txt
Ивините за временное неудобство
-
Re: Управление рулевыми кнопками при помощи Carduino.
-
Re: Управление рулевыми кнопками при помощи Carduino.
Потихоньку начал переделывать программу, визуальной частью пока не занимаюсь, делаю программу удобной в использовании(юзабильной).
Что переделал:
Интерфейс стал намного удобнее и понятнее
Для конфигурирования число горячих клавиш не ограничено(ограничен возможностью АЦП)
Добавились звуковые эффекты
Программу можно посадить в трей нажав кнопку минимизация
Следующий этап скрестить конфигурацию и программу hotkey в один флакон.
Хотел бы поинтересоватся стоит ли так делать?
Скачать новую версию программы
http://www.compcar.ru/forum/attachme...4&d=1253162092
-
Re: Управление рулевыми кнопками при помощи Carduino.
Цитата:
Сообщение от
ghostic
Под совместимостью я подразумевают что бы можно было данный девайс индефицировать в скрипте autohotkeya, получать от него координаты, имя устройства и т.д. то что понадобится, а далее прикручивать скриптовым языком к чему либо. Например как дела обстоят с микрухой от джойстика, когда она подсоединена к усб и настроена. По этому
линку лежат 2 скрипта для автохоткей, первый это для настройки кнопок и индификации, а второй для узнавания координат по осям. Вот это я имел ввиду есть ли возможно как-то прикрутить данный девайс к драйверу джойстика, или каким нибудь другим способом что бы оно распознавалось автохоткеим.
Для чего ? В программе это у все реализовано и намного удобнее чем в autohotkey
-
Re: Управление рулевыми кнопками при помощи Carduino.
Очередное обновление, тестируем.
Увеличено разрешение (шаг сопротивления), теперь измерение производится с шагом примерно 1ом . Добавлена погрешность измерения в пределах 10ом +5ом -5ом, это значит кнопки можно назначать с шагом 11ом (всего 93 кнопки)
Теперь управляющая программа садится в трей , можно настраивать на любые клавиши которые есть на вашей клавиатуре, в том числе и мультимедийные клавиши. Еще хотелось бы услышать ваши пожелания .
Что бы вам еще хотелось добавить? Управление какими устройствами , задержку на включение камеры з.х. и т.д.
Следующая версия будет поддерживать работу с Энкодером
-
Re: Управление рулевыми кнопками при помощи Carduino.
Цитата:
Сообщение от
Chip
Для чего ? В программе это у все реализовано и намного удобнее чем в autohotkey
т.е. вы хотите сказать что можно с помощью вашего ПО и железяки указывать комбинацию клавиш или клавишу на активное или не активное окно? Если ДА, то хорошо, а если НЕТ, то хотелось бы видеть в ПО данную фитчу.
-
Re: Управление рулевыми кнопками при помощи Carduino.
Эмуляция нажатий любых клавиш или их комбинаций , передаются любому активному окну.
-
Re: Управление рулевыми кнопками при помощи Carduino.
Цитата:
Сообщение от
Chip
Эмуляция нажатий любых клавиш или их комбинаций , передаются любому активному окну.
Значит еще не всё реализовано.
-
Re: Управление рулевыми кнопками при помощи Carduino.
Как это не все?
Все требуется пользователю реализовано.
-
Re: Управление рулевыми кнопками при помощи Carduino.
Я как пользователь для меня данное ПО пригодится только для регулировки звука, а остальные кнопочки будут отдыхать, ибо оно не умеет нажимать в неактивные окна и делать их активными или нажимать и оставлять их неактивными.
-
Re: Управление рулевыми кнопками при помощи Carduino.
Стандартная клавиатура тоже не умеет передавать нажатия не активным приложениям, но почему то ни у кого не возникает вопросов.
Для меня не проблема добавить функцию отпрвки сообщений всем окнам. Просто ты пока один кому это нужно.
-
Re: Управление рулевыми кнопками при помощи Carduino.
Да хотелось бы такую функцию видеть, но отправка сообщения всем окнам это жестковато. :) Можно же наверно сделать поиск нужно окна который вбит в конфиг, если ПО в конфиге найдет нужное имя окна то отправка ему сообщения о нажатие клавиши.
-
Re: Управление рулевыми кнопками при помощи Carduino.
Тогда можно только для AHK отправлять
-
Re: Управление рулевыми кнопками при помощи Carduino.
Напиши имя окна у AHK, сейчас нет проги под рукой посмотреть.
-
Re: Управление рулевыми кнопками при помощи Carduino.
(Имя окна "Панель управления AVerTV" его ahk class "AVerTVApp" Кст а можно ли взглянуть на исх ПО и на каком языке они написаны?
-
Re: Управление рулевыми кнопками при помощи Carduino.
Цитата:
Сообщение от
ghostic
Да хотелось бы такую функцию видеть, но отправка сообщения всем окнам это жестковато. :) Можно же наверно сделать поиск нужно окна который вбит в конфиг, если ПО в конфиге найдет нужное имя окна то отправка ему сообщения о нажатие клавиши.
Настрой на одну из кнопок пульта функцию переключения между открытими приложениями ALT+TAB и активируй то окно какое тебе надо.
-
Re: Управление рулевыми кнопками при помощи Carduino.
А такое можно добавить? :)
Цитата:
При появлении +12в. нажимается любая введенная комбинация кнопок, при пропадании любая другая комбинация.
-
Re: Управление рулевыми кнопками при помощи Carduino.
+12В НА ВХОД Ардуино подавить?
-
Re: Управление рулевыми кнопками при помощи Carduino.
Цитата:
Сообщение от
Chip
+12В НА ВХОД Ардуино подавить?
Через резистор.
Возможно будет автоматом включать плагин камеры в Centrafuse.
-
Re: Управление рулевыми кнопками при помощи Carduino.
Думал реализовать это , но в последнее время времени не хватает.
Сделаю по позже.
-
Re: Управление рулевыми кнопками при помощи Carduino.
Чип вот я собрал пультик из старого джойстика сони
RMX4S
http://www.telekom.com.pl/sony/images/RM-X4S_1.jpg
Так там сопротивление немного плавает на некоторых кнопках, надо сильно давить чтоб было стабильно.
Можно и добавить в программу чтоб она понимала диапазоны, в конфиг даже если ручками писать.
например:<46>Key1=80 />
a сделать <40-50>Key1=80 />
-
Re: Управление рулевыми кнопками при помощи Carduino.
Сделаю чуть позже , а какое максимальное и минимальное сопротивление пульта?
У программмы есть диапозон плюс минус 5 , выглядит вот так 35<-40->45
-
Re: Управление рулевыми кнопками при помощи Carduino.
большинство укладываются в +-5 но есть 1 или две капризные которые приходится давить чтоб уложиться, хотя конечно может разобрать почистить
-
Re: Управление рулевыми кнопками при помощи Carduino.
Залил обновленую версию программы.
Теперь можно регулировать пределы срабатывания.
Если например вы выбрали значение 10 то значит предел срабатывания будет лежать в пределах 10 едениц как меньшую так и в большую сторону. Для добавления значения в конфиг кликните по измененной вами цифре .
-
Re: Управление рулевыми кнопками при помощи Carduino.
Обновил программу в шапке.
Теперь программа работает и с поворотным энкодером
-
Re: Управление рулевыми кнопками при помощи Carduino.
Здрвствуйте, спасибо за столь полезную программулину для кар пс!
Есть несколько пожеланий если у вас будет время для обновления программы!
1. Добавить функцию удержания кнопок, (для выборочных кнопок , например сделать в вашем скетче поле выбора с удержанием или без)
2. Функция кнопки MODE
у меня в скрипте под AHK это выглядело так
1:
if (joyz >= JKey_PREV_min) and (joyz <= JKey_PREV_max)
{
timer:=timer+1
if (timer = 15)
{
send, ^+3 ; УДЕРЖАИЕ PREV
}
return
}
SetTimer, PREV_T, off ; Stop monitoring the button.
if (timer < 15)
{
send, ^+4 ; КОРОТКИЙ PREV
}
timer=0
2. ;-----------------------
MODE_T:
if (joyz >= JKey_MODE_min) and (joyz <= JKey_MODE_max)
{
timer:=timer+1
if (timer = 15)
{
send, ^+5 ; УДЕРЖАИЕ MODE
}
return
}
SetTimer, MODE_T, off ; Stop monitoring the button.
if (timer < 15)
{
if (mode_b = 1)
{
send, ^+9 ; Первое нажатие МОДЕ
}
else
{
send, ^+0 ; Втрое нажатие моде
}
}
timer=0
mode_b:=mode_b-1
mode_b:=ABS(mode_b)
return
тоесть кнопка мод имеет 3 назначения
при первом нажатии посылает одну первую комбинацию клавишь при втором другую и так по круга, а при удержании еще одну ( в центрифуге очень удобно радио-плейлис, и при удержании навигация!
-
Re: Управление рулевыми кнопками при помощи Carduino.
А энкодеры с нажатием не появятся в кармониторе?
-
Re: Управление рулевыми кнопками при помощи Carduino.
Есть но дорогие. 200руб.
Их и выкладывать не стали потому как дорого купили
-
Re: Управление рулевыми кнопками при помощи Carduino.
Код подправлю под короткое нажатие и нажатие с удержанием