класс титановый велосипед для тактовой кнопки.

Xumuk
Xumuk аватар
Offline
Зарегистрирован: 03.03.2016

Клапауций 298 пишет:

мелкий фикс #643


#include <Button.h>

Button test;

void setup() {

pinMode( 4, OUTPUT); // LED_01
pinMode( 5, OUTPUT); // LED_02
pinMode(17, OUTPUT); // LED_03

test.NO(); // N.O. Normal Open

test.pullUp();

test.duration_bounce       (  50);
unsigned long duration_check = 200;
test.duration_click_Db     (duration_check);
test.duration_inactivity_Up(duration_check);
test.duration_press        ( 500);

test.button(18); // arduino pins connected to button

}

boolean tmp_event_press_short = 0;
boolean tmp_event_click_Db    = 0;

void loop() {
test.read();

if (test.event_click_Db     (0) == 1) tmp_event_click_Db    = 1; // запомнить событие до разбора полётов

if (test.event_press_short  (0) == 1) tmp_event_press_short = 1; // запомнить событие до разбора полётов

// не уверен, что не нужно запоминать событие - у кого-то и длинные нажатия могут конфликтовать с дабл кликом О_О
if (test.event_press_long   (0) == 1) {
tmp_event_press_short = 0; // !!!fix!!! сброс временного значения события
tmp_event_click_Db    = 0; // !!!fix!!! сброс временного значения события
digitalWrite(17, !digitalRead(17));
}

if (test.event_inactivity_Up(0) == 1) { // разбор полётов event_click_Db&event_press_short, event_click_Db - приоритет

if (tmp_event_click_Db          == 1) { // обработать двойной клик, короткое нажатие отменить
tmp_event_press_short = 0; // сброс временного значения события
tmp_event_click_Db    = 0; // сброс временного значения события
digitalWrite( 4, !digitalRead( 4));
}

if (tmp_event_press_short       == 1) { // обработать короткое нажатие
tmp_event_press_short = 0; // сброс временного значения события
digitalWrite( 5, !digitalRead( 5));
}

}

}

 

спасибо

Клапауций 298
Клапауций 298 аватар
Offline
Зарегистрирован: 25.01.2018

Xumuk пишет:

спасибо

за что "спасибо"? - ты ушёл в несознанку, отказавшись писать объяснительную. #1387 О_О

Xumuk
Xumuk аватар
Offline
Зарегистрирован: 03.03.2016

Клапауций 298 пишет:

Xumuk пишет:

спасибо

за что "спасибо"? - ты ушёл в несознанку, отказавшись писать объяснительную. #1387 О_О

ну мой код с вашим творением работает=)) направили на путь истинный)

Клапауций 298
Клапауций 298 аватар
Offline
Зарегистрирован: 25.01.2018

Xumuk пишет:

ну мой код с вашим творением работает=)) направили на путь истинный)

объяснительную пиши, а не "ну мой код...". О_О

Дим
Offline
Зарегистрирован: 05.05.2017

А где последняя версия лисапеда?

Клапауций 298
Клапауций 298 аватар
Offline
Зарегистрирован: 25.01.2018

Дим пишет:

А где последняя версия лисапеда?

Клапауций 099 пишет:

сайтик библиотеки "титановый велосипед для кнопки" находится здесь: https://klapautsiy.github.io

вопросы и хотелки писать сюда: https://github.com/Klapautsiy/titanium-bicycle-for-button/issues/new

Дим
Offline
Зарегистрирован: 05.05.2017

А папку  titanium-bicycle-for-button-BUTTON-v14.0 переименовать надо?

Клапауций 298
Клапауций 298 аватар
Offline
Зарегистрирован: 25.01.2018

Дим пишет:

А папку  titanium-bicycle-for-button-BUTTON-v14.0 переименовать надо?

как хочешь - переименуй во что угодно, только брось в папку с библиотеками.

