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

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, извини, но я удалю твои бесполезные для меня ответы на мой конкретный вопрос: "где нужно в коде велосипеда делать рефакторинг и, главное - зачем?".
пока твои ответы - ниочём.

 

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

картинко для привлечения внимания. а, то как-то захирела темка.

https://github.com/Klapautsiy/titanium-bicycle-for-button/wiki/synopsis

 

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

Одновременное нажатие кнопок обрабатывается?

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

Tomasina пишет:

Одновременное нажатие кнопок обрабатывается?

ну, как "одновременное"? - мы же в аппаратно одноядерной системе, программно в последовательном цикле void loop() .

субъективно - "да".

фактически - ВСЕ кнопки обрабатываются последовательно в том порядке, как они прописаны в тексте скетча.

см. примеры в папке examples архива на гитхабе https://github.com/Klapautsiy/titanium-bicycle-for-button/releases

например:

void loop() {

test.read();

if (test.event_click_Db (0) == 1) {}
if (test.event_click_Db (5) == 1) {}
if (test.event_click_Db (2) == 1) {}
if (test.event_click_Db (1) == 1) {}

}

опрос события клика кнопок 0, 5, 2, 1 - если, внезапно, важна последовательность опроса кнопок.

обычно - достаточно последовательно или в любом порядке опрашивать кнопки.

отвлёкся...

т.е. в loop кнопки обрабатываются последовательно - если loop принимать как "опрос кнопок", то "да" - обрабатывается одновременное нажатие кнопок.

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

не зависимо от того, присутствуют диоды или нет - подключение матрицы настраивается режимами:

NKRO()   - режим No-Key Rollover (обрабатываются все кнопки - диоды обязательны)
OKRO()   - режим  1-Key Rollover (обрабатывается первая нажатая кнопка - диоды не обязательны)
TKRO()   - режим  2-Key Rollover (обрабатывается первые две нажатых кнопки - диоды диоды не обязательны)
 
*всё кратко в файле README.txt, чуть теории в вики https://github.com/Klapautsiy/titanium-bicycle-for-button/wiki/synopsis
 
ну, и понятно, что код библиотеки - неблокирующий основной цикл. считываются состояния пинов, сохраняется в переменные, переменные интерпретируются экземпляром класса в контекст событий-состояний одной кнопки, все экземпляры класса хранятся в одно(если кнопки подключены непосредственно к пинам дуино) или двумерном массиве(подключение тип "матрица")
===============
 
если всё, что выше - очень сложно, то "да" - можно наступить на пульт из 100 кнопок и они сработают.
Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Говори проще: "если сделать прямоугольную матрицу кнопок и сесть на неё, то можно нарисовать контур задницы с точностью до половины расстояния между кнопками" :)

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

Ворота пишет:

Говори проще: "если сделать прямоугольную матрицу кнопок и сесть на неё, то можно нарисовать контур задницы с точностью до половины расстояния между кнопками" :)

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

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

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

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Бояца оне тебя, Клапа. Ты ж их всех в Сугрут посылать начнёшь, в произвольной форме.  Или в Тыву, искать обломки скрашеного звездолёта. 

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Пытался я осилить этот лисапед , но увы.
Слишком много лишнего функционала, и ресурсов кушает нехило.
Написал свой , на нем и езжу.

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

Kakmyc пишет:
Пытался я осилить этот лисапед , но увы.
Слишком много лишнего функционала, и ресурсов кушает нехило.
Написал свой , на нем и езжу.

та, да - я запретил закомментить ненужное.

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

DetSimen пишет:

Бояца оне тебя, Клапа. Ты ж их всех в Сугрут посылать начнёшь, в произвольной форме.  Или в Тыву, искать обломки скрашеного звездолёта. 


ты прав - в Сургут пешком ушли тупые, хейтеры, пидагоги и профессионалы.

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

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

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Да зачем, меня свое устраивает, не старайтесь.

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

Kakmyc пишет:
Да зачем, меня свое устраивает, не старайтесь.

ок.
не буду.

Гриша
Offline
Зарегистрирован: 27.04.2014

ИМХО не знаю кому как,  а я не парюсь и просто пользую... если кому требуется что-то очень быстрое и специальное НИКОГДА не будет использовать универсальное. Я давно уже закатал велики в библы, и при необходимости разворачиваю прямо в коде дабы выкинуть лишнее буде тому потреба. Да и на гитхабе пару раз был...

Спасибо, Клапа! нормальные велики.

kolyn
Offline
Зарегистрирован: 18.01.2019

Пользую велик 1.0 совместно с кодом Dimax http://arduino.ru/forum/apparatnye-voprosy/ispolzuem-enkoder?page=5#comment-449417  для энкодера .

Едет хорошо, только руль под себя слегка подогнул;)