А кто нибудь реализовал на одной резистивной кнопке одиночное нажатие и удержание? Не поделитесь. А то никак не могу догнать как сделать(((
Вот вроде сделал, но при нажатии и удержании функция по одиночному нажатию всё равно сначала проходит.
Код:
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;
}
}