Показать сообщение отдельно
Старый 29.01.2015, 19:00   #301
demtro
Старший Пользователь
 
Регистрация: 17.12.2014
Возраст: 32
Город: Самара
Регион: 63, 163
Машина: Lifan Solano
Сообщений: 184
demtro is on a distinguished road
По умолчанию

Ребят проблемка есть, заливаю вот этот скетч:
Цитата:
int analogPin=0; //пин для подключения кнопок
int data;
unsigned long flag = 0;
unsigned long eventTime = 0;
unsigned long pauseMillis = 0;

void setup()
{
Keyboard.begin();
}

void loop()
{
data=analogRead(analogPin); //читаем значение нажатой кнопки

//********************** Громкость ************************************

if(data>=1023 && flag == 0) // все кнопки отпущены
{
eventTime=millis();
}

if(millis()-eventTime>10 && millis()-eventTime<499 && data>=884 && data<=904 && flag == 0) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
{
Remote.increase();
flag = 5;
delay(10);
Remote.clear();
}

if(millis()-eventTime>500 && data>=884 && data<=904 && flag == 5 || data>=210 && data<=230 && flag == 3) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
{
Remote.increase(); // действие после удержание кнопки, Увеличить громкость каждые 0,1 секунды
flag = 3;
Remote.clear();
delay(100);
}

if(millis()-eventTime>10 && millis()-eventTime<499 && data>=824 && data<=844 && flag == 0) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
{
Remote.decrease();
flag = 6;
delay(10);
Remote.clear();
}

if(millis()-eventTime>500 && data>=824 && data<=844 && flag == 6 || data>=457 && data<=477 && flag == 3) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
{
Remote.decrease(); // действие после удержание кнопки, Уменьшить громкость каждые 0,1 секунды
flag = 3;
Remote.clear();
delay(100);
}

//********************** AltTab + Ещё что то ************************************

if(millis()-eventTime>10 && millis()-eventTime<499 && data>=462 && data<=482) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
{
flag = 1;
}

if(data>=1023 && flag == 1 && pauseMillis == 0) // действие после короткого нажатия кнопки, Alt+Tab
{
Keyboard.press(KEY_LEFT_ALT);
Keyboard.press(KEY_TAB);
Keyboard.release(KEY_TAB);
Keyboard.press(KEY_TAB);
Keyboard.release(KEY_TAB);
flag = 0;
pauseMillis = millis();
}

if(data>=1023 && flag == 1 && pauseMillis != 0) // действие после короткого повторного нажатия кнопки, Alt+Tab
{
Keyboard.press(KEY_TAB);
Keyboard.release(KEY_TAB);
flag = 0;
pauseMillis = millis();
}

if(pauseMillis && millis()-pauseMillis >= 800 && data>=1023) // && flag == 7 && data>=950)
{
flag = 0;
pauseMillis = 0;
Keyboard.releaseAll();
}

if(millis()-eventTime>500 && data>=567 && data<=587 && flag == 1) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
{
//Remote.play_pause(); // действие после удержание кнопки, Ещё что то
flag = 0;
//delay(10);
//Remote.clear();
}
//********************** Next и Fast Forward ************************************

if(millis()-eventTime>10 && millis()-eventTime<499 && data>=572 && data<=582) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
{
flag = 2;
}

if(data>=1023 && flag == 2) // действие после короткого нажатия кнопки, Next
{
Remote.next();
flag = 0;
delay(10);
Remote.clear();
}

if(millis()-eventTime>500 && data>=572 && data<=582 && flag == 2 || data>=0 && data<=10 && 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>=671 && data<=691) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
{
flag = 4;
}

if(data>=1023 && flag == 4) // действие после короткого нажатия кнопки, Previous
{
Remote.previous();
flag = 0;
delay(10);
Remote.clear();
}

if(millis()-eventTime>500 && data>=671 && data<=691 && flag == 4 || data>=74 && data<=94 && flag == 3) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
{
Remote.rewind(); // действие после удержание кнопки, Rewind
flag = 3;
Remote.clear();
delay(100);
}

//********************** Play/pause + Ещё что то ************************************

if(millis()-eventTime>10 && millis()-eventTime<499 && data>=165 && data<=185) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
{
flag = 7;
}

if(data>=1023 && flag == 7) // действие после короткого нажатия кнопки, воспроизведение / пауза
{
Remote.play_pause();
flag = 0;
delay(10);
Remote.clear();
}

if(millis()-eventTime>500 && data>=165 && data<=185 && flag == 7) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
{
//Remote.play_pause(); // действие после удержание кнопки, Ещё что то
flag = 0;
//delay(10);
//Remote.clear();
}

if(data>=1023 && flag == 3 || data>=1023 && flag == 5 || data>=1023 && flag == 6) // действие после отпускания кнопки
{
flag = 0;
}
}

кнопки громкости при удержании увеличивают/уменьшают на 1 деление и останавливаюся, next вообще не реагирует, замерил кнопки руля, получил очень странные числа: mute 680 Ом, next 4.4 kOm, prev 6.5 kOM, громкость "+" 22.6 кОм, громкость "-" 14,5 кОм, Mode (ALT+TAB....TAB....TAB) 2.8 кОм.
Какая-то очень странная разница между mute и всем остальным.
Скетч брал в Драйва у другого салановода (по идее кнопки должны быть одинаковыми)
demtro вне форума   Ответить с цитированием