Светодиодная матрица 8х8

На такой матрице можно сделать интересный автомат световых эффектов, игрушку, или использовать как обычный индикатор. Интересно будет смотреться двигающаяся стрелка, указывающая направление, или трансформирующийся логотип. В статье я представлю светодиодную матрицу в качестве обычной бегущей строки.  По идее,  бегущую строку нужно мастерить на 2-х  —  N таких матрицах, но ситуации бывают разные, и после прочтения этой статьи, может быть, такие убеждения изменятся.
Для затравки можно посмотреть, как выглядит бегущая строка на матрице 8х8 в исполнении ATmega8515.

Если понравилось, читаем дальше и мотаем на ус.
Схематически матрица это… она… такая… эта…. Короче матрица она и есть матрица N строк на M столбцов, в узлах которой включены светодиоды. Её можно сделать и самому, но промышленная выполнена  единым корпусом, красивая, и с пазами на сторонах этого корпуса для чёткого соединения в блоки. Такие матрицы бывают разных размеров: как по количеству светодиодов N x M, так и геометрических. Для формирования изображения на ней ( в моём случае — символов) я использую принцип динамической индикации, хорошо расписанный в десятках примеров в интернете. В двух словах принцип динамической индикации базируется на инертности человеческого глаза, и заключается в кратковременном поочерёдном отображении точек, составляющих изображение в течении некоторого времени. В результате изображение будет восприниматься как цельное.
Я воспользовался матрицей 8 на 8 размерами 37 на 37 мм. Схема макета представлена ниже:
А здесь готовое смакетированное устройство:

В качестве ключей — мои любимые 2n7000, теперь в smd исполнении. На строки — ограничивающие резисторы. Управляющий контроллер ATmega8515 — это совершенно не принципиально. Многие практикуют выполнение бегущей строки с использованием сдвиговых регистров — в общем это правильно. Но, если в контроллере хватает портов, вполне можно обойтись и без сдвиговых регистров. Например, на той же меге 8515  можно без напряга сделать бегущую строку 8х24, и ещё три разряда порта Е останутся для чего-нибудь. Я, вообще, приверженец использования ресурсов контроллера по максимуму, без добавления сторонних корпусов, насколько это возможно. Но это моё личное мнение, и к статье не имеет никакого отношения. Массив, формирующий символы мне составлять не пришлось, т.к.  я использовал наработки по TFT-дисплею — принцип тот же. Посмотрите в исходник — комментарии разъяснят Вам непонятные моменты. Кусок кода для движения бегущей строки в обратном направлении закомментирован, при необходимости используйте его. Вот в общем и всё.

P.S. Кстати, многие небольшие магазинчики и торговые точки не прочь бы обзавестись бегущей строкой в качестве рекламы-вывески. Неплохой способ подзаработать своими знаниями.

Запись опубликована в рубрике Микроконтроллерный конструктор с метками . Добавьте в закладки постоянную ссылку.

