В этом посте мне хотелось бы чуть подробнее рассказать о проекте электронных игральных костей, который ранее был упомянут в заметке о мультиплексировании светодиодов и кнопок. Игральные кости плохо видно в темноте и они постоянно укатываются со стола на пол. Мне показалось, что их электронная версия является довольно полезным устройством, лишенного названных недостатков, и я принялся за проектирование платы.
Видели когда-нибудь светодиодную матрицу с бегущей по ней строкой текста? Такие можно увидеть в метро, автобусах, аеропортах, да много где. В одной матрице содержатся сотни светодиодов. А свободных пинов у микроконтроллера обычно лишь несколько десятков, а то и меньше. То есть, он никак не может подключить по светодиоду на каждый пин и управлять матрицей, подавая на эти пины высокое и низкое напряжение. Так как же это тогда работает?
Осилил вывод текста на ЖК-индикаторы. Тема эта далеко не новая, в той же книжке Джереми Блума она подробнейшим образом освещена. Посему я полагаю, что многим любителям электроники она уже знакома. Так что, постараюсь осветить тему предельно коротко, чисто чтобы иметь шпаргалку у себя под рукой, и, быть может, заинтересовать пару читателей, еще не знакомых с ЖК-индикаторами.
Из заметки Как собрать Arduino прямо на макетной плате вы можете помнить, что Arduino так легко и просто программируется благодаря залитому в его микроконтроллер бутлоадеру. Но использование бутлоадера не всегда удобно, так как он занимает лишнюю flash-память в микроконтроллере, тормозит при его запуске, не говоря уже о том, что в новые микроконтроллеры его нужно каждый раз прошивать. И ведь можно обойтись без него, если один раз обзавестись программатором.
На конференции ZeroNights, которая состоялась в прошлом ноябре, можно было получить особый бейдж — печатную плату в форме логотипа конференции, матрешки. Он также известен, как ZeroNights Badge или ZeroBadge. Мне лично бейдж достался за вроде как интересные вопросы на митапе r0 Crew. Как выяснилось, ZeroNights Badge представляет собой плату Arduino Leonardo, ту, что на базе микроконтроллера ATmega32U4. Такой модели Arduino у меня не было, да и поупражняться лишний раз в пайке поверхностным монтажом я был не против, поэтому я решил впаять в бейдж недостающие компоненты.
На данный момент в блоге поднакопилось уже достаточно много постов, посвященных электронике. Но все они рассказывают только об использовании отдельных компонентов на макетной плате, ну или вроде того. Думается, не повредит привести пример того, как, используя имеющиеся у нас на данный момент знания, сделать что-то сравнительно полезное. Например, электронные часы.
После знакомства с Arduino вы могли заметить, что в некоторых аспектах это устройство не очень-то удобно. Лично у меня провода между Arduino и макетной платой постоянно отваливаются, да и места эта конструкция занимает многовато. К счастью, микроконтроллер ATmega328P, на базе которого работает Arduino Uno, можно легко извлечь из устройства. Нужно только воткнуть под него пинцет сначала с одной стороны, а затем с другой. Учитывая, что помимо ATmega328P в Arduino Uno не так уж много компонентов, интересно, удастся ли нам собрать свою Arduino прямо на макетке?
Это было неизбежно. Увлекшись электроникой, я должен был рано или поздно дойти и до программирования микроконтроллеров. А что может быть проще программирования AVR-микроконтроллеров в устройствах Arduino? Не удивительно, что начать я решил именно с них. Что же из этого получилось — читайте далее.