Pull to refresh

Comments 56

А позвольте нубский вопрос? Почему нельзя упростить эту схему поставив на кнопки один общий резистор. И отдельный - один на общий контакт индикатора?

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

Потому что кнопки принимают аналоговый сигнал, а не цифровой…

Аааааааа зачем Вы так сделали? Привешано же по одной кнопке на ногу.

… если мы будем использовать только один резистор то когда мы зажмем одну кнопку контроллер посчитает…

Честно говоря непонятно что посчитает контроллер т.к. нет нормальной схемы и как включены переключатели глядя на приведенную "схему" - непонятно.

P.S. отдельный вопрос возникает по регистру, накой он тут нужен? по хорошему его надо заменить на 4 верхних ключа на pnp транзисторах.

Зачем я так сделал ? затем что так видел схему, такой опыт имею, если внимательно рассмотрите картинки в статье то найдете распиновку кнопок, изначально они подтянуты к минусу.

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

Зачем я так сделал ? затем что так видел схему…

Схема тут причем? Судя по Вашим дальнейшим рассуждениям кнопочные ноги через 150 ом подтянуты к земле, кнопка коммутирует на ногу +5В. Вопрос накой задействовать АЦП? Просто состояние регистра pin* считать быстрее и проще.

… если внимательно рассмотрите картинки в статье …

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

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

  1. Что то слабо верится в то что перечисленный комплект радиодеталей был подрукой;

  2. Токи от индикатора посчитайте, и гляньте сколько 74 серия держит.

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

UFO just landed and posted this here

В том и вопрос, зачем усложнять железо, если все решается софтово или встроенными методами? Может есть какие особенности, нюансы или бест практисы?

UFO just landed and posted this here

Да я уже понял, отредактировал в статье.

Встроенные pull-up не всегда работают надёжно.
Ненадёжно — это вообще как? Барахлят что ли…
Или имеется в виду что 50мка тока подтяжки не хватает чтоб придавить наводки с 10 метров кабеля? Но встроенные подтяжки и не для этого вовсе предназначены.
UFO just landed and posted this here
В промышленных девайсах почему-то хватает. Померьте ток через кнопочку у монитора и т.п., те же 50-70мка почти везде и будут.

Ах, если бы.

Уж с дребезгом контактов на уровне софта порешать точно можно. Особенно в микрокнопке с мизерным током

UFO just landed and posted this here

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

Благодарю, на днях дополню статью.

после перехода между 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 или аналоги
обрекает «начинающих», для которых вы пишете, скачивать даташиты и восстанавливать схему по цветным проводкам на вашей картинке. Что для новичка — непростая задача. А еще нужно догадаться, что это надо делать. (Даташит на этот индикатор еще и не ищется. Где вы его взяли?)
UFO just landed and posted this here

Мне ? никак, я прошивал через ESP32 devkit замкнув reset на землю. Но я знаю что на самих arduino mini частенько используется CP2102 для прошивки ATmega328p поэтому я решил что преобразователь USB-UART вполне подойдет.

Т.е. вопрос наличия arduino'вского начального загрузчика не исследован.
[ИМС прошита перед отправкой пользователю]

UFO just landed and posted this here
через сильно проприетарный Parallel Programming
И что же в нём такого «сильно проприетарного»? Абсолютно типичный протокол программирования ПЗУ. Официально подробно описанный в даташите. Не более проприетарный чем набор регистров/команд любой другой микросхемы. Свой первый мк я прошил 18 лет назад имея только даташит и знание как дёргать ножками лпт порта…
UFO just landed and posted this here
«Кастомный», вероятно. Сравнение, впрочем, не особо корректное т.к. уарт/и2ц/спай — это не протоколы, а интерфейсы, как впрочем и паралелльная шина, а сам протокол бегает по ним уровнем выше. Так-то протокол которым шьётся ардуйня через уарт — тоже кастомный, как и подавляющее большинство протоколов вообще :)
UFO just landed and posted this here

Если голый МК - не заработает, загрузчик нужен, а его туда засунуть можно либо через готовую 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 миллигерц, и главное – зачем? Зачем слова "четырех разрядный" и "семисегментный" он разорвал пополам?

UFO just landed and posted this here

Статья очень понравилась) Возник вопрос, а что за ПО использовали для визуализации и сборки компонентов?

Я сам не мастер по крестам, но за такое количество if люди могут зарезать даже без доп вложенностей как у вас )). switch-case религия не позволяет? Если позволяет, - советую рассмотреть. И читаемость кода улучшит и поддерживаемость.

Sign up to leave a comment.

Articles