у меня папка называется BUTTON - то сильно умный гитхаб отсальное дописывает.

Дим
Offline
Зарегистрирован: 05.05.2017

Я только начал разбираться с этим классом, и ни пойму - как сделать действие по 2 клику. Получается перед этим кликом выполняюся действия и по нажатию кнопки и по отпусканию...

А при компиляции примера Click "aggregate 'type_click in_Click' has incomplete type and cannot be defined"

Клапауций 298
Клапауций 298 аватар
Offline
Зарегистрирован: 25.01.2018

Дим пишет:

Я только начал разбираться с этим классом, и ни пойму - как сделать действие по 2 клику. Получается перед этим кликом выполняюся действия и по нажатию кнопки и по отпусканию...

хочешь в Сургут? там сейчас красота - ягель поспел. О_О

Дим
Offline
Зарегистрирован: 05.05.2017

Тебе привезти?

Клапауций 298
Клапауций 298 аватар
Offline
Зарегистрирован: 25.01.2018

Дим пишет:

Тебе привезти?

мне не нужно - у меня в Сургуте ягелевая плантация.

Клапауций 298
Клапауций 298 аватар
Offline
Зарегистрирован: 25.01.2018

Дим пишет:

А при компиляции примера Click "aggregate 'type_click in_Click' has incomplete type and cannot be defined"

неправда - пример компилится на версиях Дуино ИДЕ 1.0.6 и 1.8.4

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Дим пишет:

Я только начал разбираться с этим классом, и ни пойму - как сделать действие по 2 клику. Получается перед этим кликом выполняюся действия и по нажатию кнопки и по отпусканию...

Ыщщо адын!

Дим, Вы б хоть тему полистали. Только что это разжёвывали предыдущему "непонятливому".

bwn
Offline
Зарегистрирован: 25.08.2014

ЕвгенийП пишет:

Дим пишет:

Я только начал разбираться с этим классом, и ни пойму - как сделать действие по 2 клику. Получается перед этим кликом выполняюся действия и по нажатию кнопки и по отпусканию...

Ыщщо адын!

Дим, Вы б хоть тему полистали. Только что это разжёвывали предыдущему "непонятливому".

Повторенье, мать ученья.(с)

Клапауций 298
Клапауций 298 аватар
Offline
Зарегистрирован: 25.01.2018

bwn пишет:

Повторенье, мать ученья.(с)

ТАК!ТАК!ТАК! - сказав кулемет.(с) О_О

MaksVV
Offline
Зарегистрирован: 06.08.2015

+1 респект, благодарю, что показали как не отрабатывать one click при double и long клике 

ЕвгенийП пишет:

Xumuk пишет:

с дабл кликом никак не разбирусь.... все равно проскакивает короткое нажатие

Так и и должно быть. Если это вызывает проблему, значит Ваша система неправильно спроектирована.

Посмотрите на дабл-клик в Windows. Одиночный клик "выбирает" файл, а дабл-клик - запускает выбранный на момент обнаружения дабл-клика файл. Т.е. то, что одиночный кил фиксируется никак не мешает работе дабл клика, а наоборот - помогает.

Вот так и Вы спроектируйте программу. чтобы он не мешал. Вот и всё. Все и всегда так делают.

Если делать их (одиночный и двойной клики) абсолютно независимыми, то одиночный клик будет жутко тормозить, т.к. прежде чем "зафиксироваться" ему надо подождать, а не поступит ли второй клик и не получится ли "дабл".

Не всегда так. Взять, например, брелок самой популярной сигнализации "старлайн". Ей пользуется не мало человек, и, в общем-то, большинство довольны как она работает. Там короткое нажаие первой кнопки - поставить на охрану с сигналами подтверждения сиреной. Дабл клик этой же кнопкой - постановка на охрану без звуковых сигналов оповещения. В данном случае при дабл клике, одиночное нажатие не отрабатывает. И не сказать, что одиночное нажатие тормозит , вернее вообще не тормозит. Сам пользуюсь этим постоянно - вообще не напрягает. 

