Резистивные кнопки (hid keyboard)
- Войдите на сайт для отправки комментариев
Сб, 08/02/2014 - 23:03
Ардуино про микро (ATmega 32U4)
К аналоговому пину 6 подключены резистивные кнопки.
Что бы при нажатии не сыпалось много сигнала добавил в код flag. Теперь одно нажатие - одна посылка сигнала. Подскажите пожалуйста как сделать что бы ардуино различала одиночное нажатие или удержание кнопки. Т.е. мне надо например на кнопке переключения трека сделать: одно нажатие - следующий трек, удержание кнопки - перемотка.
Команда перемотки известна, а вот как реализовать одиночное нажатие и удержание не могу сообразить.
Вот код который получилось сделать.
int buttonPin=6; //пин для резистивных кнопок
int data;
int flag=0;
void setup()
{
Keyboard.begin();
Serial.begin(9600);
}
void loop()
{
data=analogRead(buttonPin); //читаем значение нажатой кнопки
Serial.println(data); //для определения кодов нажатых кнопок на мониторе порта
//кнопка громкости +
if (data>=210 && data<=232 && flag==0) //
{
Remote.increase();
Remote.clear();
flag=1;
}
if (data>=950 && data<=960 && flag==1)
{
flag=0;
}
//кнопка громкости -
if (data>=460 && data<=488 && flag==0) //
{
Remote.decrease();
Remote.clear();
flag=1;
}
if (data>=950 && data<=960 && flag==1)
{
flag=0;
}
//кнопка следующий трек
if (data==0 && flag==0) //
{
Remote.next();
Remote.clear();
flag=1;
}
if (data>=950 && data<=960 && flag==1)
{
flag=0;
}
//кнопка предидущий трек
if (data>=76 && data<=92 && flag==0) //
{
Remote.previous();
Remote.clear();
flag=1;
}
if (data>=950 && data<=960 && flag==1)
{
flag=0;
}
//кнопка приглушения звука
if (data>=565 && data<=594 && flag==0) //
{
Remote.mute();
Remote.clear();
flag=1;
}
if (data>=950 && data<=960 && flag==1)
{
flag=0;
}
}
Удалите пожйлуйста тему. Не туда написал.