Comments 56
А позвольте нубский вопрос? Почему нельзя упростить эту схему поставив на кнопки один общий резистор. И отдельный - один на общий контакт индикатора?
Потому что кнопки принимают аналоговый сигнал, а не цифровой и если мы будем использовать только один резистор то когда мы зажмем одну кнопку контроллер посчитает что мы зажали все кнопки, это будет связанно с тем что у нас все кнопки имеют один минус без ограничений виде резисторов на котором энергия меньше чем на плюсе и из за разницы потенциалов мы отправим на все пины больше заряда чем тот что мы условились игнорировать в коде то есть больше 128.
У индикатора не один общий контакт, а четыре к каждому из наборов сегментов, резисторы подключены так чтобы распределить нагрузку на каждый из сегментов, так чтобы они не мешали друг другу гореть с одной и той же яркостью.
Потому что кнопки принимают аналоговый сигнал, а не цифровой…
Аааааааа зачем Вы так сделали? Привешано же по одной кнопке на ногу.
… если мы будем использовать только один резистор то когда мы зажмем одну кнопку контроллер посчитает…
Честно говоря непонятно что посчитает контроллер т.к. нет нормальной схемы и как включены переключатели глядя на приведенную "схему" - непонятно.
P.S. отдельный вопрос возникает по регистру, накой он тут нужен? по хорошему его надо заменить на 4 верхних ключа на pnp транзисторах.
Зачем я так сделал ? затем что так видел схему, такой опыт имею, если внимательно рассмотрите картинки в статье то найдете распиновку кнопок, изначально они подтянуты к минусу.
Транзисторов не оказалось под рукой, сделал с тем что имею заодно рассказал как можно размножить выводы контроллера.
Зачем я так сделал ? затем что так видел схему…
Схема тут причем? Судя по Вашим дальнейшим рассуждениям кнопочные ноги через 150 ом подтянуты к земле, кнопка коммутирует на ногу +5В. Вопрос накой задействовать АЦП? Просто состояние регистра pin* считать быстрее и проще.
… если внимательно рассмотрите картинки в статье …
Вместо одной схемы рассматривать горы картинок, зачем? Не проще ли нормальную схему по госту нарисовать? Ну или если уж цветных лубков хочется - хотя бы пририсуйте на картинках кнопок на схеме где там замыкаются проводники.
Транзисторов не оказалось под рукой, сделал с тем что имею заодно рассказал как можно размножить выводы контроллера.
Что то слабо верится в то что перечисленный комплект радиодеталей был подрукой;
Токи от индикатора посчитайте, и гляньте сколько 74 серия держит.
Итого - лучше так не делать. Если уж вешаете 595 регистр то делайте статику - один регистр на индикатор, тогда действительно ноги поэкономите и за регистры по току насиловаться не будут.
В том и вопрос, зачем усложнять железо, если все решается софтово или встроенными методами? Может есть какие особенности, нюансы или бест практисы?
Да я уже понял, отредактировал в статье.
Встроенные pull-up не всегда работают надёжно.Ненадёжно — это вообще как? Барахлят что ли…
Или имеется в виду что 50мка тока подтяжки не хватает чтоб придавить наводки с 10 метров кабеля? Но встроенные подтяжки и не для этого вовсе предназначены.
Ах, если бы.
Уж с дребезгом контактов на уровне софта порешать точно можно. Особенно в микрокнопке с мизерным током
Благодарю, на днях дополню статью.
после перехода между 0 и 1 в любую сторону игнорировать этот пин в течение нескольких микросекундТактовая кнопка дребезжит несколько миллисекунд, что на 3 порядка больше. Для фильтрации можно взять 20мс, лучше 50.
И не обязательно фильтровать каждый пин в отдельности, можно просто опрашивать все кнопки не чаще чем раз в 20-50мс. Я тут упоминал, с картинками. Даже если опрос попадёт на нестабильность, мы получим или 0-0-1 или 0-1-1, но всё равно не больше одного фронта.
Так то емнип в нутре этой шайтан микросхемы есть встроенные pull up резисторы. Можно обойтись и без внешних резисторов.
Ни одного кондера по питанию... зато из-за кривого кода аж 4 по 50мкФ привешано на ноги 495 регистра.
Обычно для динамической индикации сначала гасят все сегмены A-H, потом переключают индикатор, затем включают нужные сегменты A-H.
Наверняка в техническом плане есть неточности, и с уровня ничего в теме не шарящего (читай чайника, то есть меня) осталось много неочевидного. Но статья наверняка может служить хорошим пособием для мотивации начинающих.
Отдельное спасибо за качественные иллюстрации в одном стиле и по делу.
P.S. Надеюсь автор не забьёт и обратная связь по орфографии тоже будет вноситься.
Берите нормальные туториалы, с по человечески нарисованными принципиальными схемами, с уважением к даташитам и азам схемотехники.
Я нарисую схему, кто же мог подумать что для начинающих важна именно принципиальная схема, а не наглядность.
Может сделаете принципиальную схему тогда ? В комментариях образовали очень бурный монолог на эту тему, вам должно быть очень интересна и не безразлична тема этой статьи, так помогите сообществу стать просвещенней. Если сделаете я даже готов вас упомянуть и высказать вам благодарность за вклад в развитие хабра и кармы вам добавят (во всяком случае я лично добавлю), сможете писать еще больше таких конструктивных и необходимых комментариев на сайте.
А ваша фраза
Sm56425bsr3 или аналогиобрекает «начинающих», для которых вы пишете, скачивать даташиты и восстанавливать схему по цветным проводкам на вашей картинке. Что для новичка — непростая задача. А еще нужно догадаться, что это надо делать. (Даташит на этот индикатор еще и не ищется. Где вы его взяли?)
Мне ? никак, я прошивал через ESP32 devkit замкнув reset на землю. Но я знаю что на самих arduino mini частенько используется CP2102 для прошивки ATmega328p поэтому я решил что преобразователь USB-UART вполне подойдет.
Т.е. вопрос наличия arduino'вского начального загрузчика не исследован.
[ИМС прошита перед отправкой пользователю]
через сильно проприетарный Parallel ProgrammingИ что же в нём такого «сильно проприетарного»? Абсолютно типичный протокол программирования ПЗУ. Официально подробно описанный в даташите. Не более проприетарный чем набор регистров/команд любой другой микросхемы. Свой первый мк я прошил 18 лет назад имея только даташит и знание как дёргать ножками лпт порта…
Если голый МК - не заработает, загрузчик нужен, а его туда засунуть можно либо через готовую arduino, либо USBasp программатор. Из коробки не будет.
За modeId == 1
нужно бить по пальцам. Желательно осиновыми розгами, но можно и затрещин навешать. Это не призыв к рукоприкладству, но разве так тяжело учить хорошему сразу? Неужели руки отсохнут сделать #define MODE_WITH_DETAILED_DESCRIPTION 1
if(modeId == MODE_WITH_DETAILED_DESCRIPTION) { ... };
вот так?
Любому программисту будет легко понять код с первого взгляда без постоянного скролла по магии чисел и без забивания головы о том, что эта единичка, размазанная ровным слоем по всем if'ам, значит.
Зачем вы сразу учите людей плохому? Их потом переучивать с этого дерьма годами...
Спасибо, будет исправлено.
За modeId == 1 нужно бить по пальцам.А как же за кодирование восьми битов СТРОКОЙ «01010101»? И намеренье УЧИТЬ этому? Такой жести я давно не видел…
Автор обещал исправиться и это главное.
Всегда проще высказываться, чем хоть что-то делать, рисковать, тратить время, силы или пытаться. Предлагаю вам потренироваться собрать свое первое устройство на базе моего обучающего материала считаю это будет хороший старт для вас. Удачи!
Аргумент "сначала добейся" - моветон в приличном обществе инженеров. Вы, батенька, сначала сделайте так, чтоб комар носа не подточил со всех сторон, а уж после бравируйте призывами "ты сначала собери мое устройство". Здесь многие могут собрать устройства в разы сложнее, с модульностями и куртизанками.
Я так и не понял что за игра там запрограммирована.
Да, я думаю, это не для начинающих. Начинающий не поймет, ни как заливать прошивку в эту хтоническую машину (ни слова про fuse-биты, это круто же), ни что не так с точностью часов, с питанием, с кодом на JavaScript++..
Буквы придумали не для меня и вообще не для детей которые хотят заниматься электроникой.
"Знание некоторых принципов — способно возместить незнание некоторых фактов".
Держите честно заработанный статейкой минус.
Резисторы предназначены для ограничения тока исходящего от ATmega328p, а именно 5 вольт мы ограничиваем до 3-х вольт
Все. Дальше я не смог.
Обратили внимание тут, кстати :)
Если использовать пин 13 регистра сдвига, то можно было бы отказаться от конденсаторов.
А если поставить еще один регистр сдвига, то можно было бы еще сэкономить ног у микроконтроллера.
Сами мы используем микросхему AS1115-BSST для таких целей.
Тогда вообще только два пина от микроконтроллера требуется.
А какой программой вы рисовали? Симпатичные картинки получились.
Тяжело всё это читать. Натужный юмор, пафосный стиль, отсутствие половины запятых. Почему автор пишет Ватт с заглавной буквы, хотя омы и фарады с маленькой? Почему он миллиметры пишет латиницей, а прочие единицы измерений кириллицей? Что это за светодиод такой длиной 75 мм? Где он нашел кварц на 16 миллигерц, и главное – зачем? Зачем слова "четырех разрядный" и "семисегментный" он разорвал пополам?
Статья очень понравилась) Возник вопрос, а что за ПО использовали для визуализации и сборки компонентов?
Я сам не мастер по крестам, но за такое количество if люди могут зарезать даже без доп вложенностей как у вас )). switch-case религия не позволяет? Если позволяет, - советую рассмотреть. И читаемость кода улучшит и поддерживаемость.
Электроника всем начинающим