Резистивные кнопки (hid keyboard)

Chubaka
Offline
Зарегистрирован: 28.01.2014

Ардуино про микро (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;
  }
}

 

Chubaka
Offline
Зарегистрирован: 28.01.2014

Удалите пожйлуйста тему. Не туда написал.