*плюс концептуальный недостаток добавления unsigned event_press1 в структуру click - размер структуры увеличится с 1-го байта до 2-байт, что отразится на потреблении ОЗУ одного экземпляра класса: +1 байт на одну кнопку - было 9 байт, станет 10 байт.
skalinas пишет:
Выше скетч под эту библиотеку.
все скетчи в этой теме мною будут рассматриваться исключительно в контексте обсуждения оригинального кода велосипеда. поэтому, звыняй.
Скорее добавил функционал, теперь событие длинного нажатия кнопки запоминается и сбрасывается при отпускании кнопки. Так проще писать скетч, теперь флаг в библиотеке.
Да можно и так сделать, только на пример назвать boolean event_press_long1, так boolean event_press_long_flag - флаг длинного нажатия кнопки
Просто событие длинного нажатия кнопки в скетче не использую (нужно городить флаг в скетче), а вот флаг длинного нажатия кнопки нужен. Если в скетче добавлять флаг и его сброс для каждой кнопки, насколько увеличивается размер?
Еще вопрос, если облегчить библиотеку, мне допустим не нужны функции двойного нажатия и быстрого нажатия кнопки. Где и что можно в библиотеке убрать (закоментить) и насколько при этом освободится памяти для каждой кнопки?
Не рассматривал, сделать велосипед для аналоговых кнопок (когда на одном пине висит несколько кнопок - до 5), там объем памяти меньше жрет. Тут выкладывал скетч на 5 кнопок, идея такая кроме сравнения двух измерений по времени еще сравнивается их уровень АЦП. Если уровни АЦП совпадают, то проверяется состояние измерений(сравниваются измерения через 10..50мС).
Скорее добавил функционал, теперь событие длинного нажатия кнопки запоминается и сбрасывается при отпускании кнопки.
мой вопрос подразумевал два варианта ответа "да"/"нет".
причина, почему ты сломал дизайн поведения оригинального кода библиотеки, меня мало интересует.
skalinas пишет:
Еще вопрос, если облегчить библиотеку, мне допустим не нужны функции двойного нажатия и быстрого нажатия кнопки. Где и что можно в библиотеке убрать (закоментить) и насколько при этом освободится памяти для каждой кнопки?
код библиотеки имеет понятные внимательному читателю имена переменных и функций - комменти ненужное.
не освободится нисколько - переменные упакованы в структуру и занимают физически возможный минимум (1 байт). уменьшение количества переменных не приведёт к уменьшению структуры менее одного байта.
skalinas пишет:
Не рассматривал, сделать велосипед для аналоговых кнопок...
GarryC, извини, но я удалю твои бесполезные для меня ответы на мой конкретный вопрос: "где нужно в коде велосипеда делать рефакторинг и, главное - зачем?".
ну, и понятно, что код библиотеки - неблокирующий основной цикл. считываются состояния пинов, сохраняется в переменные, переменные интерпретируются экземпляром класса в контекст событий-состояний одной кнопки, все экземпляры класса хранятся в одно(если кнопки подключены непосредственно к пинам дуино) или двумерном массиве(подключение тип "матрица")
===============
если всё, что выше - очень сложно, то "да" - можно наступить на пульт из 100 кнопок и они сработают.
Говори проще: "если сделать прямоугольную матрицу кнопок и сесть на неё, то можно нарисовать контур задницы с точностью до половины расстояния между кнопками" :)
Говори проще: "если сделать прямоугольную матрицу кнопок и сесть на неё, то можно нарисовать контур задницы с точностью до половины расстояния между кнопками" :)
да, но некоторые альтернативно мыслящие личности утверждают, что у человека жопы нет, а пальцев может быть не больше 10, а горизонт наблюдаемых событий не выходит за границу времени фильтра дребезга.
попался коммент в другой теме, что код кому-то оказался полезен.
ок.
поэтому, да - если кому-то пригодилось и желаете, что бы всё стало ещё более лучше, то не ленитесь и возвращайтесь сюда и пишите в произвольной форме, как дошли до жизни такой.
иначе, если хватать код и со счастливой мордой убегать - я не понимаю: выбросили вы это за углом или оно вам рельно было нужно.
спасибо.
ИМХО не знаю кому как, а я не парюсь и просто пользую... если кому требуется что-то очень быстрое и специальное НИКОГДА не будет использовать универсальное. Я давно уже закатал велики в библы, и при необходимости разворачиваю прямо в коде дабы выкинуть лишнее буде тому потреба. Да и на гитхабе пару раз был...
Сдается мне, что напрямую не получится никак. Считывать состояние кнопок на расширителе нужно не силами библиотеки, а своими силами, потому что на "одном пине" может располагаться до 16 кнопок. Как вы предполагаете их различать из велосипеда? А есть ли на этом велосипеде возможность создания кнопки без привязки к пину и обработки ее состояний, я не знаю.
ЗЫ: только недавно тут поднимался этот вопрос, я даже внес кое-какие изменения в свою библиотеку
Не пойму как подключиться к этой схеме кнопок. Есть хорошая качественная панелька с кнопками, хочу ее приладить на станок на панель управления под Mach3, LPT на ардуину,а на ардуине панелька с кнопками. Снял схему с панельки кнопок, не могу сообразить как по этой схеме ее использовать.
16-ти кнопочные мне пока не пригождались, а три штуки 3х4 успешно трудяца на своих местах. Единственное что, если нужно ловить одновременное нажатие двух и более кнопок - тогда это решение не годица.
Не желаете воспользоваться этим? А то автор темы Вас пошлёт на север и, таки, будет прав...
Клапауций 555 посмотри, так будет работать библиотека, может чего лишнего добавил?
ок. скажи - ты изменил дизайн поведения оригинального кода или добавил функционал?
потому, как вот это меня смущает:
оригинальный event_press_long () будет продолжать работать так, как я задумал или всех ползателей велосипеда ожидает приятный сюпрайз?
может быть, нужно было так сделать? :
*плюс концептуальный недостаток добавления unsigned event_press1 в структуру click - размер структуры увеличится с 1-го байта до 2-байт, что отразится на потреблении ОЗУ одного экземпляра класса: +1 байт на одну кнопку - было 9 байт, станет 10 байт.
Выше скетч под эту библиотеку.
все скетчи в этой теме мною будут рассматриваться исключительно в контексте обсуждения оригинального кода велосипеда. поэтому, звыняй.
Скорее добавил функционал, теперь событие длинного нажатия кнопки запоминается и сбрасывается при отпускании кнопки. Так проще писать скетч, теперь флаг в библиотеке.
Да можно и так сделать, только на пример назвать boolean event_press_long1, так boolean event_press_long_flag - флаг длинного нажатия кнопки
Просто событие длинного нажатия кнопки в скетче не использую (нужно городить флаг в скетче), а вот флаг длинного нажатия кнопки нужен. Если в скетче добавлять флаг и его сброс для каждой кнопки, насколько увеличивается размер?
Еще вопрос, если облегчить библиотеку, мне допустим не нужны функции двойного нажатия и быстрого нажатия кнопки. Где и что можно в библиотеке убрать (закоментить) и насколько при этом освободится памяти для каждой кнопки?
Не рассматривал, сделать велосипед для аналоговых кнопок (когда на одном пине висит несколько кнопок - до 5), там объем памяти меньше жрет. Тут выкладывал скетч на 5 кнопок, идея такая кроме сравнения двух измерений по времени еще сравнивается их уровень АЦП. Если уровни АЦП совпадают, то проверяется состояние измерений(сравниваются измерения через 10..50мС).
Скорее добавил функционал, теперь событие длинного нажатия кнопки запоминается и сбрасывается при отпускании кнопки.
мой вопрос подразумевал два варианта ответа "да"/"нет".
причина, почему ты сломал дизайн поведения оригинального кода библиотеки, меня мало интересует.
Еще вопрос, если облегчить библиотеку, мне допустим не нужны функции двойного нажатия и быстрого нажатия кнопки. Где и что можно в библиотеке убрать (закоментить) и насколько при этом освободится памяти для каждой кнопки?
код библиотеки имеет понятные внимательному читателю имена переменных и функций - комменти ненужное.
не освободится нисколько - переменные упакованы в структуру и занимают физически возможный минимум (1 байт). уменьшение количества переменных не приведёт к уменьшению структуры менее одного байта.
Не рассматривал, сделать велосипед для аналоговых кнопок...
не рассматривал и рассматривать не собираюсь.
картинко для привлечения внимания. а, то как-то захирела темка.
https://github.com/Klapautsiy/titanium-bicycle-for-button/wiki/synopsis
Одновременное нажатие кнопок обрабатывается?
Одновременное нажатие кнопок обрабатывается?
ну, как "одновременное"? - мы же в аппаратно одноядерной системе, программно в последовательном цикле void loop() .
субъективно - "да".
фактически - ВСЕ кнопки обрабатываются последовательно в том порядке, как они прописаны в тексте скетча.
см. примеры в папке examples архива на гитхабе https://github.com/Klapautsiy/titanium-bicycle-for-button/releases
например:
опрос события клика кнопок 0, 5, 2, 1 - если, внезапно, важна последовательность опроса кнопок.
обычно - достаточно последовательно или в любом порядке опрашивать кнопки.
отвлёкся...
т.е. в loop кнопки обрабатываются последовательно - если loop принимать как "опрос кнопок", то "да" - обрабатывается одновременное нажатие кнопок.
!в случае с подключения матрицы - если желается нажимать более 2-х кнопок одновременно, то ставить диоды.
не зависимо от того, присутствуют диоды или нет - подключение матрицы настраивается режимами:
Говори проще: "если сделать прямоугольную матрицу кнопок и сесть на неё, то можно нарисовать контур задницы с точностью до половины расстояния между кнопками" :)
Говори проще: "если сделать прямоугольную матрицу кнопок и сесть на неё, то можно нарисовать контур задницы с точностью до половины расстояния между кнопками" :)
да, но некоторые альтернативно мыслящие личности утверждают, что у человека жопы нет, а пальцев может быть не больше 10, а горизонт наблюдаемых событий не выходит за границу времени фильтра дребезга.
попался коммент в другой теме, что код кому-то оказался полезен.
ок.
поэтому, да - если кому-то пригодилось и желаете, что бы всё стало ещё более лучше, то не ленитесь и возвращайтесь сюда и пишите в произвольной форме, как дошли до жизни такой.
иначе, если хватать код и со счастливой мордой убегать - я не понимаю: выбросили вы это за углом или оно вам рельно было нужно.
спасибо.
Бояца оне тебя, Клапа. Ты ж их всех в Сугрут посылать начнёшь, в произвольной форме. Или в Тыву, искать обломки скрашеного звездолёта.
Пытался я осилить этот лисапед , но увы.
Слишком много лишнего функционала, и ресурсов кушает нехило.
Написал свой , на нем и езжу.
Слишком много лишнего функционала, и ресурсов кушает нехило.
Написал свой , на нем и езжу.
та, да - я запретил закомментить ненужное.
Бояца оне тебя, Клапа. Ты ж их всех в Сугрут посылать начнёшь, в произвольной форме. Или в Тыву, искать обломки скрашеного звездолёта.
ты прав - в Сургут пешком ушли тупые, хейтеры, пидагоги и профессионалы.
походу, нужно добавить флаги добавления функционала, что бы компилялось только нужное.
Да зачем, меня свое устраивает, не старайтесь.
ок.
не буду.
ИМХО не знаю кому как, а я не парюсь и просто пользую... если кому требуется что-то очень быстрое и специальное НИКОГДА не будет использовать универсальное. Я давно уже закатал велики в библы, и при необходимости разворачиваю прямо в коде дабы выкинуть лишнее буде тому потреба. Да и на гитхабе пару раз был...
Спасибо, Клапа! нормальные велики.
Пользую велик 1.0 совместно с кодом Dimax http://arduino.ru/forum/apparatnye-voprosy/ispolzuem-enkoder?page=5#comment-449417 для энкодера .
Едет хорошо, только руль под себя слегка подогнул;)
Пытаюсь к библиотеке прикрутить MCP23017 но знаний не хватает, как правильно работать с параметрами между классами?
Пытался обратиться к классу MCP ошибка что mcp не задекларирован.
button_v1.h
Пытаюсь объявить в классе button еще один класс Adafruit_MCP23017 *_mcp; после компиляции esp уходит к эксепшен и ребут.
Знаю что нуб, подскажите как правильно сделать?
Сдается мне, что напрямую не получится никак. Считывать состояние кнопок на расширителе нужно не силами библиотеки, а своими силами, потому что на "одном пине" может располагаться до 16 кнопок. Как вы предполагаете их различать из велосипеда? А есть ли на этом велосипеде возможность создания кнопки без привязки к пину и обработки ее состояний, я не знаю.
ЗЫ: только недавно тут поднимался этот вопрос, я даже внес кое-какие изменения в свою библиотеку
ЗЫ: только недавно тут поднимался этот вопрос, я даже внес кое-какие изменения в свою библиотеку
Спасибо. Идея с виртуальными кнопками действительно интересная! Попробую.
Не пойму как подключиться к этой схеме кнопок. Есть хорошая качественная панелька с кнопками, хочу ее приладить на станок на панель управления под Mach3, LPT на ардуину,а на ардуине панелька с кнопками. Снял схему с панельки кнопок, не могу сообразить как по этой схеме ее использовать.
Матрица 2х8. Активизировал 11 - смотришь с 3 по 10, затем 12 - и аналогично.
Только про защитные диоды на 11 и 12 не забывай, иначе одновременное нажатие двух кнопок из соседних рядов спалит пины
12 кнопок - 1 вход Ардуино. Есть и на 16 кнопок.
16-ти кнопочные мне пока не пригождались, а три штуки 3х4 успешно трудяца на своих местах. Единственное что, если нужно ловить одновременное нажатие двух и более кнопок - тогда это решение не годица.
Не совсем понял про подключение. По такой схеме 2х8 получается нельзя использовать одновременное нажатие нескольких клавишь?
Можно. Но без диодов защиты это чревато коротким замыканием между пинами
Можно без диодов. Активный низким, неактивный переводим на вход с подтяжкой.