Софт написан для 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;
}