Четверг, 08.12.2016, 12:56
Приветствую Вас Гость

Портал светоэффектов

Меню сайта
Категории раздела
Наш опрос
Оцените мой сайт
Всего ответов: 580
Статистика

Онлайн всего: 3
Гостей: 2
Пользователей: 1
ivan-bezh
Форма входа
Главная » Статьи » Видеоэкраны (2D)

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 доступ к порту. Кроме того, что вещь функционально хороша, ещё ведь - ну не выбрасывать же такую мою ручную работу!!  :)

 


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

 

 


К сожалению развития этой программы нет, во всяком случае я не нахожу, а искал я много и часто. Также я много по Сети лазил, выискивая нечто похожее, но поновее. Такое вот разно-функциональное светодиодное табло с подачей чего угодно из компьютера, в том числе (и это обязательно) визуализаций музыки, информацию музыкальных треков, и т.д. Словом, давно уже хотелось конструкцию, которая "то же самое, но круто современно и наворочено". Я к сожалению не программист, сам с нуля написать ничего не могу, разве что поковырять под свои нужды нечто уже написанное. Но, я хороший генератор идей, и талантливый подстрекатель на творчество тех, которые писать коды очень даже умеют :) Зная то, что наш многоуважаемый хозяин Портала тоже неравнодушен к свето-матрицам и "полезному моддингу", я не раз высказывал свои мечтания, что, мол - пора. Пора создать солидного преемственника идей 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 музыка идёт, это не привязано ни к какому плейеру. Нескромно отмечу, что я чуть помогал в доработке функциональности этого плагина. Мда..., где я только не подстрекал авторов на разные разности... :)
    Что плохо? То, что программа 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.

Категория: Видеоэкраны (2D) | Добавил: defaultNick (25.04.2016) | Автор: Radan
Просмотров: 996
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
YOUTUBE LIGHTPORTAL
ALIEXPRESS
Поиск
Translation
Donate
QR
Часики
 
Облако тегов
Друзья сайта
Портал светоэффектов
Catcatcat Electronics
Color Music Beniamina Grinberg