![]() |
|
|
#191 |
|
Новый Пользователь
![]() Регистрация: 16.01.2011
Регион: 74
Сообщений: 26
![]() |
Вот что у меня получилось.
Скетч для ардуино уно. Ардуино определяется как HID устройство. В скетче управление планшетом ресистивными кнопками и управление питанием. Код:
// Для рулевых кнопок
uint8_t buf[8] = {
0 };
// реле питания звуковой карты
#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 (1023)
#define KEY_CH_VOL_PLUS (1523)
#define KEY_CH_PAUSE (1500)
#define KEY_CH_PREV_TRACK (1500)
#define KEY_CH_FORW_TRACK (1500)
#define KEY_CH_TAB (1500)
#define KEY_CH_ESC (1500)
#define KEY_CH_AUDIO_OFF (700)
#define KEY_CH_PLUS (1500)
#define KEY_CH_MINUS (1500)
#define KEY_CH_MINUS (1500)
#define KEY_CH_MINUS (1500)
#define KEY_CH_MINUS (1500)
// Погрешность при чтении кнопок
#define KEY_DELTA (50)
// Коды кнопок, что отсылаем в порт внешней проге
#define CH_VOL_MINUS (226)
#define CH_VOL_PLUS (43)
#define CH_PAUSE (3)
#define CH_PREV_TRACK (4)
#define CH_FORW_TRACK (5)
#define CH_TAB (14)
#define CH_ESC (128)
#define CH_AUDIO_OFF (1)
#define CH_PLUS (6)
#define CH_MINUS (7)
#define CH_MINUS (8)
#define CH_MINUS (9)
#define CH_MINUS (12)
#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 duration, millisold, off = 0;
boolean stateACC, relestate1, relestate2,relestate3,relestate4 = 0;
int LastKeyPressed = NONE;
int flag = 1;
int flag2 = 0;
void setup()
{
Serial.begin(9600);
pinMode(relePin1, OUTPUT);
pinMode(relePin2, OUTPUT);
pinMode(relePin3, OUTPUT);
pinMode(relePin4, OUTPUT);
}
void loop()
{
ReadSteering();
Knopki();
delay(10);
}
// Читает рулевые кнопки и пишет в порт код нажатой кнопки
void ReadSteering()
{
pinMode(relePin4, OUTPUT);
digitalWrite(relePin4,flag );
unsigned long TimeKeyPressed;
int KeyPressed = NONE;
int dt1 = analogRead(A0);
delay(10);
int dt2 = analogRead(A0);
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.write(buf, 8);
releaseKey();
}
}
//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(buf, 8);
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(buf, 8);
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(buf, 8);
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(buf, 8);
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(buf, 8);
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(buf, 8);
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(relePin4, flag2);
flag = 0;
flag2 = 1;
}
else if ( (LastKeyPressed != CH_AUDIO_OFF) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_AUDIO_OFF_DELAY)&& flag==0)
{
digitalWrite(relePin4, flag2);
flag = 1;
flag2 = 0;
}
LastKeyPressed = CH_AUDIO_OFF;
LastTimeKeyPressed = TimeKeyPressed;
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(buf, 8);
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(buf, 8);
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(buf, 8);
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(buf, 8);
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(buf, 8);
releaseKey();
}
}
}
}
void releaseKey()
{
buf[0] = 0;
buf[2] = 0;
Serial.write(buf, 8); // 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(relePin1, HIGH);
relestate1 = 1;
millisold = millis();
}
if(digitalRead(ACCPin) && stateACC && millis ()-duration > ONTablet){
digitalWrite(relePin2, HIGH);
relestate2 = 1;
millisold = millis();
}
if(digitalRead(ACCPin) && stateACC && millis ()-duration > ONAudio){
digitalWrite(relePin3, HIGH);
relestate3 = 1;
millisold = millis();
}
if(!digitalRead(ACCPin) && !stateACC && millis () -off> OFFHUB){
digitalWrite(relePin1, LOW);
relestate1 = 0;
millisold = millis();
}
if(!digitalRead(ACCPin) && !stateACC && millis () -off > OFFTablet){
digitalWrite(relePin2, LOW);
relestate2 = 0;
millisold = millis();
}
if(!digitalRead(ACCPin) && !stateACC && millis () -off > OFFAudio){
digitalWrite(relePin3, LOW);
relestate3 = 0;
millisold = millis();
}
}
|
|
|
|
|
|
#192 |
|
Старший Пользователь
![]() Регистрация: 05.04.2013
Возраст: 51
Город: Казань
Регион: 16, 116
Машина: X-Trail T30
Сообщений: 181
![]() ![]() |
Рабочий код чтения кнопок для Arduino Leonardo и Micro - проверно на китайском Arduino Pro Micro .
выдает клавиатурные сочетания Win+A, Win+B ... Win+G удобно для настройки через быстрый запуск http://pccar.ru/showpost.php?p=279247&postcount=54 Код:
int analogPin=A0;
int data;
int myRes[7]={291,197,160,232,263, 66,113}; // значения установлены опытным путем
char myKey[7]={'a','b','c','d','e','f','g'}; //х.з. буквы какие-то
int n=7; //размер массивов выше
int i_old=n+1; //надо так (типа война с дребезгом, хотя тут его нет)
int i;
void setup()
{
// Serial.begin(9600);
pinMode(analogPin,INPUT);
digitalWrite(analogPin,HIGH);
Keyboard.begin();
}
void loop()
{
data=analogRead(analogPin);
// Serial.println(data);
for (i=0;i<n;i=i+1)
{
if(data>myRes[i]-15 && data<myRes[i]+15 && i_old!=i)
{
i_old=i;
Keyboard.press(KEY_LEFT_GUI);
Keyboard.press(myKey[i]);
delay(100);
Keyboard.releaseAll();
}
if(data>1000) { i_old=n+1; }
}
delay(50);
}
Резистивных кнопок у меня 7 шт, номиналы у них 2кОм, 4кОм ... 14кОм (хотя не суть). Опять ВАЖНО: К ардуине подключаюсь к GND и А0 (делитель самому делать не надо). P.S. Перевод выражения "подтяжка вверх" (стырено с ардуино.ру): Если вход/выход (pin) был установлен в режим вход (INPUT), то функция digitalWrite со значением HIGH будет активировать внутренний 20K нагрузочный резистор. Подача LOW в свою очередь отключает этот резистор. Нагрузочного резистра достаточно чтобы светодиод, подключенный к входу, светил тускло. Если вдруг светодиод работает, но очень тускло, возможно необходимо установить режим выход (OUTPUT) функцией pinMode().
__________________
Ровной дороги! мой проект: X-Trail T30 + Nexus7 Последний раз редактировалось timtman; 11.04.2014 в 11:30. |
|
|
|
|
|
#193 |
|
Старший Пользователь
![]() Регистрация: 22.10.2012
Регион: 78, 98
Сообщений: 758
![]() ![]() ![]() ![]() |
Вот кстати мой вариант резестивных кнопок а-ля нищеброд
__________________
В работе Китайнедожып+медиацентр на андроиде |
|
|
|
|
|
#194 | |
|
Старший Пользователь
![]() Регистрация: 13.11.2013
Возраст: 43
Город: Самара
Регион: 63, 163
Машина: Hyundai Elantra J4, Suzuki SX4
Сообщений: 632
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Только я убрал резисторы, и подпаялся к контроллеру клавиатуры. А установка - 1 в 1. (фото в подписи) ![]()
__________________
Ядра и модификации для стоковых прошивок Nexus 7 2012/2013 Lada Granta CarPC-Nettop - первый долгострой Lada Granta Nexus 2013 - в процессе... |
|
|
|
|
|
|
#195 |
|
Новый Пользователь
Регистрация: 28.08.2013
Возраст: 52
Регион: 23, 93
Сообщений: 1
![]() |
Сделал для TOYOTA резистивного руля интерфейс на Arduino UNO R3
За основу взял код отсюдаhttp://compcar.ru/forum/showthread.p...ll=1#post57800 и отсюдаhttp://atomic-cactus.com/2013/03/26/...rduino-part-1/, здесь же все подробно описано, как превратить ардуину в HID клавиатуру. Так как устройство Parrot Asteroid Smart с системой Android 2.3, то HID коды управляют напрямую только громкостью, все остальное реализовано через комбинацию кнопок SEARCH+KEY с помощью таскера и меню быстрого вызова приложений. Код:
/ Задержки между нажатиями конкретных кнопок, миллисекунды
#define KEY_CH_MINUS_DELAY (500)
#define KEY_CH_PLUS_DELAY (500)
#define KEY_VOL_MINUS_DELAY (200)
#define KEY_VOL_PLUS_DELAY (200)
#define KEY_MODE_DELAY (800)
#define VARIANT_DELAY (200) //Время работы в режиме курсора (циклов по 125 милисекунд)
#define SOURCE_DELAY (3000) //Время выбора источника звука
// Значения кнопок для резистора подпорки 3Ком
#define KEY_CH_MINUS (93)
#define KEY_CH_PLUS (20)
#define KEY_VOL_MINUS (529)
#define KEY_VOL_PLUS (256)
//#define KEY_MODE (805)
// Погрешность при чтении кнопок
#define KEY_DELTA (30)
// Номера кнопок
#define CH_MINUS (1)
#define CH_PLUS (2)
#define VOL_MINUS (3)
#define VOL_PLUS (4)
#define MODE (5)
#define NONE (0)
unsigned long LastTimeKeyPressed = millis();
unsigned long LastTimeModePressed = millis();
int LastKeyPressed = NONE;
int i=0;
boolean radio = false;
boolean LastModePressed = false;
boolean KeysPressed = false;
boolean ModePressed = false;
boolean LastMode = false;
boolean KMode = false;
boolean Variant = false;
boolean SoundSource = false;
boolean EnterPressed = false;
uint8_t buffer[8] = {
0};
boolean dirty = true;
void setup()
{
Serial.begin(9600);
pinMode(8, INPUT);
digitalWrite(8, HIGH);
}
void loop()
{
ReadSteering();
delay(75);
releaseKey();
}
// Читает рулевые кнопки и пишет в порт код нажатой кнопки
void ReadSteering()
{
unsigned long TimeKeyPressed;
int KeyPressed = NONE;
int dt1 = analogRead(0);
//Нажата кнопка MODE
ModePressed=(digitalRead(8) == LOW);
if (ModePressed and !LastMode)
{
LastTimeModePressed=millis();
}
delay(50);
int dt2 = analogRead(0);
if (abs(dt1-dt2)<=5 and dt1<900 ) //если нет дребезга и что-то есть
{
// Регистрируем время нажатия кнопки
TimeKeyPressed = millis();
//CH_MINUS
if ( (dt1-KEY_DELTA <= KEY_CH_MINUS) and (dt1+KEY_DELTA >= KEY_CH_MINUS) )
{
if ( (LastKeyPressed != CH_MINUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_MINUS_DELAY) )
{
LastKeyPressed = CH_MINUS;
KeyPressed = CH_MINUS;
LastTimeKeyPressed = TimeKeyPressed;
}
}
//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;
KeyPressed = CH_PLUS;
LastTimeKeyPressed = TimeKeyPressed;
}
}
//VOL_MINUS
else if ( (dt1-KEY_DELTA <= KEY_VOL_MINUS) and (dt1+KEY_DELTA >=KEY_VOL_MINUS) )
{
if ( (LastKeyPressed != VOL_MINUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_VOL_MINUS_DELAY) )
{
LastKeyPressed = VOL_MINUS;
KeyPressed = VOL_MINUS;
LastTimeKeyPressed = TimeKeyPressed;
}
}
//VOL_PLUS
else if ( (dt1-KEY_DELTA <= KEY_VOL_PLUS) and (dt1+KEY_DELTA >=KEY_VOL_PLUS) )
{
if ( (LastKeyPressed != VOL_PLUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_VOL_PLUS_DELAY) )
{
LastKeyPressed = VOL_PLUS;
KeyPressed = VOL_PLUS;
LastTimeKeyPressed = TimeKeyPressed;
}
}
}
KMode= (digitalRead(8) == LOW) and (ModePressed); //Нажата кнопка MODE
if (KeyPressed != NONE)
{
KeysPressed = true;
if (Variant or SoundSource) //Если режим курсора или выбор источника звука
{
switch(KeyPressed)
{
case CH_MINUS:
if (Variant)
{
sendKey(0x50,0); //влево
//Serial.println("LEFT_VARIANT");
}
else
{
sendKey(0x65,0x05); // SEARCH+b = App #2
//Serial.println("SEARCH+B_SOURCE");
SoundSource=false;
}
break;
case CH_PLUS:
if (Variant)
{
sendKey(0x4f,0); //вправо
//Serial.println("RIGHT_VARIANT");
}
else
{
sendKey(0x65,0x06); // SEARCH+c = App #3
//Serial.println("SEARCH+C_SOURCE");
SoundSource=false;
}
break;
case VOL_MINUS:
sendKey(0x51,0); //вниз
//Serial.println("DOWN");
break;
case VOL_PLUS:
sendKey(0x52,0); //вверх
//Serial.println("UP");
break;
}
}
else
{
switch(KeyPressed)
{
case CH_MINUS:
sendKey(0x65,0x13); // SEARCH+p = Previous Song
//Serial.println("SEARCH+P");
break;
case CH_PLUS:
sendKey(0x65,0x11); // SEARCH+n = Next Song
//Serial.println("SEARCH+N");
break;
case VOL_MINUS:
sendKey(0x81,0); //громкость -
//Serial.println("VOLUME-");
break;
case VOL_PLUS: //громкость +
sendKey(0x80,0);
//Serial.println("VOLUME+");
break;
}
}
}
else //Если небыло нажато кнопок, то проверяем, отпускалась ли кнопка MODE и до этого не сней нажимались кнопки
{
if (LastMode and !KMode)
{
if (abs(millis()-LastTimeModePressed) < KEY_MODE_DELAY)
{
//Serial.println("time<KEY_MODE_DELAY");
if (Variant or SoundSource)
{
if (SoundSource and !KeysPressed)
{
sendKey(0x0029,0); //Esc
//Serial.println("ESC_SOURCE");
}
else
{
sendKey(0x28,0); //Enter
//Serial.println("ENTER_SOURCE");
EnterPressed=true;
}
SoundSource=false;
}
else
{
sendKey(0x65,0x04); // SEARCH+a = Music App #1
//Serial.println("SEARCH+A_SOURCE_TRUE");
SoundSource=true;
KeysPressed = false;
}
}
else
{
Variant=!Variant;
if (Variant)
{
sendKey(0x003a,0); //Menu
//Serial.println("MENU");
EnterPressed=false;
}
else
{
//Если небыла нажата кнопка ENTER
if (!EnterPressed)
{
sendKey(0x0029,0); //Esc
//Serial.println("ESC");
}
}
}
}
else //Если не нажимались вообще никакие кнопки
{
if (Variant) //Если кнопки долго не нажимались, то возвращаемся в режим управления музыкой
{ // Ставим все значения как при старте
i=i+1;
if (i>VARIANT_DELAY)
{
LastModePressed = false;
ModePressed = false;
LastMode = false;
KMode = false;
Variant = false;
SoundSource = false;
EnterPressed = false;
KeysPressed = false;
LastTimeKeyPressed = millis();
LastTimeModePressed = millis();
//Serial.println("---RESET SETTINGS--");
i=0;
}
}
else
{
if ( SoundSource and (abs(millis()-LastTimeModePressed) > SOURCE_DELAY))
{
if (KeysPressed) //Если нажимался курсор, то через время нажмется ENTER
{
sendKey(0x28,0); //Enter
//Serial.println("ENTER_SOURCE");
}
else //Иначе возврат
{
sendKey(0x0029,0); //Esc
//Serial.println("ESC_SOURCE");
}
SoundSource=false;
}
}
}
}
LastMode=KMode;
}
void sendKey(int code, int code2) {
buffer[2] = code;
buffer[3] = code2;
Serial.write(buffer, 8);
dirty = true;
}
void releaseKey() {
if (dirty) {
buffer[0] = 0;
buffer[2] = 0;
buffer[3] = 0;
Serial.write(buffer, 8);
dirty = false;
}
}
|
|
|
|
|
|
#196 | |
|
Старший Пользователь
![]() Регистрация: 12.12.2013
Возраст: 44
Город: Армавир
Регион: 23, 93
Машина: Nissan Qashqai
Сообщений: 510
![]() ![]() ![]() ![]() ![]() |
ilya174,
Цитата:
PHP код:
Может кто знает? И так, методом подбора узнал все коды кнопок, но мультимедию не нашел. Назначил некоторые коды неиспользуемых кнопок и переназначил их в файле планшета. Позже выложу и разжую Последний раз редактировалось armlive; 19.01.2014 в 20:16. |
|
|
|
|
|
|
#197 |
|
Старший Пользователь
![]() Регистрация: 12.12.2013
Возраст: 44
Город: Армавир
Регион: 23, 93
Машина: Nissan Qashqai
Сообщений: 510
![]() ![]() ![]() ![]() ![]() |
Вот рабочий вариант ардуино уно r3 , с управлением по питанию.
Код взят у ilya174, основа и настроен под кашкай. У кашкая по три кнопки на каждом выводе, соединяем их резисторами(разные номиналы обязательно) и делаем один вывод от шести полученных кнопок и общий минус. К ардуино уно подключаем минус к минусу, вывод от кнопок к A0, A0 через подтягивающий резистор(2ком) подключаем к + Раскомментируйте //Serial.println(dt1); и залейте скетч. Считайте свои значения в мониторе и установите для каждой кнопки и залейте скетч. Дальше прошейте USB HID и почти готово. Открываем "system\usr\keylayout\Generic.kl" (сделайте обязательно копию оригинала) и правим под себя. Ни клавиатура, ни кнопки не страдают. PHP код:
Последний раз редактировалось armlive; 29.03.2014 в 23:15. |
|
|
|
|
|
#198 | |
|
Новый Пользователь
![]() Регистрация: 16.01.2011
Регион: 74
Сообщений: 26
![]() |
Цитата:
Мультимедиа кнопки также переназначал в планшете. Есть еще прога для переназначения кнопок и запуска приложений по кнопке (если нужно могу поискать). Единственное, что у меня не получилось это реализовать комбинацию клавиш (ALT+TAB), может кто подскажет как это сделать? |
|
|
|
|
|
|
#199 |
|
Пользователь
![]() Регистрация: 22.01.2013
Город: Москва
Регион: 77, 97, 99, 177
Машина: Renault Duster
Сообщений: 38
![]() |
|
|
|
|
|
|
#200 |
|
Новый Пользователь
![]() Регистрация: 16.01.2011
Регион: 74
Сообщений: 26
![]() |
|
|
|
|
![]() |
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
| Опции темы | Поиск в этой теме |
|
|