Резистивные кнопки (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; } }
Удалите пожйлуйста тему. Не туда написал.