Светодиодная реклама бегущая строка своими руками. Как сделать бегущую строку из светодиодов? Монтаж светодиодных модулей бегущей строки своими руками

💖 Нравится? Поделись с друзьями ссылкой

Табло " " несложно собрать своими руками, используя , который состоит из нескольких модулей табло с шагом 10, 13, 16 мм одного или нескольких цветов, блока (блоков) питания, управляющего контроллера, набора соединительных кабелей и программного обеспечения.

Каждый модуль табло имеет с обратной стороны отверстия с резьбой для крепления к корпусу. Модули предназначены для уличной установки и полностью герметичны с наружной стороны. При установке в корпус, необходимо выполнить герметизацию модулей, для чего в комплекте имеется силиконовая прокладка. Для дополнительной герметизации, стыки между модулями желательно дополнительно загерметизировать силиконом бескислотной полимеризации. При этом, нельзя заполнять силиконом канавку, расположенную по окружности модуля, она предназначена для отвода воды. Модули устанавливаются на плоскую панель, в которой сделаны вырезы для выполнения электрических соединений и вентиляции (охлаждения). Например, панель корпуса для установки трёх модулей выглядит так:

Каждый модуль табло имеет разъем для подключения питания и два сигнальных разъема. Сигнальные разъемы одинаковые по типу, но один разъем - входной, второй - выходной. При подключении питания, используется красный провод (контакт VCC - +5 Вольт) и чёрный провод (контакт GND - Общий). Все модули подключаются параллельно к одному блоку питания. Если в табло устанавливается два и более блоков питания, то модули распределяются равномерно между блоками питания, по линии GND все модули соединяются параллельно, по линии питания VCC - каждая группа к своему блоку питания отдельно.

Сигнальные разъемы на модулях обозначены IN и OUT (например JIN, JOUT или стрелками к разъему - это вход, от разъема - это выход). Простая бегущая строка, когда модулей мало и они расположены в один ряд, имеет простое соединение - кабель от контроллера подключается к правому модулю на вход, выход правого модуля подключается к входу следующего модуля и так далее. Сигнальный кабель имеет маркировку первой линии красным цветом. При подключении разъёмов необходимо соблюдать ориентацию разъемов - они имеют пометку первого контакта. Модули в более сложных табло подключаются группами к своему выходу контроллера. Если выходов контроллера недостаточно, устанавливается плата расширения выходов - хаб. Схема включения модулей в таком случае уточняется при покупке комплекта.

Блок питания и контроллер закрепляются внутри корпуса табло в удобном месте. Блок питания может существенно нагреваться, поэтому его лучше закрепить на задней стенке, причем заднюю стенку желательно изготовить из теплопроводного материала (металла, алюмокомпозита).

Перед установкой табло, его необходимо проверить. Для этого, на компьютере необходимо установить программу управления и выполнить действия, указанные в описании программы.

Еще одна простая конструкция для начинающих радиолюбителей - бегущая строка на таймере 555. Микросхема включена по схеме генератора прямоугольных импульсов. Частота генерируемых импульсов порядка 2-3 герц, их можно регулировать подбором электролитического конденсатора (10мкФ) и регулировкой сопротивления переменного резистора.

Рассматриваемая схема может работать в широком диапазоне питающих напряжений, генерация начинается от 5 Вольт (ниже не пробовал). Это простая и несколько раз перепроверенная схема бегущей строки может стать отличным подарком для ваших любимых. На основе трех таких схем, можно получить очень красивые зрительные эффекты. После подачи питания, микросхема (генератор) будет подавать низкочастотные импульсы на вход счетчика, тот будет считывать каждый импульс, поочередно переключая светодиоды. Можно также подключить несколько последовательно соединенных светодиодов для каждого канала. Оптимальное рабочее напряжение схемы 9-12 Вольт.