Данный алгоритм кнопок был даже у старых сигнализаций Mongoose (брелок яйцо). Там радиоканал был почти не зашифрован , поэтому реакция на нажатие на брелке была почти мгновенная, но это не мешало кнопке работать по вашеописаному алгоритму. 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Объясняю в последний раз. Больше не буду

MaksVV пишет:

Не всегда так. 

Всегда

MaksVV пишет:

Взять, например, брелок самой популярной сигнализации "старлайн". Ей пользуется не мало человек, и, в общем-то, большинство довольны как она работает. Там короткое нажаие первой кнопки - поставить на охрану с сигналами подтверждения сиреной. Дабл клик этой же кнопкой - постановка на охрану без звуковых сигналов оповещения. В данном случае при дабл клике, одиночное нажатие не отрабатывает. И не сказать, что одиночное нажатие тормозит , вернее вообще не тормозит. Сам пользуюсь этим постоянно - вообще не напрягает. 

А теперь возьмите её в руки и внимательно поэкспериментируйте. 

Сигнал подтверждения появляется не сразу, а по истечении времени, в течение которого она ожидала второго клика. ПРи этом двеи запираться могут и сразу, а вот сирена только когда она не дождалась второго клика и не раньше.

Просто включите мозги (если есть) и подумайте. Вот пришёл первый клик. Система не знает и не может знать будет ли второй. Не знает и не может знать! Поэтому делать что-то, что противоречит второму клику до истечения его таймаута нельзя. Никак нельзя!

Алгоритм Вашей сигнализации такой:

1-ый клик - поставить на охрану
Ждать второго клика.
    Если дождались - всё закончено
    Если истёк таймаут - хрюкнуть сиреной

Понимаете? Впрочем, мне всё равно понимаете Вы или нет, я эту тему больше не обсуждаю, ибо глупо. Если не поняли, то просто подумайте (если есть чем) откуда после первого клика она знает, что второго не будет и можно обрабатывать первый или же, что второй будет и первый надо игнорить? Вот откуда она может это знать? Машина времени?

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

ЕвгенийП пишет:

Объясняю в последний раз. Больше не буду

Всегда

 

Сигнал подтверждения появляется не сразу, а по истечении времени, в течение которого она ожидала второго клика. ПРи этом двеи запираться могут и сразу, а вот сирена только когда она не дождалась второго клика и не раньше.

Просто включите мозги (если есть) и подумайте. Вот пришёл первый клик. Система не знает и не может знать будет ли второй. Не знает и не может знать! Поэтому делать что-то, что противоречит второму клику до истечения его таймаута нельзя. Никак нельзя!

Алгоритм Вашей сигнализации такой:

1-ый клик - поставить на охрану
Ждать второго клика.
    Если дождались - всё закончено
    Если истёк таймаут - хрюкнуть сиреной

Понимаете? Впрочем, мне всё равно понимаете Вы или нет, я эту тему больше не обсуждаю, ибо глупо.

дак а кто с этим спорит? это как бы и так было понятно, что работает за счет затупа одиночного клика

MaksVV
Offline
Зарегистрирован: 06.08.2015

можно опустить постановка на охрану и закрытие замков и тогда будет: один клик  - хрюкнуть сиреной, дабл - не хрюкать. А вы говорите ВСЕГДА

MaksVV
Offline
Зарегистрирован: 06.08.2015

я к тому, что далеко не во всех применениях этот затуп прямо ЖУТКО будет тормози... раздражать. исполнение команды через - 200мс норм. 

Клапауций 298
Клапауций 298 аватар
Offline
Зарегистрирован: 25.01.2018

MaksVV пишет:

+1 респект, благодарю, что показали как не отрабатывать one click при double и long клике 