32 комментария: Светодиодная матрица 8х8

  1. Иван говорит:

    Здравствуйте как добавить русский алфавит в прошивку?

  2. s_black говорит:

    Так вот же я объяснял принцип формирования символов. Можете таким образом закодировать любой символ и добавить в массив. Удачи!

  3. Иван говорит:

    Как добавить в масив я понял но это пол дела а чтоби они отображались на матрице тамжеж нужно подправить код или я чтото нетак понимаю?

  4. Сергей говорит:

    http://max-energy-saving.info Энергосбережение Энергоэффективность Форум

  5. Dmitriy говорит:

    Не понял зачем тут транзисторы? Ток ведь все равно течёт через микроконтроллер.

  6. uZZZer говорит:

    Не рабочий пример:((((
    Проверял в Протеусе.

  7. uZZZer говорит:

    Исходник точно рабочий ? проверьте плиз…

  8. s_black говорит:

    «… Не рабочий пример:((((
    Проверял в Протеусе….»
    Та Вы шо !? А как по Вашему я снял видео? Специально запудриваю мозги читателям? ШПротеус фтопку.

    «… Исходник точно рабочий ? проверьте плиз …»
    Уважаемый uZZZer, нерабочих и непроверенных лично мною исходников я на свой сайт не выкладываю.

  9. uZZZer говорит:

    Да понятно, что Протеус — это не самое лучшее, н пока только к нему имею доступ…
    Вот файл проекта для Dot matrix.
    http://www.fayloobmennik.net/4881545

  10. uZZZer говорит:

    А по этой схеме я подключал.
    http://wmhost.ru/img/di-U24E.jpg

  11. Boris говорит:

    Подключал как на схеме, хрень какая то выводится… Аффтор ну напиши как ты это все сделал ? Схему подключения дай… А то я например только начал занимать МК и для меня это сложно !

  12. Олег говорит:

    Действительно, а напишите подробнее, как подключать матрицу к МК ?

  13. s_black говорит:

    Лады. В ближайшее время нарисую схему.

  14. s_black говорит:

    Олег, а плату с матрицей Вы какую используете?

  15. Олег говорит:

    Такую же, которую uZZZer выложил.

  16. s_black говорит:

    1. По приведённому Вами рисунку нет нумерации выводов, т.е. непонятно, где анод линии, а где катод. Исходя их этого факта нужно проверить правильно ли распределены линии порта на выводы матрицы.
    2. Не вижу токоограничительных резисторов. Или они имеются, но не нарисованы?
    3. Если имеются, то каково их сопротивление?
    У меня в схеме каждая колонка их 8-ми светодиодов (это байт порта С) коммутируется на «землю» для подсветки полевиками 2N7000 (порт А). Резисторы у меня выбраны 390 Ом (ток через разряд порта-светодиод приблизительно 10 мА), т.е. в случае, если порт С выдаёт 0b11111111 — все единицы, то ток колонки будет Iкол = 8 х 10 мА = 80 мА, что в два раза больше максимально допустимого через разряд. Именно для этого у меня стоят транзисторы, которых у вас нет — это ответ для Dmitriy 11.05.2015.
    Так вот пересчитайте токи в своей схеме подключения и проверьте соответствие выводов матрицы разрядам портов.
    Вчера собрал макет, погонял разный текст — всё работает прекрасно.

  17. Олег говорит:

    А какой светодиод к какому выводу порта подключать ?

  18. Олег говорит:

    И как запускать схему ? Просто нет сигналов на выводах портов контроллера…

  19. s_black говорит:

    Посмотрите на моей схеме — там каждый разряд портов А и С подписаны номерами выводов матрицы.
    Как запускать схему? Запрограммируйте контроллер и подайте питание.

  20. Олег говорит:

    Все дело в том, что на выходах этих портов всегда «0» у меня… Не могли бы вы модель в протеусе посмотреть ?

  21. s_black говорит:

    Извините за нескромный вопрос: «А Вы когда-нибудь раньше программировали МК? Ну, типа, светодиодом поморгать.» Успешно?

  22. Олег говорит:

    Да, было дело, светодиодом получалось поморгать. Вполне успешно.

  23. s_black говорит:

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

  24. Олег говорит:

    Да нет все нормально вроде…

  25. Олег говорит:

    Может глупо: А скиньте рабочую прошивку… У меня как то было такое, что не работало по причине глючности компилятора.

  26. Олег говорит:

    Я макет просто сейчас собрать не могу, имею доступ только к Протеусу.

  27. s_black говорит:

    Так ведь рабочая прошивка лежит в статье а архиве ))) И всегда там лежала. Протеус фтопку.

  28. Курильщик говорит:

    Так привет всем трезвенникам !
    Ну во первых, что бы схема работала, нужно ее правильно собрать:) Вот так хотя бы: http://rghost.ru/8df5gdqCJ
    Собственно, вопрос к автору: Что такого особенного в Меге 8515 ? Почему на ней твоя программа работает безупречно, а например на 8535 или atmegs32 не работает ? Или я не ту траву курю ?
    Если я все правильно понимаю, то отличия от 8535 и 8515 минимальны. Одна из них приспособлена для работы со внешней памятью, а к другой прикручен 12ти разрядный АЦП или 8515 какая то особая, типа мега-арийская ? Просто собрал сегодня за ночь три макета с камнями: 8515, 8535, 16 и 8. 8515 — работает на ура ! с остальными камнями работать на отрез оказывается ! А так спасибо большее очень хороший и красивый пример:)

    П.С. Аффтор, попробуй собрать макет с восьмеркой или 8535, могу даже тебе выслать почтой эти камни или оплатить расходы.

  29. Курильщик говорит:

    О. аффтор, сорри ! Это я дебилко ! Там биты TOIE0 в TIMSK разные у всех камней !
    Короче для 8535 надо писать TIMSK=0x01, а не TIMSK=0x02 как у тебя для 8515 и будет все пахать как Папа Карло. Для 8, 16 и 32 Мег, соответственно свои значения битиков выставлять. В общем освети это в своем опусе, а то для новичков это трудно самому догадаться !

  30. Познающий говорит:

    А что нужно изменить, что бы переписать программу программу под матрицу 5х7 ?

  31. s_black говорит:

    Olesya , скажите ЧТО конкретно непонятно в приведённом коде?

Добавить комментарий

Ваш e-mail не будет опубликован.