Счетчик СD4017 включен по стандартной схеме без дополнительных комплектующих компонентов. НЧ сигнал с микросхемы NE555 подается на счетчик. Счетчик имеет 10 каналов с отдельными дешифраторами. Светодиоды можно взять буквально любые, цвет и рабочее напряжение не столь важно, в моем случае были использованы полностью идентичные синие ЧИП светодиоды.

Ток потребления бегущей строки не превышает 50 мА, в редких случаях может доходить до 80. Потребление схемы в основном зависит от времени переключений светодиодов, при пониженной частоте переключений (1-3 Герц) токопотребление может быть минимальным - 20-30 мА.

Монтаж сделан на макетной плате, количество компонентов минимальное. В схеме даже не задействован вывод контроля генератора. Для ограничения напряжения светодиодов, использован резистор, но если планируется использовать последовательное соединение светодиодов (скажем 3-4шт), то резистор может быть исключен из схемы. Видео работы LED бегущей строки:

Область применения - различные автоматы световых эффектов, новогодние гирлянды, оформление витрин магазинов и рекламных стендов. Естественно в этом случае подключают более мощные светодиоды, с коммутацией их полевыми транзисторами.

Сборка бегущей строки на базе светодиодной матрицы и Arduino – это несложная задача, которую можно выполнить даже в домашних условиях. Чтобы заставить буквы перемещаться на светодиодном табло не нужно быть программистом и владеть углублёнными знаниями электроники. В данной статье разберем, как собрать бегущую строку из готовых светодиодных матриц и Arduino Nano.

Что потребуется?

Для реализации идеи потребуется совсем немного деталей:

  • два светодиодных модуля, состоящих из четырёх матриц 8 на 8 пикселей;
  • держатель для батарейки типоразмера «Крона»;
  • батарейка на 9 вольт (CR-9V, ER-9V или их аналоги);
  • двухконтактный переключатель;
  • соединительные провода;
  • плата Arduino Nano;
  • термоклей.

Схема

На печатной плате используемого светодиодного модуля расположено 4 матрицы размером 8 на 8 пикселей. Каждое светодиодное табло управляется интегральной микросхемой (ИМС) MAX7219. Данная ИМС представляет собой контроллер управления led-дисплеями, матрицами с общим катодом и дискретными светодиодами в количестве до 64 шт.

Для более комфортного восприятия информации, выводимой на светодиодное табло, рекомендуется устанавливать несколько модулей. Для этого их объединяют в последовательно включенные группы, то есть выход первого модуля (out) подключают к входу второго модуля (in). Данная сборка состоит из двух модулей (16 матриц), длины которых вполне хватит для удобного прочтения целых предложений.

Сборка

Матричный модуль может иметь штырьковое соединение или контакты на плате в виде печатных проводников. От этого зависит способ их соединения. В первом случае для получения надежного электрического контакта задействуют жгут из проводков с коннекторами, а во втором придётся установить и запаять перемычки.

Но сначала необходимо объединить оба модуля в единое целое с помощью термоклея. Термопластичный клей не проводит электрический ток, а значит, его можно смело наносить на печатную плату. Клей наносят с торцов обеих плат, прижимают и оставляют на несколько минут. После затвердевания выходные контакты первого блока подключают к входным контактам второго блока по схеме:

  • VCC – VCC
  • GND – GND
  • D IN – D OUT
  • CS – CS
  • CLK – CLK

С обратной стороны печатной платы с помощью термоклея прикрепляют Arduino Nano, отсек для батарейки и выключатель. Детали располагают таким образом, чтобы можно было удобно ими пользоваться.
На следующем этапе производят подключение Arduino со светодиодным модулем, подсоединяя провода на вход первой матрицы. В зависимости от варианта исполнения модуля, операцию выполняют через разъёмное соединение или путем пайки по приведенной схеме:

  • VCC – 5V
  • GND – GND
  • D IN – PIN 11
  • CS – PIN 10
  • CLK – PIN 13.