т.е. до того было не очевидно, что библиотека обладает самодостаточным списком переменных для реализации любых хотелок?

MaksVV пишет:

поэтому реакция на нажатие на брелке была почти мгновенная, но это не мешало кнопке работать по вашеописаному алгоритму. 

MaksVV, вы вроде не зелёный новичёк и имеете минимальное понимание, что такое двойной клик и короткое нажание, алгоритм, пр. ...
 
физически двойной клик возможно совершить, если время между кликами ~200 миллисекунд(-50 миллисекунд для людей с быстрой реакцией и +100 миллисекунд для, простите, заторможенных)
именно поэтому нужно ждать 200 миллисекунд, что бы точно знать, что произошло - короткое нажатие или двойной клик.
в какой мгновенной реакции вы пытаетесь убедить читателей темы?
 
по поводу юзабельности данного решения - всё очень неоднозначно:
когда вам нужно будет нажать не один или два раза, а нащёлкать 50 одиночных кликов, то вы проклянёте это решение вместе с его пейсателем, т.к. у вас периодически будут случаться двойные клики вместо одиночных, т.к. вам будет влом ждать 200 миллисекунд.

 

MaksVV
Offline
Зарегистрирован: 06.08.2015
Клапауций 298 пишет:
т.е. до того было не очевидно, что библиотека обладает самодостаточным списком переменных для реализации любых хотелок?
 
я всё не мог найти время, чтобы разобраться с этим делом, но в итоге все сделали за меня, каюсь. 
 
 
 
Клапауций 298 пишет:
именно поэтому нужно ждать 200 миллисекунд, что бы точно знать, что произошло - короткое нажатие или двойной клик. в какой мгновенной реакции вы пытаетесь убедить читателей темы?
 
тут речь шла об исполнении команды от брелока сигнализации. Всё познается в сравнии. Если вы пользовались, старым мангустом, а потом когда пошёл "диалоговый" код в сигнализациях, то знаете что время реакции на нажатие кнопки в таких системам стало казаться ну Ооочень большым. Поэтому сказал, что у старого мангуста мгновенная реакция. (понятно, что даже она около или более 200мс). 
 
Клапауций 298 пишет:
по поводу юзабельности данного решения - всё очень неоднозначно: когда вам нужно будет нажать не один или два раза, а нащёлкать 50 одиночных кликов, то вы проклянёте это решение вместе с его пейсателем
Где надо щёлкать много одиночных кликов это не применимо - тут к бабке не ходи. 
 
я так и говорил, что неоднозначно:
 
MaksVV пишет:
я к тому, что далеко не во всех применениях этот затуп прямо ЖУТКО будет тормози... раздражать. исполнение команды через - 200мс норм.
 
читай, кое где можно и спокойно применить тему о неотработке короткого нажатия при дабл и лонг клике , затупив исполнение короткого нажатия. 
 
Клапауций 298
Клапауций 298 аватар
Offline
Зарегистрирован: 25.01.2018

ок. расходимся - это была измена.

sirota
Offline
Зарегистрирован: 18.08.2015

ЕвгенийП, не соглашусь. Дело в том что брелок ждал окончания ввода команды всей. К примеру тайминг 500мс прерывания. Есть к примеру короткий клик по первой кнопке и после него длинный клик по второй. И есть событие по короткому клику. И событие по короткому клику первой кнопки. Так вот если сделать короткий клик 1, < 500 мс перерыв, длинный клик по второй, < короткий клик по первой, перерыв > 500 мс. То если не было подобного варианта развития событий, то отработается самое длинное, а остальное будет отсечено.

MaksVV
Offline
Зарегистрирован: 06.08.2015

sirota пишет:
Есть к примеру короткий клик по первой кнопке и после него длинный клик по второй.

помоему вы путаете. Там наоборот. Сначала длинный клик одной кнопкой  и короткий - другой кнопкой. 

