![]() |
|
|
#201 |
|
Старший Пользователь
![]() Регистрация: 12.12.2013
Возраст: 44
Город: Армавир
Регион: 23, 93
Машина: Nissan Qashqai
Сообщений: 510
![]() ![]() ![]() ![]() ![]() |
А действие кода на две команды пробовал прописать?
Внутри стоит, поэкспериментировать не могу, но я бы на действие кнопки к примеру сделал если нажата кнопка ALT, то отправляем и код кнопки TAB. тяжело вспомнить азы программирования, когда 15 лет этим уже не занимался Код:
LastKeyPressed = CH_TAB;
buf[0] = (код клавиши альт);
buf[2]=CH_TA)B;
LastTimeKeyPressed = TimeKeyPressed;
Serial.write(buf, 8);
releaseKey();
}
Код:
LastKeyPressed = CH_LEFT_ALT;
buf[0] = (код клавиши TAB);
buf[2]=CH_LEFT_ALT;
LastTimeKeyPressed = TimeKeyPressed;
Serial.write(buf, 8);
releaseKey();
}
Последний раз редактировалось armlive; 20.01.2014 в 23:23. |
|
|
|
|
|
#202 |
|
Новый Пользователь
![]() Регистрация: 16.01.2011
Регион: 74
Сообщений: 26
![]() |
Так пробовал. На windows 7 окна переключаются, причем ни как если с клавиатуры нажимать ALT+TAB появляется маленькое окошко с запущенными программами и там уже выбираешь нужное окно, а просто идет перебор открытых окон как на XP. Но вот андроид почему-то никак не реагирует на такую комбинацию.
|
|
|
|
|
|
#203 |
|
Старший Пользователь
![]() Регистрация: 25.03.2010
Возраст: 43
Регион: 61
Машина: FF2
Сообщений: 228
![]() ![]() ![]() ![]() ![]() |
Народ, на тему Alt+Tab не совсем верный алгоритм.
Надо не отправлять Alt+Tab постоянно, а зажать Alt и удерживая его отправлять Tab вот кусок моего кода при получении команды с ИК-пульта (требуется доп библиотека Timer.h) Код для Leonardo, но думаю можно адаптировать и под UNO Код:
boolean altTabFirstPress = HIGH; //Первое нажатие alt+tab
int altTabTimer; //Таймер ALT+TAB
....
if(событие){
if(boolean(altTabFirstPress)==HIGH){ //Если это нажатие первое
altTabTimer = timer.after(1000, resetAltTab); //Запускаем таймер (1000мс) сброса ALT+TAB
altTabFirstPress = LOW; //Сбрасываем переменную
Keyboard.press(KEY_ALT); //Нажимаем Alt
Keyboard.press(KEY_TAB); //Нажимаем Tab
Keyboard.release(KEY_TAB); //Отпускаем Alt
}
else{ //Если это нажатие НЕ первое
timer.stop(altTabTimer); //Останавливаем таймер сброса ALT+TAB
Keyboard.press(KEY_TAB); //Нажимаем Tab
Keyboard.release(KEY_TAB); //Отпускаем Tab
altTabTimer = timer.after(1000, resetAltTab); //Запускаем таймер сброса ALT+TAB снова
}
....
//отпускаем Alt+Tab
void resetAltTab (){
altTabFirstPress = HIGH; //Устанавливаем переменную
Keyboard.releaseAll(); //Отпускаем все кнопки, для UNO как я понимаю придется прописать каждую кнопку отдельно
}
__________________
Nexus in Focus |
|
|
|
|
|
#204 | |
|
Старший Пользователь
![]() Регистрация: 12.12.2013
Возраст: 44
Город: Армавир
Регион: 23, 93
Машина: Nissan Qashqai
Сообщений: 510
![]() ![]() ![]() ![]() ![]() |
Я нашел, что в андроиде есть своя одна команда для этих целей,
Цитата:
|
|
|
|
|
|
|
#205 |
|
Новый Пользователь
![]() Регистрация: 16.01.2011
Регион: 74
Сообщений: 26
![]() |
|
|
|
|
|
|
#206 |
|
Старший Пользователь
![]() Регистрация: 12.12.2013
Возраст: 44
Город: Армавир
Регион: 23, 93
Машина: Nissan Qashqai
Сообщений: 510
![]() ![]() ![]() ![]() ![]() |
|
|
|
|
|
|
#207 | |
|
Старший Пользователь
![]() Регистрация: 08.10.2013
Возраст: 43
Регион: 56
Машина: Toyota Corolla e150
Сообщений: 325
![]() ![]() ![]() ![]() |
Цитата:
|
|
|
|
|
|
|
#208 |
|
Старший Пользователь
![]() Регистрация: 08.10.2013
Возраст: 43
Регион: 56
Машина: Toyota Corolla e150
Сообщений: 325
![]() ![]() ![]() ![]() |
А кто нибудь реализовал на одной резистивной кнопке одиночное нажатие и удержание? Не поделитесь. А то никак не могу догнать как сделать(((
Вот вроде сделал, но при нажатии и удержании функция по одиночному нажатию всё равно сначала проходит. Код:
int buttonPin=6; //пин для резистивных кнопок
int data;
int flag=0;
long previousMillis = 0;
int val=0;
void setup()
{
Keyboard.begin();
Serial.begin(9600);
}
void loop()
{
data=analogRead(buttonPin); //читаем значение нажатой кнопки
Serial.println(data); //для определения кодов нажатых кнопок на мониторе порта
if (data<=900) //если нажата любая из кнопок начинается отсчёт
{
if (millis() -previousMillis >200)
{
previousMillis = millis();
val++;
//кнопка громкости +
if (data>=210 && data<=232 && flag==0 && val==1) //одиночное нажатие
{
Remote.increase(); //прибавить громкость на ед.
Remote.clear();
flag=1;
val=0;
}
if (data>=210 && data<=232 && val>=2) // удержание
{
Remote.increase(); //прибавлять громкость до отпускания
Remote.clear();
val=0;
}
//кнопка громкости -
if (data>=460 && data<=488 && flag==0 && val>=1 && val<=3) //одиночное нажатие
{
Remote.decrease(); //убавить громкость на ед.
Remote.clear();
flag=1;
val=0;
}
if (data>=460 && data<=488 && val>=4) //удержание
{
Remote.decrease(); //убавлять громкость до отпускания
Remote.clear();
val=0;
}
//кнопка следующий трек
if (data==0 && flag==0 && val==1) //одиночное нажатие
{
Remote.next(); //следующий трек
Remote.clear();
flag=1;
val=0;
}
if (data==0 && val>=2) //удержание
{
Remote.forward(); //перемотка вперёд
Remote.clear();
val=0;
}
//кнопка предидущий трек
if (data>=76 && data<=92 && flag==0 && val>=1 && val<=5) //одиночное нажатие
{
Remote.previous(); //предидущий трек
Remote.clear();
flag=1;
val=0;
}
if (data>=76 && data<=92 && val>=6) //удержание
{
Remote.rewind(); //перемотка назад
Remote.clear();
val=0;
}
//кнопка приглушения звука
if (data>=565 && data<=594 && flag==0) //нажата кнопка
{
Remote.mute();
Remote.clear();
flag=1;
val=0;
}
}
}
//не нажата не одна из кнопок
if (data>=950 && data<=960 && flag==1)
{
flag=0;
}
}
|
|
|
|
|
|
#209 | |
|
Старший Пользователь
![]() Регистрация: 17.01.2010
Возраст: 49
Город: Самара
Регион: 63, 163
Машина: Skoda Octavia A5 FL && Skoda Octavia Tour && ̶F̶F̶3̶
Сообщений: 457
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Тоже самое с Next и Fast Forward, Previous и Rewind. При удержании увеличения и уменьшения громкости, увеличивает или уменьшает громкость на 10 делений в секунду, а при коротком нажатии, менее 500 миллисекунд - увеличивает или уменьшает громкость на 1 деление. Код:
int analogPin=0;
int data;
unsigned long flag = 0;
unsigned long eventTime = 0;
void setup()
{
Keyboard.begin();
}
void loop()
{
data=analogRead(analogPin); //читаем значение нажатой кнопки
//********************** Громкость ************************************
if(data<=100 && flag == 0) // все кнопки отпущены
{
eventTime=millis();
}
if(millis()-eventTime>10 && millis()-eventTime<499 && data>=600 && data<=630 && flag == 0) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
{
Remote.increase();
flag = 5;
delay(10);
Remote.clear();
}
if(millis()-eventTime>500 && data>=600 && data<=630 && flag == 5 || data>=600 && data<=630 && flag == 3) // удержание кнопки от 500 до ∞ миллисекунд (изменяется здесь millis()-eventTime>500)
{
Remote.increase(); // действие после удержание кнопки, Увеличить громкость каждые 0,1 секунды
flag = 3;
Remote.clear();
delay(100);
}
if(millis()-eventTime>10 && millis()-eventTime<499 && data>=500 && data<=530 && flag == 0) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
{
Remote.decrease();
flag = 6;
delay(10);
Remote.clear();
}
if(millis()-eventTime>500 && data>=500 && data<=530 && flag == 6 || data>=500 && data<=530 && flag == 3) // удержание кнопки от 500 до ∞ миллисекунд (изменяется здесь millis()-eventTime>500)
{
Remote.decrease(); // действие после удержание кнопки, Уменьшить громкость каждые 0,1 секунды
flag = 3;
Remote.clear();
delay(100);
}
//********************** Play/pause и Mute ************************************
if(millis()-eventTime>10 && millis()-eventTime<499 && data>=920 && data<=960) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
{
flag = 1;
}
if(data<=100 && flag == 1) // действие после короткого нажатия кнопки, воспроизведение / пауза
{
Remote.play_pause();
flag = 0;
delay(10);
Remote.clear();
}
if(millis()-eventTime>500 && data>=920 && data<=960 && flag == 1) // удержание кнопки от 500 до ∞ миллисекунд (изменяется здесь millis()-eventTime>500)
{
Remote.mute(); // действие после удержание кнопки, приглушение звука
flag = 0;
delay(10);
Remote.clear();
}
//********************** Next и Fast Forward ************************************
if(millis()-eventTime>10 && millis()-eventTime<499 && data>=815 && data<=845) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
{
flag = 2;
}
if(data<=100 && flag == 2) // действие после короткого нажатия кнопки, Next
{
Remote.next();
flag = 0;
delay(10);
Remote.clear();
}
if(millis()-eventTime>500 && data>=815 && data<=845 && flag == 2 || data>=815 && data<=845 && flag == 3) // удержание кнопки от 500 до ∞ миллисекунд (изменяется здесь millis()-eventTime>500)
{
Remote.forward(); // действие после удержание кнопки, Fast Forward
flag = 3;
Remote.clear();
delay(100);
}
//********************** Previous и Rewind ************************************
if(millis()-eventTime>10 && millis()-eventTime<499 && data>=700 && data<=740) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
{
flag = 4;
}
if(data<=100 && flag == 4) // действие после короткого нажатия кнопки, Previous
{
Remote.previous();
flag = 0;
delay(10);
Remote.clear();
}
if(millis()-eventTime>500 && data>=700 && data<=740 && flag == 4 || data>=700 && data<=740 && flag == 3) // удержание кнопки от 500 до ∞ миллисекунд (изменяется здесь millis()-eventTime>500)
{
Remote.rewind(); // действие после удержание кнопки, Rewind
flag = 3;
Remote.clear();
delay(100);
}
if(data<=100 && flag == 3 || data<=100 && flag == 5 || data<=100 && flag == 6) // действие после отпускания кнопки
{
flag = 0;
}
}
Последний раз редактировалось lti1; 23.02.2014 в 16:36. |
|
|
|
|
|
|
#210 |
|
Старший Пользователь
![]() Регистрация: 08.10.2013
Возраст: 43
Регион: 56
Машина: Toyota Corolla e150
Сообщений: 325
![]() ![]() ![]() ![]() |
lti1 Большое спасибо!! Всё заработало как надо.
Осталось, вместо play/pause сделать AltTab. Попробую сам. И ещё. Не подскажите, существует ли команда HID переключения папок в аудиоплеере? |
|
|
|
![]() |
| Здесь присутствуют: 2 (пользователей: 0 , гостей: 2) | |
| Опции темы | Поиск в этой теме |
|
|