На заключительной стадии сборки необходимо подключить питание от батарейки. Для этого минусовой контакт (черный провод) из отсека для кроны подключается на вывод GND Arduino. Плюсовой контакт (красный провод) соединяют с выключателем, а затем с выводом №30 Arduino, предназначенный для подачи питающего напряжения от нерегулируемого источника. В тестовом режиме сделанная своими руками бегущая строка может быть запитана через микро USB от компьютера.
Убедившись в надежности креплений и качестве электрических соединений, приступают к сборке корпуса. Его можно сделать из алюминиевого или пластикового профиля, так как элементы схемы не греются. Цвет, размеры, степень защиты и крепление корпуса зависят от будущего назначения устройства. В простейшем случае подойдёт защитный экран из строительного пластикового углового профиля с вырезом под выключатель.

Программирование бегущей строки

Бегущая строка из Arduino и светодиодных модулей под управлением MAX7219 практически готова. Настало время перейти к заключающей, программной части. На компьютере должно быть установлено программное обеспечение (ПО) для используемого Arduino и драйвер к нему. Далее необходимо скачать две библиотеки и скетч (специальную программу, которая будет загружаться и выполняться процессором Arduino). Установку библиотек производят при закрытом Arduino IDE в папку «Documents – Arduino – Libraries». Затем скачивают и запускают скетч и проверяют наличие библиотек и корректность других данных.

Настройка скетча:

  • «number of horizontal displays» указывают количество строк, в нашем случае 1;
  • «number of vertical displays» указывают количество матриц, в нашем случае 8;
  • «string tape» указывают надпись, выводимую на дисплей;
  • «int wait» задают скорость вывода в миллисекундах.

После проверки введенных данных остаётся щелкнуть мышкой на кнопку «загрузить». Затем отключиться от ПЭВМ, вставить батарейку и произвести запуск устройства.

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

Читайте так же

Данное устройство воспроизводит текст на светодиодной матрице 8x 80 светодиодов, имеет память текста 128 символов, которые загружаются с компьютерной клавиатуры PS/2, подключенной прямо к бегущей строке.

Я пробовал несколько клавиатур, с каждой из трех устройство работало без проблем.
Устройство имеет все русские буквы заглавные и маленькие, а также цифры и прочие знаки, английских букв нет.

Микроконтроллер работает на частоте 20 МГц и управляет сдвиговыми регистрами 74HC595D, которые логическим уровнем 1 зажигает светодиодные матрицы строк, а дешифратор К555ИД7 или его полный аналог 74LS138 управляет через усилительные транзисторы 8-мю столбцами всех матриц.

Матрицы подключаются к сдвиговым регистрам 74HC595D через резисторы, которые защищают от перегорания светодиодов, ограничивая ток.

Микросхемы 74HC595D имеют 8 триггеров фиксации данных на выходах, соединенных с матрицей светодиодов и 8 сдвиговых триггеров, в которые через 14 вход загружают данные и с 9 выхода продолжают сдвиг дальше на следующие регистры цепочки из 10 штук.

Для этого сдвига необходим такт, идущий от процессора на все входы 11- 74HC595D после каждого 80-того такта цепочка регистров продвигается до 80 триггера всех 74HC595D, после этого как загружена вся строка из 80 триггеров, подается еще один тип такта, уже на входы 12 всех 74HC595D, после чего загружаются за один такт 8 дополнительных триггеров фиксации данных на выходах, соединенных с матрицей светодиодов от сдвиговых триггеров, на всех 74HC595D за один такт, матрица при этом засвечивает одну полосу из 80 светодиодов и засветка эта происходит без изменений логических уровней даже тогда, когда загружаются сдвиговые регистры.

Так перебираются по очереди 8 строк из 80 светодиодов с помощью дешифратора К555ИД7 с большой скоростью, что совершенно не видно глазу.

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

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

Управление и ввод данных

