LCDsmartie — LEDsmartie

LCDsmartie — LEDsmartie. HT1632C – Arduino — PC.

    Начну свой рассказ с исторических воспоминаний о давних временах, когда порты в компьютерах наших были принтерно — параллельными и последовательно  — COMовыми. Была интересная конструкция визуально информативно развлекательного характера BlinkenLights. Вообще-то начиналась она с конструкции размером в дом. Буквально. Это были управляемые огни в окнах дома. Вот этот дом:

А потом многим понравилось и подумалось, что сие есть хорошо и для домашнего пользования, чуть в меньших размерах только. Этак 8х18 светодиодов. Я на эту конструкцию набрёл в 2006-том году. Собрал, запустил, и … да, я слукавил про «древние воспоминания»: эта конструкция живёт в 5-дюймовом отсеке компа до сих пор. Компьютеры менялись, BlinkenLEDs оставался. 10 лет!! Несмотря на «архаичность» железа (18 микросхем CD4094, подключение к LPT), эта свето-матрица у меня работает и теперь, под Windows7 64-bit, подключенная к плате LPT PCI-E, и работающая через хитрый DLL доступ к порту. Кроме того, что вещь функционально хороша, ещё ведь — ну не выбрасывать же такую мою ручную работу!!  smile

Кстати, кроме долгих часов пайки всей этой красоты, я там ещё бока каждого квадратного светодиода чёрным маркёром закрашивал! smile Чтоб друг друга не засвечивали.
Разносторонний функционал конструкции обеспечивает программа BlinkenPlayer Exxtreme (есть и другие, по проще, ну и редакторы анимаций есть). Тут и часы, и аудио спектр, название проигрываемой песни, чтение введённых текстов, и проигрывание простых анимаций.

К сожалению развития этой программы нет, во всяком случае я не нахожу, а искал я много и часто. Также я много по Сети лазил, выискивая нечто похожее, но поновее. Такое вот разно-функциональное светодиодное табло с подачей чего угодно из компьютера, в том числе (и это обязательно) визуализаций музыки, информацию музыкальных треков, и т.д. Словом, давно уже хотелось конструкцию, которая «то же самое, но круто современно и наворочено». Я к сожалению не программист, сам с нуля написать ничего не могу, разве что поковырять под свои нужды нечто уже написанное. Но, я хороший генератор идей, и талантливый подстрекатель на творчество тех, которые писать коды очень даже умеют smile Зная то, что наш многоуважаемый хозяин Портала тоже неравнодушен к свето-матрицам и «полезному моддингу», я не раз высказывал свои мечтания, что, мол — пора. Пора создать солидного преемственника идей BlinkenLights, со столько же солидной инъекцией туда всего чего нового. Или на оборот. Новое с добавкой наследства BlinkenLights. И, что вы думаете? «Лёд тронулся!», и такая конструкция создаётся, я уже это видел, как оно рождается и растёт, и скажу, что это — СУПЕР !! Но, об этом тут будет скоро другая статья. А у меня здесь, как говорят TV сериальщики — «Spin-Off».
Когда я заказал LED матрицы с контроллерами MAX7219 для грядущей конструкции от Radan-а (их нужно будет 5 на первых порах, потом N x 5), я огляделся вокруг по просторам Китая, что ещё хорошего дают по этой теме. Оказалось, дают также модули 8х32 с контроллером HT1632. В импульсном порыве заказал такие тоже, перед этим мельком заглянув в поисковики и увидев, что на таких тоже люди творят всякие поделки. И вот случилось так, что эти HT1632C пришли первыми. Что же делать? Что-то, да делать! Мелькнула мысль, раз у них сериальное управление, может их можно как-то подсунуть к программе LCDsmartie? Эта программа конечно хороша, а так же «жива» сообществом, и делает в принципе то же, что и BlinkenLights, но только на маленькие знако местные LCD. Но может кто уже успешно пробовал выводить данные не на LCD индикаторы, а на LED матрицы? Оказалось, что да, есть такое, делается посредством Ардуины. Вот здесь:

http://blog.thiseldo.co.uk/?p=389
https://github.com/thiseldo/HT1632_LedMatrix

К сожалению, установить контакт с Автором пока не удалось, но раз уж всё публично доступно, я взял и начал ковыряться. Выявились два факта:
1) код Arduino довольно старый, так просто на новом Arduino IDE не запустить;
2) код писался на контроллер светодиодов HT1632, а у меня более современный HT1632C.
Я человек простой, код адаптировать под новую среду не стал (вот именно — не умею), взял соответственно так же старую среду Arduino (конкретно 0023), добавил древнюю библиотеку NewSoftSerial, и код начал нормально компилироваться. Но надо было ввести небольшие изменения в авторскую библиотеку HT1632. Это не сложно, надо изменить несколько строчек инициализации в файле HT1632_LedMatrix.cpp.
Если у Вас будет тоже модуль с чипом «C», то делаем так:
Находим там эти строчки:
      sendcmd(chipno, HT1632_CMD_COMS10);  // 08*32, PMOS drivers
