24.11.2013, 00:06 | #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(); } } |
02.12.2013, 15:05 | #192 |
Старший Пользователь
Регистрация: 05.04.2013
Возраст: 50
Город: Казань
Регион: 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. |
22.12.2013, 17:47 | #193 |
Старший Пользователь
Регистрация: 22.10.2012
Регион: 78, 98
Сообщений: 758
|
Вот кстати мой вариант резестивных кнопок а-ля нищеброд
__________________
В работе Китайнедожып+медиацентр на андроиде |
24.12.2013, 10:14 | #194 | |
Старший Пользователь
Регистрация: 13.11.2013
Возраст: 42
Город: Самара
Регион: 63, 163
Машина: Hyundai Elantra J4, Suzuki SX4
Сообщений: 632
|
Цитата:
Только я убрал резисторы, и подпаялся к контроллеру клавиатуры. А установка - 1 в 1. (фото в подписи)
__________________
Ядра и модификации для стоковых прошивок Nexus 7 2012/2013 Lada Granta CarPC-Nettop - первый долгострой Lada Granta Nexus 2013 - в процессе... |
|
11.01.2014, 23:42 | #195 |
Новый Пользователь
Регистрация: 28.08.2013
Возраст: 51
Регион: 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; } } |
18.01.2014, 17:14 | #196 | |
Старший Пользователь
Регистрация: 12.12.2013
Возраст: 43
Город: Армавир
Регион: 23, 93
Машина: Nissan Qashqai
Сообщений: 510
|
ilya174,
Цитата:
PHP код:
Может кто знает? И так, методом подбора узнал все коды кнопок, но мультимедию не нашел. Назначил некоторые коды неиспользуемых кнопок и переназначил их в файле планшета. Позже выложу и разжую Последний раз редактировалось armlive; 19.01.2014 в 20:16. |
|
19.01.2014, 20:47 | #197 |
Старший Пользователь
Регистрация: 12.12.2013
Возраст: 43
Город: Армавир
Регион: 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. |
20.01.2014, 09:34 | #198 | |
Новый Пользователь
Регистрация: 16.01.2011
Регион: 74
Сообщений: 26
|
Цитата:
Мультимедиа кнопки также переназначал в планшете. Есть еще прога для переназначения кнопок и запуска приложений по кнопке (если нужно могу поискать). Единственное, что у меня не получилось это реализовать комбинацию клавиш (ALT+TAB), может кто подскажет как это сделать? |
|
20.01.2014, 13:27 | #199 |
Пользователь
Регистрация: 22.01.2013
Город: Москва
Регион: 77, 97, 99, 177
Машина: Renault Duster
Сообщений: 38
|
|
20.01.2014, 22:20 | #200 |
Новый Пользователь
Регистрация: 16.01.2011
Регион: 74
Сообщений: 26
|
|
Здесь присутствуют: 4 (пользователей: 0 , гостей: 4) | |
|
|