Когда нужно ввести заглавную букву, нужно нажать и отпустить левый Shift на клавиатуре, потом нажать нужную букву и на дисплее появится эта заглавная буква, с добавлением очередных букв табло будет передвигаться на один знак.
После набора текста, нужно нажать клавишу левый Ctrl на клавиатуре, это будет говорить о законченном тексте, после которого строка пойдет на следующий круг.

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

Для ввода знаков (!@#$%:?) нужно нажать левый Shift и отпустить потом клавиши с цифрами 1234567 над буквами там они нарисованы – это чтобы вам не искать.

Знак тире (-) просто нажав клавишу рядом с нулем.

Для ввода точки или запятой нажимать клавишу рядом с буквой Ю, если запятая, то вначале Shift.

Бегущая строка с компьютерной клавиатурой и памятью на 8192 буквы

В дальнейшем, был разработан еще один вариант бегущей строки с памятью на 8192 буквы. В данном проекте буквы также загружаются с компьютерной клавиатуры PS/2, в флэш память 24С62. Очень удобно иметь несколько микросхем и менять их если нужен другой текст.

Принципиальная схема бегущей строки с памятью:

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
U1 МК PIC 8-бит

PIC16F628A

1 В блокнот
U2-U11 Сдвиговый регистр

CD74HC595

10 В блокнот
U12 Кодер, декодер

SN74LS138

1 Аналог 555ИД7 В блокнот
U13 Флэш память 24С64 1 Применяется при варианте сборки с памятью на 8192 буквы. В блокнот
Q1-Q8 Биполярный транзистор

2N2905

8 В блокнот
С1, С2 Конденсатор 15 пФ 2 В блокнот
С3 Конденсатор 3300 пФ 1 В блокнот
Конденсатор 0.1 мкФ 13 Соединяется с питанием каждой микросхемы В блокнот
R1-R8, R49, R50 Резистор

4.7 кОм

10 В блокнот
R9-R48, R51-R90 Резистор

470 Ом

80

Здравствуй, друг! Сегодня я расскажу тебе про то, как устроено "табло - бегущая строка" изнутри. Если ты, дорогой друг, уже имеешь представление о том, как лучик бегает по экранам кинескопа, о сдвиговых регистрах, и видеопамяти, то смело листай эту доку в конец, и там ты найдешь все (реализация с последовательными драйверами). Возможно, на них тебе будет интересно взглянуть

Почему это все появилось в открытом доступе? С течением времени электронные компоненты несколько устаревают, появляются более дешевые микросхемки, другие корпуса, новые протоколы и интерфейсы. То, что несколько лет назад было чудом техники и вполне конкурентным продуктом, сегодня уже смотрится чудно, да и производство будет обходиться раза в полтора дороже, чем это возможно в случае переделки разработки по современным стандартам. Все что будет описано ниже, работает довольно неплохо, однако если бы мне поручили сделать подобный девайс, я бы не задумываясь, перерисовал платку под новые компоненты. Однако, в образовательном смысле все приведенные схемки представляют определенный интерес.

Здесь и далее последовательно будут описаны все модули и приемы, используемые в данном девайсе, по принципу от простого к готовому устройству. Статья основана на конкретной разработке, так что небольшое описание ее параметров:

  • Число строк в табло (светодиодов): 16 или 2х8
  • Число столбцов в табло (светодиодов): 1..256 (по надобности)
  • Режимы скролинга текста: все возможные
  • Прочее: Часы, календарик, связь с ПК по ком порту, термометр, и т.п.

Как зажигаются лампочки.

Как уже было сказано, в описываемом варианте табло бегущая строка используются 256*16 светодиодов красного цвета. Первый вопрос, который может встать перед начинающим инженером: как же они все подключены? Это ж сколько надо контактов? Действительно, при простой схеме подключения, когда светодиод подключен к управляющей микросхеме напрямую, число контактов будет запредельным, поэтому в устройствах отображения типа табло и т.п используется матричная схема включения, позволяющая сократить число задействованных управляющих контактов в разы.

Схема включения светодиодов довольно проста: представьте себе что у каждого светодиода в ряду есть общий контакт и в каждой строчке точно так же. Для наглядности можно посмотреть картинку ниже.


Как этим всем управлять? А очень просто: на строчку можно подать "плюс", столбец (нужный) подключить к "минусу", и тогда загорится нужная лампочка.

Правда есть один не тривиальный нюанс: на картинки ниже представленны типичные варианты работы системы табло-бегущая строка.



Если про случаи а и б все предельно ясно, то случай в, довольно нетривиален: что бы зажечь одновременно разные светодиоды в разных строчках и столбцах (например по-диагонале, как показано на картинке) требуется применить такой вот хитрый метод: сначала зажигается светодиод на верхней строчке, какое -то время лампочка горит (в это время управляющий микроконтроллер может делать другие полезные вещи), затем напряжение с первой строчки снимается, и подается на вторую, а микросхемы, отвечающие за то, какие столбцы подключать к минусам, а какие оставлять в воздухе, так же получают новую задачку. Какое-то время горит лампочка на нижней строчке, затем опять подается напряжение на верхнюю и так по циклу. Поскольку смена активных строчек происходит очень быстро(с максимально доступной для процессора скоростью), то глаза не успевают рассмотреть происходящее, и создается видимость, что горит вся табличка равномерно.

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

Думаю про матричную схему включения все понятно, и можно переходить к более интересным вещам.

Схема управления матрицей светодиодов.

Итак, как уже было описано ранее, требуется попеременно подавать напряжение на строчки матрицы светодиодов, и каким-то образом задавать уровни на столбцах.

Управление строчками можно реализовать на любом тразисторе, который способен выдавать требуемый ток (рассчитывается из максимального тока, потребляемого всеми светодиодами в строчке одновременно). Каждый транзистор по надобности открывает или закрывает управляющий МК, см картинку ниже.



Для управления столбцами матрицы светодиодов, можно использовать сдвиговые регистры. Собственно основная их цель, это заменить параллельное управление всеми столбцами матрицы, на последовательное. Число возможных столбцов в табличке можно быть достаточно большим (256-512), и практически никакой МК не способен напрямую управлять таким числом входов напрямую.

Сдвиговые регистры это специальные цифровые микросхемы, работающие синхронно с главным МК таблички, который тактирует их по соответствующему входу. Каждый такт МК может выставлять на вход данных сдвигового регистра (единственный) ноль или единицу, она запишется в первую ячейку памяти сдвигового регистра (всего в каждом их может быт различное число, в нашем случае это 16). На следующий такт первый записанный бит переходит во вторую ячейку регистра, а в первую попадает то, что подал МК на вход, т.е. с каждым следующим тактом работы, последовательность бит заходит в регистр все глубже. Сдвиговые регистры так же могут иметь выход - выход это как бы продолжение цепочки, т.е после заполнения последней ячейки регистра, на следующем такте ее информация не пропадет просто так, а будет подана на выход, к которому может быть подключен следующий сдвиговый регистр. Таким образом можно делать сколь угодно длинные цепочки, наполняющиеся по последовательному каналу, и преобразующие его в довольно длинный "параллельный" выход. В нашем случае разрядность сдвигового регистра будет 8, а всего в цепочке таких микросхем будет 32, что в итоге даст возможность выставлять последовательность бит на 256 рядов, светодиодов.

На самом деле, в табло-бегущая строка используются не просто сдвиговые регистры, а некоторая модификация, со специальными функциями (LED driver MBI5026 (pdf)), которые требуются только в этой системе, такими как:
1) управление яркостью ряда светодиодов, специальным внешним резистором(по одному на каждую микросхему сдвигового регистра),
2) специальная управляющая линия у каждой микросхемы, соответствующая команде: подать информацию на параллельный выход (на тактах заполнения, биты просто проходят сквозь цепочку регистров, а на выходах находится старая информация, и по этой команде (плюс на линию) регистры обновляют все своих выходы свежезакаченным содержимым из памяти.



SDI - последовательный вход данных (от микроконтроллера, либо предудущего в цепочки сдвигового регистра)
CLK - тактирование
LE - сигнал перехода содержимго внутреннего последовательного буффера в выдные регистры
OUT0..15 - биты парралельных выходов
OE - выключатель парралельных выходов
SDO - последовательный выход данных на следующую микросхему (прошедшие насквозь через 16 битов регистра)

Цепочку сдвиговых регистров (драйверов рядов LED) можно увидеть на плате слева (длинные микросхемы DIP). Транзисторы, включающие строчки, справа внизу



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

Что такое видеопамять.

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

Во всех цифровых устройствах с экраном, как правило происходит разделение: какие-то части устройства отвечают за расчет того, что нужно отображать, а какие-то управляют самим механизмом отображения. В нашем случае всем этим (расчетом содержимого видеопамяти и закачкой информации в сдвиговые регистры для отображения содержимого строки) занимается один микроконтроллер(потому что задачка-то в целом простая), однако в МК так же как и в PC существует видеопамять (скорее программная конструкция), из которой по таймеру происходит отображение строчек самого табло. Видеопамять должна чем-то быть заполнена, в случае табло-бегущая строка - строкой текста, расположенной где-то в зависимости от вида эффекта(вертикальная или горизонтальная прокрутка) и режима отображения (одна большая строчка, две маленькие независимые строчки).

Шрифты в табло бегущая строка

На поиск и установку шрифтов в первый раз ушло совсем не много времени: очень помогла статья про русификацию старинных EGA адаптеров, в суть я особо не вчитывался, сразу в глаза бросилась табличка соответствия бинарных кодов буковкам и спец символам, вид примерно следующий:

{0x7E,0x81,0xA5,0x81,0xBD,0x99,0x81,0x7E},

Таким образом, описываются шрифты в системах, где каждый символ занимает 8 на 8 пикселей: так 0х7Е, это верхняя строчка значка или буковки, в бинарном представлении: 01111110, где 1ки означают что точка должна быть белая а 0 черный, ну и далее по строчкам

Русская буква "а" будет представлена в виде



укороченный прототип таблички уже умеет отображать слова

Бегающий текст.

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

Аналогичные процессы пересчета содержимого видеопамяти происходят и в обычном ПК, когда требуется поменять содержимое экрана, однако есть некоторые нюансы: дешевые микроконтроллеры неспособны просчитать всю видеопамять за короткое время, попытки реализовать такой алгоритм привели к довольно большим задержкам процесса обновления экрана. Из-за того что один и тот же процессор отвечает за пересчет видеопамяти и вывод ее построчно на сдвиговые регистры - страдают обе эти операции, а задержка вывода строчек приводит к увеличению времени показа каждой, и глаза начинают видеть неприятные мерцания всей матрицы. Если же времени не хватает совсем, то глаз видит не всю матрицу целиком, а только одну горящую строчку в каждый момент времени, пробегающую сверху вниз.

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

Просчет изменений одной строчки занимает совсем небольшое время, которое как раз можно отвести под ее же вывод на матрицу (дать погореть немного), затем можно переключаться к следующей. Хотя данный алгоритм действий может серьезно варьироваться в зависимости от применяемого МК. Как уже сказал в начале, данная разработка несколько устарела, отчасти потому что в ней был применен КМ AVR mega128, в свое время довольно функциональный, но его вычислительная мощь в 16Мгц, не достаточна для применения других алгоритмов для этой задачки, хотя можно было бы решить и асинхронным просчетом видеопамяти и отображению по разным таймерам.

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

В целом про эффекты движения текста писать особо нечего, это простенькая программисткая задачка.

Управляющая программа PC

Тут все довольно просто: состаляем некий массив строчек, которые нужно прокручивать по циклу, с параметрами их прокрутки. Затем сливаем все это в EEPROM платы контроллера табло бегущая строка через RS-232. Реализовано разумеется на DELPHI, т.к. подобного рода приблуды в нем создаются быстрее всего.


В моей убогой релизации выглядело все примерно так...

Ссылки

Принципиальныя схема табло бегущая строка PDF , GIF (большие, сохраняйте на диск)

Программирование видеоадаптеров CGA, EGA и VGA. Отсюда я стянул записанную в hex, почти готовую табличку шрифтов ASCII таблички. Для окончательной подгонки на язык C, понадобилось проделать всего лишь несколько контекстных замен.

Шрифты из моей прошивки Некоторое извращение, за основу взят массив из ссылки выше, затем он был "руссифицирован", т.е в основной DOS ASCII табличке добавились русские буквы для полной совместимости с WINDOWS управляющим ПО

Разводку и файл прошивки думаю прилагать смысла нет, т.к повторять описанную выше модификацию бегущей строчки в наши проблематично MBI5026 в DIP корпусе уже сняли с производства, надо переразводить под SOIC, а лучше и под другой процессор типа ARM (получится даже дешевле)SDK) для написания плагинов. Разобраться в нем дело пары часов. Винамп предоставляет всякие входные данные декодирования mp3 формата, при помощи которого и рисуется подобие спектрального анализатора в самом плеере. Но нам же этого мало, мы хоим все по-настоящему и на стенку сразу:-). Итак, принцип работы понятен интуитивно, связь с ПК через RS232 (вполне хватает для прокачки данных риалтаймом).