sendcmd(chipno, HT1632_CMD_MSTMD);     // Master Mode 

и меняем их на такие:
      sendcmd(chipno, HT1632_CMD_COMS00);  // 08*32, NMOS drivers
sendcmd(chipno, HT1632_CMD_RCCLK);     // HT1632C

После этих изменений в библиотеки и копирования всей папки под Ардуиновские «libraries», загружаем в среду Arduino пример USB_HT1632_Matrix.pde (в те времена ещё не перешли на расширение файла .ino). Если матрица 8х32 всего одна, для корректности изменяем это:
  // Initialise LED, 2 displays wide, 1 high
led.init( 2, 1 );

на соответственно такое:
  // Initialise LED, 1 display wide, 1 high
led.init( 1, 1 );

Если ничего дополнительно в кодах не менять, то подключение модуля матриц к Arduino будет такое:
    D2 – CS
D6 – DATA
D7 – WR 

P.S.: если модулей несколько штук (до 4-х), то следующим сигналы CS берём с выходов D3, D4, D5.
Ещё один нюанс: в Windows-овских параметрах виртуального COM порта Ардуины нужно выставить скорость 19200, так как именно такая зашита в ардуиновской программе.
После этих махинаций и загрузки примера в Arduino, мне удалось получить долгожданную строчку на матрице (подобие приветствия зашито в самом коде, «USBDispV.4», измените на что-то интересное). Хотя говорить «строчка» тут довольно смелое высказывание, поскольку символов туда влезает этак пять с половиной. Надо больше модулей (уже заказал ещё 3). Чтобы подружить теперь это дело с программой LCDsmartie, там выбираем вид экрана «Matrix Orbital» и выставляем соответствующий номер COM порта и опять же скорость 19200.

    Вот такой получился «LED-Smartie», на базе LCDsmartie. Добавлю, что файлы в блоге и на GitHub — разные. На GitHub вроде по новее, но с теми у меня псевдографика разных столбиков выводилась не так как надо. Скажем, если в пределах одного знакоместа должно было ходить заполнение вверх, то шло оно слева на право. И на оборот. Где то X и Y оси путаются, или как то так. Наверное можно там что-то подправить. Но с файлами из блога (отредактированными как я выше рассказал) показывает как надо.
Что хорошо? Оно работает, показывает крупно и ярко, не то что маленькие LCD экранчики. Среда LCDsmartie очень развита, плагинов функциональностей там море, можно много чего выводить. К слову, я пользуюсь плагином «SPC», который может отображать музыкальный спектр и VU-уровни независимо от какого источника под Windows музыка идёт, это не привязано ни к какому плейеру. Нескромно отмечу, что я чуть помогал в доработке функциональности этого плагина. Мда…, где я только не подстрекал авторов на разные разности… smile
Что плохо? То, что программа LCDsmartie всё-таки знакоместная, и это накладывает некоторые некрасивости, такие как перескакивание бегущей строки текста по символам, а не по точкам. Тем не менее, я рад, что довёл это дело до ума и устройство считаю юзабельным и красиво-полезным. Или наоборот, полезно-красивым. Ну а скоро у нас всех будет возможность сделать более продвинутую вещь, ждём, что нам в матричных делах скоро представит Radan !

Послесловие.

Есть несколько вопросов к светлым умам нашего Сообщества.
1) хорошо бы «для порядка» подправить код для работы в теперешних версиях среды Arduino, в том числе грамотно заменить обращения к библиотеке NewSoftSerial на обращения к теперь уже встроенной SoftSerial.
2) посмотреть, почему в варианте кодов с GitHub столбики псевдографики (&Bar, &SPC) отображаются неправильно.
3) может кто знает другие похожие проекты?
4) заманить протокол «Matrix Orbital» на матрицы с МАХ7219 тоже 😉
Спасибо заранее!

QuickStart:

1) скачать «ардуино-0023» здесь:
http://www.arduino.cc/en/Main/OldSoftwareReleases
там в архиве среда Arduino не требующая инсталляции.
2) распаковать в subfolder «libraries» следующие файлы:
HT1632_LedMatrix.zip (подправлено для HT1832C)
NewSoftSerial.zip
3) запускаем среду Arduino, выбираем вид Arduino (у меня был Nano) и номер COM порта.
4) открываем пример «USB_HT1632_Matrix.pde» (см. фото ниже)
5) заливаем код в Arduino
6) подключаем модуль матриц к Arduino: D2 — CS, D6 — DATA, D7 — WR.

Video:

(LED-Smartie 1)

(LED-Smartie 2)

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

Приобрести такие модули можно здесь.

Juris Pērkons, апрель 2016.

Автор публикации

не в сети 5 дней

Radan

0
Комментарии: 880Публикации: 168Регистрация: 30-11--0001
Поделиться

Отправить ответ

Оставьте первый комментарий!

Войти с помощью: 
Подписаться на