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

OlegK
OlegK аватар
Offline
Зарегистрирован: 26.11.2014

Не желаете воспользоваться этим? А то автор темы Вас пошлёт на север и, таки, будет прав...

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

skalinas пишет:

Клапауций 555 посмотри, так будет работать библиотека, может чего лишнего добавил?

ок. скажи - ты изменил дизайн поведения оригинального кода или добавил функционал?

потому, как вот это меня смущает:

boolean  event_press_long   () {return (event_press1     () == 1 && state_button() == 1);}

оригинальный event_press_long () будет продолжать работать так, как я задумал или всех ползателей велосипеда ожидает приятный сюпрайз?

может быть, нужно было так сделать? :

boolean  event_press_long   () {return (event_press    () == 1 && state_button() == 1);}
boolean  event_press_long1  () {return (event_press1   () == 1 && state_button() == 1);}

*плюс концептуальный недостаток добавления unsigned event_press1 в структуру click - размер структуры увеличится с 1-го байта до 2-байт, что отразится на потреблении ОЗУ одного экземпляра класса: +1 байт на одну кнопку - было 9 байт, станет 10 байт.

skalinas пишет:

Выше скетч под эту библиотеку.

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

 

skalinas
Offline
Зарегистрирован: 13.01.2016

Скорее добавил функционал, теперь событие длинного  нажатия кнопки запоминается и сбрасывается при отпускании кнопки. Так проще писать скетч, теперь флаг в библиотеке.

boolean  event_press_long   () {return (event_press    () == 1 && state_button() == 1);}
boolean  event_press_long1  () {return (event_press1   () == 1 && state_button() == 1);}

Да можно и так сделать, только на пример назвать boolean event_press_long1, так boolean event_press_long_flag - флаг длинного  нажатия кнопки

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

Еще вопрос, если облегчить библиотеку, мне допустим не нужны функции двойного нажатия и быстрого нажатия кнопки. Где и что можно в библиотеке убрать (закоментить) и насколько при этом освободится памяти для каждой кнопки?

Не рассматривал, сделать велосипед для аналоговых кнопок (когда на одном пине висит несколько кнопок - до 5), там объем памяти меньше жрет. Тут выкладывал скетч на 5 кнопок, идея такая кроме сравнения двух измерений по времени еще сравнивается их уровень АЦП. Если уровни АЦП совпадают, то проверяется состояние измерений(сравниваются измерения через 10..50мС).

 

 

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

skalinas пишет:

Скорее добавил функционал, теперь событие длинного  нажатия кнопки запоминается и сбрасывается при отпускании кнопки. 

мой вопрос подразумевал два варианта ответа "да"/"нет".

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

skalinas пишет:

Еще вопрос, если облегчить библиотеку, мне допустим не нужны функции двойного нажатия и быстрого нажатия кнопки. Где и что можно в библиотеке убрать (закоментить) и насколько при этом освободится памяти для каждой кнопки?

код библиотеки имеет понятные внимательному читателю имена переменных и функций - комменти ненужное.

не освободится нисколько - переменные упакованы в структуру и занимают физически возможный минимум (1 байт). уменьшение количества переменных не приведёт к уменьшению структуры менее одного байта.

skalinas пишет:

Не рассматривал, сделать велосипед для аналоговых кнопок...

не рассматривал и рассматривать не собираюсь.

Клапауций 555
Offline
Зарегистрирован: 10.03.2018
GarryC, извини, но я удалю твои бесполезные для меня ответы на мой конкретный вопрос: "где нужно в коде велосипеда делать рефакторинг и, главное - зачем?".
пока твои ответы - ниочём.