Библиотека kakmyc_btn.h
- Войдите на сайт для отправки комментариев
Приветствую всех!
Пользуюсь уже где-то год примерно данной библиотекой. В основном использовал одинарный клик и долгое удержание (долгое удержание самая востребованная для меня).
Недавно нужно было в очередном своем домашнем проекте расширить функционал и при минимальных вмешательствах в печатную плату. К "выходам" подпаяться пропроблем не составило, а вот новые входы под кнопки установить было бы достаточно проблематично. Воспользовался заложенной в библиотеке возможностью "мультиклика" и просто "раскидал по кнопкам" функции двойного клика и даже тройного.
Хочу выразить пользователю данного форума под ником kakmyc ОГРОМНОЕ человеческое спасибо за его библиотеку!!! Выручила и не раз. Спасибо от чистого сердца! Здоровья и благополучия!!!
ЗЫ: Всем кто хочет высказаться какой я "ламер и не смог написать свою библиотеку" хочу сказать - Какого фига Вы компилятор используете? Пишите сразу в машинных кодах.. ))
Где взять?
Прошу прощения, ссылка вот: https://github.com/kakmyc-github/kakmyc_btn
Польщён.
Писалось с упором на простоту пользования и минимальные требования.
Корректировалось с помощью местных умельцев (4 байта вроде выкружили на экземпляр).
Пользуйтесь на здоровье
А если ещё ^T научиться использовать, цены бы не было). Боюсь даже предположить что там с проводами.)
подписался
ЗЫ: Всем кто хочет высказаться какой я "ламер и не смог написать свою библиотеку" хочу сказать - Какого фига Вы компилятор используете? Пишите сразу в машинных кодах.. ))
ничего не имею против Кактуса, он себя давно показал грамотным программистом.
А вот ваш, BOOM, агрессивный пафос против самостоятельного написания кода - больше подходит для форума гайвера. Это там считается благом обложить новичков библиотеками на каждый чих, вместо того чтоб позволить участникам самим набивать шишки в попытках разобраться в сути простейших конструкций языка. И еще там не принято критиковать эти "удобные и эффективные" библиотеки , даже если все знают. что в них куча ляпов.
У нас же, как мне кажется, традиции иные. Мы любим решать проблемы сами. И бронзовых авторитетов тут нет. Код любого "зубра" форума, даже Дедсимена, Дракулы или Евгения - будет разобран и, если того заслуживает, обосран :) без всякого снисхождения. И мне эта особенность очень нравится. :)
Вовращаясь к теме ветки - я не сомневаюсь. что Кактус может написать хорошую библиотеку - но остаюсь при мнении. что библиотеку кнопок каждый новичок должен написать сам.
ЗЫ в код не заглядывал
Вовращаясь к теме ветки - я не сомневаюсь. что Кактус может написать хорошую библиотеку - но остаюсь при мнении. что библиотеку кнопок каждый новичок должен написать сам.
ЗЫ в код не заглядывал
Так это и писал новичок.
Решил что в вопросе с кнопками чужого "кота в мешке" уж точно не надо. Поэтому накорябал с минималистичный набором необходимого функционала, но абсолютно прозрачную для пользователя.
Как показала практика ,при необходимости , натянуть туда прочие плюшки (будь то аналоговые кнопки или работу через прерывания) дело пяти минут.
Вот, кстати, возник вопрос: на Arduino Nano 328P хочется задействовать пины A6 и A7 под кнопки (на сколько знаю они чисто аналоговые и чисто на вход (INPUT)). Как в этом случае использовать библиотеку? Точнее - что в ней нужно поменять?
А вот ваш, BOOM, агрессивный пафос против самостоятельного написания кода....
У нас же, как мне кажется, традиции иные. Мы любим решать проблемы сами. И бронзовых авторитетов тут нет.
Ну это, как говорится, кому что - кому "шашечки", а кому "ехать". Какой смысл изобретать велосипед в очередной раз? Я лучше потрачу это время на написание действительно нужного мне кода.
И никого в "бронзовые авторитеты" я не выделял, а просто поблагодарил по человечески.
Ничего не менял, просто отформатировал для лучшей читабельности.
kakmyc_btn.cpp
kakmyc_btn.h
Код выше представлен, начну предполагать что нужно изменить для работы еще и с аналоговыми входами, если кроме меня никому это не интересно (вот когда можно и "изобретать", так как готового не имеется)..
Конструктор. Если честно просто не знаю - можно ли его перегрузить? Если можно, то однозначно его нужно перегрузить, чтобы правильно организовалась работа в основном методе.
Основной метод класса (read () ). Нужно каким-то образом переопределить (по моему мнению) только вот эту строку:
Сейчас не дома. Постараюсь чуть позже свои мысли в код превратить, если доберусь опять до ПК (а вот проверять, скорее всего, завтра смогу или послезавтра).
Конструктор. Если честно просто не знаю - можно ли его перегрузить? Если можно, то однозначно его нужно перегрузить, чтобы правильно организовалась работа в основном методе.
Не надо тут ничего перегружать, ко всей библиотеке достаточно добавить одну единственную строчку - поэтому не вижу смысла затевать тут байду с перегрузкой или полиморфизмом. В конструкторе не нужно ничего менять вовсе.
для этого достаточно добавить обычный if, что-то типа такого в псевдокоде
если (пин == А6 или пин == А7) прочитать сигнал как аналоговый
иначе - вставить дефолтную строчку Кактуса
Оно у меня есть готовое и проверенное.
Осталось вспомнить где
Нашел, на счёт версии не уверен.
Но с шилдом 1602keyshield работало.
Написано до советов местных гуру, поэтому памяти кушает больше.
Нужно изменить тип данных переменных времени на uint16_t для экономии памяти
это ты выложил класс для подключения набора аналоговых кнопок
насколько я понял вопрос, BOOM хочет совсем другое - использовать А6 А7 просто как цифровые
Хотя в принципе да, если мы используем аналоговые входы - неразумно подключать туда всего по одной кнопке, лучше подключить несколько и освободить цифровые пины. (это я пишу для BOOM, если что)
Ну никто же не мешает вписать туда А6 и А7.
Или подключить к этим пинам 5-10кнопок.
А так да, невнимательно видимо прочитал, что надо.
Голова другим занята.
Столкнулся с теми же проблемами , что и ДедаСёма.
Как класс отсутствуют в продаже операционники двухканальные к157уд2. А у меня в станке на приводе их аж две штуки, одна точно дохлая, по второй не уверен.
Сижу вот мастырю аналог из lm358.
Кусок текстолита с разводкой под dip14 , а на нем lm'ка распаяна под нужные выводы.
Чем мы хуже китайцев то :-)
Ну почему же ТОЛЬКО? Это даже очень хорошее решения для "увеличения количества кнопок"))
Конструктор перегружать действительно бессмысленно. Достаточно добавить один параметр конструктору и еще один элемент в класс типа bool для определения типа подключенного пина (аналог или цифра). Тогда и определять что за пин не нужно будет. Даже и не знаю, по памяти скорее всего мой вариант будет кушать больше варианта b707 ?..
Я периодически забегаю к ПК (обои клеим блин во второй комнате у детей :), пока бабка моя с внуками у нас дома). Уже что-то разбили, надеюсь сильно что вазу )))
Столкнулся с теми же проблемами , что и ДедаСёма.
Как класс отсутствуют в продаже операционники двухканальные к157уд2. А у меня в станке на приводе их аж две штуки, одна точно дохлая, по второй не уверен.
Сижу вот мастырю аналог из lm358.
Лучшая замена ей - NE5532, LM358 по скорости нарастания не проходит, низкочастотная она
Имхо, использование "аналоговых кнопок" зло по своей сути. Я лучше какую нить mcp23017 засуну или регистр сдвиговый чем их.
Лучшая замена ей - NE5532, LM358 по скорости нарастания не проходит, низкочастотная она
Да мне тиристором рулить 100Гц частота.
Вполне сгодится
Да, на 100Гц вполне сгодится, только фронты растянет. но, если тиристору пофиг, то можно
Блин, я думал я один такой
Конструктор перегружать действительно бессмысленно. Достаточно добавить один параметр конструктору и еще один элемент в класс типа bool для определения типа подключенного пина (аналог или цифра).
зачем это все? какие-то параметры в конструктор. лишние переменные в класс...
у вас же есть номер пина, по нему делаете один единственный if
Да
Блин, я думал я один такой
Привод ЭПУ-2-1. Там один симистор скоростью управляет, но сразу обеими полуволнами. Работает в паре с мостом выпрямительным. Один ОУ отвечает за генерацию пилы и нульорган, а второй за обратную связь по току и задание. Обратная связь вроде отрабатывает, а вот нуль орган помер.
Ну, это ты еще Вегу МП-122с не чинил. Вот где ведро счастья-то. :)
Блин, я думал я один такой
Не понятно только в чем?))
Как буду дома, гляну УД, но у меня 140е точно есть (какие именно не помню, они в другом корпусе) если что напишу в эту тему.
140ых у меня на работе "полведра", только они по распиновке не подходят.
Кстати, поздравьте идиота.
В очередной раз забыл изображение отзеркалить при печати рисунка.
Заметил как обычно, после травления.
Час времени улетел в никуда.
ЛУТ? Я давно фоторезистом пользуюсь, чуть сложнее процесс, но качество и 100% результат этот минус перекрывают. Плату примерно за час готовлю (включая чернение шаблона гелевой ручкой), и это у меня старое хлорное железо. Заказал персульфат, пробовал года два назад, по незнанию раствор вылил после первого травления (а зря).
Уточнить по аналоговым входам еще хочу, поправьте если не правильно понял.
1. Я правлю только сам метод (read () ), в конструктор не лезу (мне тут только, если возможно, разъясните - INPUT или INPUT_PULLUP на аналоговый вход не влияет что в конструкторе используется, так?)
2. Для правильной работы аналоговых входов нужно на самой схеме подтянуть пин к +5В через резистор (например, 10кОм) и коммутация должна происходить на GND, так?
И так, сам не проверял. Я использую всегда кнопки с коммутацией на GND, в библиотеке (как я понимаю) с цифровыми пинами можно и на +5В организовывать коммутацию, верно?
Я использую самый доступный и самый агрессивный раствор. Перекись+лимонная кислота+соль.
15минут и готово. Все реактивы в наличии(аптечка+кухня) в крайнем случае в 5минутной доступности(магазин+аптека).
Если кнопка аналоговая там все зависит от схемы подключения и метода опроса.
А печатку то ЛУТ делаешь?
Не понял, что такое "аналоговая кнопка"....
2. Для правильной работы аналоговых входов нужно на самой схеме подтянуть пин к +5В через резистор (например, 10кОм) и коммутация должна происходить на GND, так?
поскольку подтягивать вы будете сами - можете и наоборот - подтянуть к GND , замыкать на +5в. Не забудьте только библиотеке об этом сообщить - у Кактуса в конструкторе есть отдельный параметр для настройки
В конструкторе речь идёт изначально о цифровых входах, не о аналоговых, я по Вашему вопросы задаю от того что читать не умею или все же в прочтённом чтобы разобраться? Перестаньте уже себя вести так высокомерно в разделе «песочница». Я никогда не претендовал на какие-либо «награды форума arduino.ru» (и мне они ни к чему), есть вопрос - можно ответить на него, можно направить на правильный ответ, можно просто промолчать, а вы просто ср#те в сообщениях (простите за мой «французский»). Ни от кого более на этом форуме, чем от вас (b707) я не видел столько подобного по сути флуда. (
Извините, но чисто аналоговые входы А6 А7 есть только у 328-го в квадратном корпусе - наны например. Надо ли про них так много думать? В свете развития в сторону esp stm и прочее?
То есть в dip корпусе у 328й нет пинов (аналогов ардуино а6 и а7)?
В конструкторе речь идёт изначально о цифровых входах, не о аналоговых, я по Вашему вопросы задаю от того что читать не умею или все же в прочтённом чтобы разобраться? Перестаньте уже себя вести так высокомерно в разделе «песочница». Я никогда не претендовал на какие-либо «награды форума arduino.ru» (и мне они ни к чему), есть вопрос - можно ответить на него, можно направить на правильный ответ, можно просто промолчать, а вы просто ср#те в сообщениях (простите за мой «французский»). Ни от кого более на этом форуме, чем от вас (b707) я не видел столько подобного по сути флуда. (
простите, с чего вдруг такой взрыв негодования? Где я вам что неправильно написал? Смотрите внимательно код Кактуса - в его библиотеке можно настроить работу с кнопками как с подтяжкой к +5в и замыканием на GND, так и наоборот. За это отвечает параметр state в конструкторе.
а какие используются входы - цифровые или аналоговые - в данном случае значения не имеет.
PS во репутация что делает... уж и отвечаешь совсем без глума - а все равно во всех грехах обвинят :) BOOM, читайте внимательнее код, я вообще не имею привычки намеренно путать собеседника, даже когда глумлюсь над ним. А в данном случае я даже не глумился.
Открой распиновку УНЫ и : Ты всё поймёшь, ты всё увидишь сам (С) Ах, водевиль, водевиль...
ну что, BOOM, может извинишься?
ну что, BOOM, может извинишься?
А за што, сопсно? Чел просто поблагодарил за удачную биб-ку. Я думаю, не надо всех в агрессивной манере принуждать писать биб-ки самому, кому-то это дано, а кто-то еще на пути к вершинам.
Деда, причем тут мое принуждение к написанию библиотек? :)
Мы с ним уже после этого вполне конструктивно обсуждали добавление к коду пинов А6 и А7. Я ему все обьясняю честно, без сарказма или глума - в ответ получаю выпад #36 - абсолютно немотивированный и необоснованный
Впрочем, я не обидчивый...
с людями надо помягше. :)
с людями надо помягше. :)
и поменьше...
Да.
Нам вот с котом на них вапще пофиг. :)
ну что, BOOM, может извинишься?
Впрочем, я не обидчивый...
Да я тоже не обидчивый.
Ты пойми, тут далеко не ВУЗ (или школа, или шарага, а форум (да, со своими странными правилами, но форум)), взрослый мужик ведь и должен уже "мух от котлет отделять".
Благодарен за предоставленный "материал" всем участникам. nik182 благодарен за "свежий взгляд", так как до А6 и А7 на нано никогда дело не доходило ранее и даже не обращал внимание на то, что они отсутствуют в 328P DIP корпусе. Просто делал на нано макет, потом HEX заливал в Atmega328P в DIP и радовался поделке.)) Просто зрение уже не то, чтобы smd паять так легко. Но могу, и даже буду пробовать! Не стар - пока не умер!
Глянул что у меня есть из "раритета", вот такое:
Транзисторы: ГТ 806В, П605, П701А, микросхемы разные140'е и 553'е, К514ИД2, КМ551УД2А, К155ТВ1 (унч 553 много). А вот 157УД2 не нашел ((( Может и есть где, но в гараже в завалах - пока найду уже все починишь ))
ЗЫ1: вот такоей раритет еще есть:
ЗЫ2: Если кому надо - пишите.
Уже готовы замены
Красиво. Я в былые времена к122ун1 из кт315 делал. Давно это было, и далеко не так изящно)))