Показать сообщение отдельно
Старый 26.08.2016, 00:02   #1
lipov-andrey
Новый Пользователь
 
Регистрация: 30.11.2014
Возраст: 43
Город: MoskoW
Регион: 74
Сообщений: 11
lipov-andrey is on a distinguished road
По умолчанию [Канбус] Долгое нажатие кнопки (Не резистивные кнопки!)

Ситуация в следующем работаю с каном авто, все кнокпи работают по кану.

Хочу подключить их чтобы управлять Ардуинкой в своих личных целях.
Ардуина будет управлять Андройд приставкой.

Имеется UNO и Atmega 2450.
Написал скетч на обработку одиночного нажатия, а вот с длительным не могу справится.

то есть например нажимаю 1 раз кнопку звук + и приходит 2-3 одинаковых сигнала в кан пусть будет 12345.

То есть если жму долго он так и будет кидать в лог:

12345 12345 12345 12345 12345 12345

Вот мне нужно при удерживании скажем более 8 секунд сделать чтобы он выполнял другое действие.

Пробовал millis() ставить, но он к сожалению не обнуляется.

Пока что работает только один мой вариант по количеству, то есть если пришло в лог более 8 одинаковых сигналов 12345 то выполнять долгое действие, но это не очень удобно, так как счетчик не обнуляется а постоянно по кругу идут.

Или может подскажите как обнулять счетчик если допустим между действиями прошло более скажем 3 секунд.

Сейчас у меня что то типа этого:
Цитата:
if(rpId == 410) //Нажата кнопка след. трек >>
{
irsend.sendNEC (0x11E937,32);
Serial.println("Next track");
}

А нужно чтобы при длительном нажатии на кнопку другое действие.

Что то типа этого :
Цитата:
if(rpId == 410) //Нажат кнопка след. трек >>
{
nextrack = nextrack++
if (nextrack > 8)
{
irsend.sendNEC (0x15D937,32);
Serial.println("Next LOND press track");
}
irsend.sendNEC (0x11E937,32);
Serial.println("Next track");
}
Но в этом случае каждое 8ео нажатие выдается как долгое, хоть по одному разу жми хоть по долгу.
То есть нет срабатывания сброса как бы.

Заранее благодарен, Андрей.

Последний раз редактировалось admin; 20.03.2017 в 02:15.
lipov-andrey вне форума   Ответить с цитированием