Посмотрел видео.
Понял в чем проблема, с этой древней версией HotKey не будет работать
Скачайте последнюю версию HotKey
Последний раз редактировалось Chip; 18.03.2014 в 12:41.
Приветствую, камрады!
Очень нужен ваш совет.
Сделал контроллер для рулевых кнопок на основе МК attiny85 с использованием софтового эмулятора vusb. Контроллер теперь прикидывается hid-устройством - обычной клавиатурой. Каждая кнопка на руле описывается прямо в прошивке скан-кодом клавиши или комбинации клавиш. Например: рулевая кнопка Mode - это Alt+Tab и т.п.
Работает это все вполне неплохо, но есть один минус: переназначить действия для кнопок можно лишь перезалив прошивку в МК. Вопрос: как бы можно было менять привязку кнопок с помощью софта на самом Carpc?
спасибо огромаднейшее. всё работает как нужно.почти счастлив...
почти,потому что нужно 5 кнопок на реле повесить...
вот этот код от старой программы,он и хоткей и с реле робил.но он на новой хоткей не работает.#define PIN 5 //номер аналогового порта
#define LIMIT 6 //предел погрешности сопротивления
byte bytes[2];
int res_dt1;
unsigned long math_time,old_time,real_time;
void setup()
{
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
Serial.begin(115200); // настроить скорость com порта
}
void loop()
{
old_time = real_time;
math_time = 0;
res_dt1 = analogRead(PIN); // прочитать данные АЦП
while(math_time < 300 && (analogRead(PIN)>res_dt1-LIMIT && analogRead(PIN) < res_dt1+LIMIT ))
{
real_time = millis(); //получить реальное время
math_time = real_time - old_time; //считаем длительность паузы
}
if( math_time > 80 ) //если нет дребезга
{
if (res_dt1>675 && res_dt1<685) digitalWrite(2,LOW );
delay(30);
digitalWrite(2, HIGH);
if (res_dt1>105 && res_dt1<115) digitalWrite(3,LOW );
if (res_dt1>1020 && res_dt1<1030)digitalWrite(3, HIGH);
if (res_dt1>25 && res_dt1<35) digitalWrite(4,LOW );
if (res_dt1>1020 && res_dt1<1030)digitalWrite(4, HIGH);
bytes[0] = res_dt1 & 255; // преобразовать в 2-байта
bytes[1] = (res_dt1 & 768) >> 8;
Serial.write( bytes,2); // отправить прочитаное значение компьютеру
}
}
новый скетчотлично управляет компом,при этом CF плагин своей ардуиной тоже хорошо управляет.//http://compcar.ru
#define PIN 5 //номер аналогового порта
#define LIMIT 10 //предел погрешности при дребезге
byte bytes[4];
unsigned long math_time,old_time,real_time, res_dt1, res_d;
void setup()
{
Serial.begin(115200);
}
void loop()
{
res_d = analogRead(PIN);
if( res_d < LIMIT) res_d = LIMIT;
delay(10);
res_dt1 = analogRead(PIN);
old_time = millis();
math_time = 0;
while(math_time < 200)
{
real_time = millis();
math_time = real_time - old_time;
res_dt1 = analogRead(PIN);
if(res_dt1 < res_d-LIMIT || res_dt1 > res_d+LIMIT)break;
}
if( math_time > 70)
{
bytes[0] = res_d & 0xFF; // преобразовать в 4-байта
bytes[1] = (res_d & 0xFF00) >> 8;
bytes[2] = (res_d & 0xFF0000) >> 16;
bytes[3] = (res_d & 0xFF000000) >> 24;
Serial.write( bytes,4); // отправить прочитаное значение компьютеру
}
}
но подскажите знающие,остался один шаг.
что прописать в скетче что бы 5 кнопок были и на реле..,как в верхенм скотче.сам в этом не понимаю.
Нужно значения всех Ваших кнопок прописать в условиях
если повторять с предыдущего,то так. правильно?//http://compcar.ru
#define PIN 5 //номер аналогового порта
#define LIMIT 10 //предел погрешности при дребезге
byte bytes[4];
unsigned long math_time,old_time,real_time, res_dt1, res_d;
void setup()
{
Serial.begin(115200);
}
void loop()
{
res_d = analogRead(PIN);
if( res_d < LIMIT) res_d = LIMIT;
delay(10);
res_dt1 = analogRead(PIN);
old_time = millis();
math_time = 0;
while(math_time < 200)
{
real_time = millis();
math_time = real_time - old_time;
res_dt1 = analogRead(PIN);
if(res_dt1 < res_d-LIMIT || res_dt1 > res_d+LIMIT)break;
}
if( math_time > 70)
{
if (res_dt1>675 && res_dt1<685) digitalWrite(2,LOW );
delay(30);
digitalWrite(2, HIGH);
if (res_dt1>105 && res_dt1<115) digitalWrite(3,LOW );
if (res_dt1>1020 && res_dt1<1030)digitalWrite(3, HIGH);
if (res_dt1>25 && res_dt1<35) digitalWrite(4,LOW );
if (res_dt1>1020 && res_dt1<1030)digitalWrite(4, HIGH);
bytes[0] = res_d & 0xFF; // преобразовать в 4-байта
bytes[1] = (res_d & 0xFF00) >> 8;
bytes[2] = (res_d & 0xFF0000) >> 16;
bytes[3] = (res_d & 0xFF000000) >> 24;
Serial.write( bytes,4); // отправить прочитаное значение компьютеру
}
}
Да, только если значения нажатий правильные.
еще забыл момент,без него не робит....//http://compcar.ru
#define PIN 5 //номер аналогового порта
#define LIMIT 10 //предел погрешности при дребезге
byte bytes[4];
unsigned long math_time,old_time,real_time, res_dt1, res_d;
void setup()
{
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
Serial.begin(115200);
}
void loop()
{
res_d = analogRead(PIN);
if( res_d < LIMIT) res_d = LIMIT;
delay(10);
res_dt1 = analogRead(PIN);
old_time = millis();
math_time = 0;
while(math_time < 200)
{
real_time = millis();
math_time = real_time - old_time;
res_dt1 = analogRead(PIN);
if(res_dt1 < res_d-LIMIT || res_dt1 > res_d+LIMIT)break;
}
if( math_time > 70)
{
if (res_dt1>675 && res_dt1<685) digitalWrite(2,LOW );
delay(30);
digitalWrite(2, HIGH);
if (res_dt1>105 && res_dt1<115) digitalWrite(3,LOW );
if (res_dt1>1020 && res_dt1<1030)digitalWrite(3, HIGH);
if (res_dt1>25 && res_dt1<35) digitalWrite(4,LOW );
if (res_dt1>1020 && res_dt1<1030)digitalWrite(4, HIGH);
bytes[0] = res_d & 0xFF; // преобразовать в 4-байта
bytes[1] = (res_d & 0xFF00) >> 8;
bytes[2] = (res_d & 0xFF0000) >> 16;
bytes[3] = (res_d & 0xFF000000) >> 24;
Serial.write( bytes,4); // отправить прочитаное значение компьютеру
}
}
Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)