MaksVV
Offline
Зарегистрирован: 06.08.2015

Евгений, кстати при длинном клике не отрабатывается ни постановка в охрану, ни закрывание замков, ни сигнал сирены, а брелок ждёт короткого нажатия от кнопок в течение 2 сек. 

Клапауций 298
Клапауций 298 аватар
Offline
Зарегистрирован: 25.01.2018

sirota пишет:

ЕвгенийП, не соглашусь.

О_О да шо ж такое?

[ушёл выпрашивать у атмина автомат и лопату, ибо утомило]

sirota
Offline
Зарегистрирован: 18.08.2015

MaksVV пишет:

sirota пишет:
Есть к примеру короткий клик по первой кнопке и после него длинный клик по второй.

помоему вы путаете. Там наоборот. Сначала длинный клик одной кнопкой  и короткий - другой кнопкой. 

Суть. Пойдите и после существующей команды потыкайте еще. Во всяком случае на B6 и A91/93 имеенно так и было.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

sirota, я ничего не понял, но и не хочу понимать, для меня тема закрыта. Обсуждая с серьёзной мордой тривиальный факт, того, что при первом клике системе неоткуда знать, будет или не будет второй, я ощущаю себя идиотом, и мне это не нравится.

MaksVV
Offline
Зарегистрирован: 06.08.2015

ЕвгенийП пишет:

sirota, я ничего не понял, но и не хочу понимать, для меня тема закрыта. Обсуждая с серьёзной мордой тривиальный факт, того, что при первом клике системе неоткуда знать, будет или не будет второй, я ощущаю себя идиотом, и мне это не нравится.

)) там просто отрабатываются события по отпусканию кнопки. Чтобы затуп был только на время дабл клика, иначе пришлось бы затуп на лонг клик делать

sirota
Offline
Зарегистрирован: 18.08.2015

ЕвгенийП пишет:

sirota, я ничего не понял, но и не хочу понимать, для меня тема закрыта. Обсуждая с серьёзной мордой тривиальный факт, того, что при первом клике системе неоткуда знать, будет или не будет второй, я ощущаю себя идиотом, и мне это не нравится.

и именно по этому у системы есть таймаут нажатий. К примеру длинный клик 1 кнопки без ни чего не дает ни чего. Ибо на эту комбинацию нет ни одного события. А так я тоже не пойму будет драка или нет. Чисто для этого и зашел. Дай думаю масла в огонь подолью )))

Клапауций 298
Клапауций 298 аватар
Offline
Зарегистрирован: 25.01.2018

ЕвгенийП пишет:

Обсуждая с серьёзной мордой тривиальный факт, того, что при первом клике системе неоткуда знать, будет или не будет второй, я ощущаю себя идиотом, и мне это не нравится.

лично я ощущаю себя сверхчеловеком среди идиотов и мне это, так же, не нравится. О_О

MaksVV
Offline
Зарегистрирован: 06.08.2015

может это и идиотизм, но факт, что есть уже один пример идиотского заводского решения. 

sirota
Offline
Зарегистрирован: 18.08.2015

Клапауций 298 пишет:

ЕвгенийП пишет:

Обсуждая с серьёзной мордой тривиальный факт, того, что при первом клике системе неоткуда знать, будет или не будет второй, я ощущаю себя идиотом, и мне это не нравится.

лично я ощущаю себя сверхчеловеком среди идиотов и мне это, так же, не нравится. О_О

Вот не кликнули бы цитировать, да. А так... вы с нами )))

MaksVV
Offline
Зарегистрирован: 06.08.2015

просто он не знал, будет ли второй клик

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

MaksVV пишет:

факт, что есть уже один пример идиотского заводского решения. 

Есть миллионы примеров идиотских заводских решений.

bwn
Offline
Зарегистрирован: 25.08.2014

Клапауций 298 пишет:

лично я ощущаю себя сверхчеловеком среди идиотов и мне это, так же, не нравится. О_О