Слева от таблички плата с контроллером и БП AT кормящий все это
Из наворотов хотелось еще сделать скроллинг названия песенки, когда она только начинается (как это и сделано в самом винампе, но это уже стало лень)
Тут же идея для любителей автотюнинга: можно преврватить в такую моргающую штуку всю внутреннюю часть крышки багажника, что бы когда он открывался (крышка становилась под 90градусов) - сзади был отличный обзор на красные столбики, прыгающие под громкий, убойный музон.
При желании все можно воплотить в варианте без винампа и компа, полностью автономно, так будет даже лучше.


Ну и конечно веселый мувик, как все это работало.
Звук немного пищит, потому что усиливается вот этим чудом.

Еще более веселый мувик, играет "лесорубы".

Электронный транспарант

Собственно укороченная версия табло бегущая строка(64 столбика), нанизанная на палку. Питание от аккумулятора UPS 12 вольт, хватает на 2 часа работы. Управление (у меня же клевый транспарант, на нем можно менять надписи прямо на месте) происходит напрямую с клавиатуры, подключенной непосредственно к микроконтролеру AVR (т.е идет чтение сканкодов, переданных клавиатурой по ее последовательному порту)
Режимы прокрутки текста: горизонтальная, вертикальная, статика (одно короткое слово), мигание в статике. Для удобства были задействованы горячие клавиши F1-F4 указания режима прокрутки + Caps-lock смена языка ввода (транспарант получился мультиязычный:-)). Было немного неудобно писать на клавиатуре, расположенной на коленках и без экрана, хотя backspaсe тоже был задействован.


Развлекаемся на соревнованиях мобильные роботы в 2008 году. Уже в качестве зрителей:-)

Заключение

Вот такой вот ерундой я занимался на четвертом курсе, вместо того что бы сидеть на лекциях или трудиться над нашим . Вся эта фишка с табличкой была частью одного вроде бы коммерческого проекта, который так ничем и не закончился. Однако мне тогда было очень интересно попробовать себя в виде программиста встроенных систем, в целом все получилось. Так же хотел написать диплом по теме табло бегущая строка, но подвернулась тема, которая в тот момент была интереснее: там же нейросети!! :-)

Ну вот и все, надеюсь, что было интересно.

Всегда ваш, Николай

Рассказать друзьям