Клап, ты чем прикармливаешь?))))

Клапауций 298
Клапауций 298 аватар
Offline
Зарегистрирован: 25.01.2018

sirota пишет:

А так... вы с нами )))

а, смысл? лично я не понимаю, что вы оба(два) пытаетесь донести до общественности?

sirota
Offline
Зарегистрирован: 18.08.2015

Я предлагаю стопе. Ибо оффтоп. библа приятна и очень полезна. Есть куча функционала которая она из коробки не поддерживает, но... какие-то плюшки можно и обсудить, но опять же не терки без существа.

А так нас 3-е + вы ) уже 4-ро ) Организованное банд формирование )

MaksVV
Offline
Зарегистрирован: 06.08.2015

 

ЕвгенийП пишет:
Вот так и Вы спроектируйте программу. чтобы он не мешал. Вот и всё. Все и всегда так делают.
 
MaksVV пишет:
Не всегда так
 
ЕвгенийП пишет:
Всегда
 
ЕвгенийП пишет:
Вот так и Вы спроектируйте программу. чтобы он не мешал. Вот и всё. Все и всегда так делают.
 
ЕвгенийП пишет:
Есть миллионы примеров идиотских заводских решений.
 
выходит не все и не всегда так делают
Клапауций 298
Клапауций 298 аватар
Offline
Зарегистрирован: 25.01.2018

bwn пишет:

Клап, ты чем прикармливаешь?))))

сам в акуе - косяк сайгаков... зимой. О_О

Xumuk
Xumuk аватар
Offline
Зарегистрирован: 03.03.2016

Клапауций 298 пишет:

sirota пишет:

А так... вы с нами )))

а, смысл? лично я не понимаю, что вы оба(два) пытаетесь донести до общественности?

они хотят сказать, что велосипед великолепен)

Клапауций 298
Клапауций 298 аватар
Offline
Зарегистрирован: 25.01.2018

sirota пишет:

Есть куча функционала которая она из коробки не поддерживает, но...

и, где эта куча?

sirota пишет:

какие-то плюшки можно и обсудить, но опять же не терки без существа.

ну, и?

MaksVV
Offline
Зарегистрирован: 06.08.2015

я лишь отстаиваю свою точку зрения, чё вы прётесь не пойму. 

MaksVV
Offline
Зарегистрирован: 06.08.2015

и эта, я не с ним

Клапауций 298
Клапауций 298 аватар
Offline
Зарегистрирован: 25.01.2018

MaksVV пишет:

я лишь отстаиваю свою точку зрения, чё вы прётесь не пойму. 

что бы отстаивать свою точку зрения - она должна быть отлична от общепринятой точки зрения.

ты же согласился с моими и Евгения доводами - что ты отсаиваешь?

MaksVV
Offline
Зарегистрирован: 06.08.2015

что не только я готов пожертвовать тем, что будет затуп одиночного клика, но будет "чистый" дабл и лонг клик. И привел пример со старлайном, типа заводское решение, пользуются миллионы. 

Хотел сказать, что такая тема имеет право на жизнь при определённых условиях, чё здесь идиотского?

 

Клапауций 298
Клапауций 298 аватар
Offline
Зарегистрирован: 25.01.2018

MaksVV пишет:

что не только я готов пожертвовать тем, что будет затуп одиночного клика, но будет "чистый" дабл и лонг клик. И привел пример со старлайном, типа заводское решение, пользуются миллионы. 

я написал пример для таких как ты ленивых задниц - что тебе ещё нужно написать, что бы ты-сука перестал флудить в теме?

MaksVV пишет:

Хотел сказать, что такая тема имеет право на жизнь при определённых условиях, чё здесь идиотского?

я хочу сказать, что такие как ты не имеют права на жизнь. О_О

MaksVV
Offline
Зарегистрирован: 06.08.2015

понял, вычеркиваю