Программирование BASCOM
Меню сайта
Категории каталога
Мои статьи [115]
Наш опрос
Оцените мой сайт
Всего ответов: 1292
Главная » Статьи » Мои статьи

Светодиодная матрица - МОДЖЕТ (антигаджет)
Впервые статья опубликована здесь: http://cxem.net/mc/mc61.php как конкурсная работа с применением МК, поделившая 2-3 места. 
 
О происхождении слова
 
Противоречия бушуют в каждом человеке. Иногда побеждают добрые, иногда не очень. Кто-то живёт стереотипами, и таковых большинство, а кто-то делает вызов и побеждает своим нестандартным поступком, мышлением или делом. Когда мне на глаза попалась светодиодная матрица 8х8, первая мысль была такой – куплю много, сделаю бегущую строку. Вторая – много стоит много… а тугриков мало… Третья – куплю одну и сделаю круче, чем строка. Противоречие наступило! Минимум в конструкции и максимум в функциях! Мысль пошла работать, руки так и раздваивались в попытке обхватить паяльник и клавиатуру, ноги носились от ванночки с хлорным железом к коробочкам с мелочёвкой. Наступил момент истины – устройство ожило! 
 
 
После оно стало взрослеть и получило ещё несколько полезных функций. Настал черёд дать название этому чуду. И вот тут опять стандартные решения, предлагаемые современной модой. По своему функционалу и назначению больше всего подходит «гаджет», но их кругом полно, этих гаджетов… Ничего другого, после того как вложены в устройство все силы на ум не пришло, как «антигаджет».
 
Чтобы дать определение слову «антигаджет», для начала необходимо разобраться с его предком – «гаджетом». Всезнающая Википедия даёт такое определение: Гаджет (англ. gadget — приспособление) — оригинальное, нестандартное техническое приспособление. Сегодня гаджетом можно считать любой цифровой прибор, достаточно небольшой, чтобы надеть на руку или подключить. Функциональность гаджета - помимо ожидаемых функций (например, индикация времени для часов), содержит произвольный набор дополнительных функций (в часы может быть встроен радиоприёмник, микрокомпьютер, плеер и т.п.). Любители компьютеров используют гаджеты для более эффектного моддинга (от англ. modding - modifying модификация), т.е. индивидуального художественного оформления корпуса ПК. В программном обеспечении гаджет — небольшое приложение, предоставляющее дополнительную информацию, например, прогноз погоды или курс валют. В простонародье есть такое красивое русское слово - ПРИБАМБАС. Вот это оно и есть. Если у человека уже все имеется, но хочется еще чего-то, он идет и покупает (или делает) гаджет. 
 
Если исходить из этого, то «антигаджет» должен быть неоригинальным, стандартным и нетехническим приспособлением, громоздким и без возможности подключения. О нашем устройстве этого не скажешь. Поэтому от такого определения отталкиваться нельзя. Но есть и другие определения слова «гаджет». Самое удачное, на мой взгляд, определение, которое я встретил в сети - это когда купил безделушку, назвал ее цену своей жене, а она непременно тебе ответила: "ну и ГАД ЖЕ Ты!.." ;) Это более интересное определение, и от него уже можно оттолкнуться. Итак, в нашем случае «антигаджет» - непременно самодельное, а не покупное устройство, достаточно дешёвое и простое в изготовлении, представляющее из себя МОДдинговый прибамбас для компьютера, ну и самое главное – чтобы при его виде жена произнесла - "ну и МОлоДец ЖЕ Ты!.." ;) Вот такая цепочка мыслей и породила название МОДЖЕТ!
 
В нём заложено несколько полезных определений. С одной стороны, это симбиоз двух слов – моддинг и гаджет. В принципе, так оно и есть. С другой – как написано выше – оценка жены. Ну и с третьей – оценка друзей и коллег - МОдЖЕТ!
 
Так что возможно, это определение приживётся в кругах тех, кого не могут оставить равнодушным подобные прибамбасы.
 
О функционале
 
Перейдём от лирического вступления к практическому описанию. Устройство позволяет реализовывать несколько полезных или развлекательных функций:
 
  1. Часы
  2. Спектро анализатор звука
  3. Калейдоскоп
  4. Бегущая строка
  5. Прогноз погоды (практически на все значимые населённые пункты мира!) – с сайта http://informer.gismeteo.ru/xml/
  6. Курсы валют России и Украины – с сайтов http://www.cbr.ru/ и http://bank.gov.ua/
     
 
Переключение между функциями осуществляется переключением соответствующих вкладок. На каждой из вкладок можно настроить тот или иной режим отображения в зависимости от желания пользователя. Текст из внешнего файла выводится в виде бегущей вертикальной или горизонтальной строки. Его можно выводить в инверсном отображении, также есть режим только строчных букв. Также в режиме бегущей строки отображаются курсы валют, прогноз погоды и часы. Часы кроме того могут выводиться покадрово. После выхода из программы она запоминает своё состояние для следующего сеанса. Программу можно запускать или вручную, или прописать в автозагрузку – ADD Autostart для её автоматического запуска после старта операционной системы. DEL Autostart - удаляет программу из автозагрузки. Небольшое количество элементов матрицы не позволяет выводить сразу всё слово целиком, но простота и дешевизна конструкции компенсируют некоторое неудобство считывания информации. Через некоторое время к этому привыкаешь и уже не обращаешь внимания.
О конструкции
 
 
Устройство принадлежит к классу USB-HID (Human interface device). Светодиодная матрица RL-M1588 размером 38х38 мм физически организована как 8х8=64 светодиода. Можно использовать матрицу другого размера с соответствующей корректировкой платы. Микроконтроллер ATMEGA8-16PU в корпусе DIP. Прототип был собран на макетной плате, затем перенесён на печатную плату. 
 
 
 
Диоды служат для снижения напряжения питания контроллера. Это позволяет согласовать уровни USB и самого контроллера, а также отказаться от ограничительных сопротивлений для светодиодной матрицы (а ля China!). Конструкция достаточно простая и при использовании исправных деталей и правильно прошитом контроллере и установке фьюзов в наладке не нуждается. 
 
 
При первом подключении к компьютеру система обнаружит новое устройство - LED MATRIX 8x8, и сама установит для него стандартные драйверы HID. Для работы со звуком необходимо, что бы был включен стерео микшер.
 
О программном обеспечении
 
Со стороны контроллера – BASCOM AVR
 
Благодаря тому, что появилась чудная библиотека господина Оллопа - http://mcselec.com/index.php?option=com_content&task=view&id=271&Itemid=57, можно делать HID – устройства на контроллерах AVR и писать программы к нему на широко распространённом языке бейсик! Контроллер осуществляет связь с компьютером и выводит принятую информацию на светодиодную матрицу. Это осуществляется при помощи динамической развёртки со скважностью 1:8. Основа программы может служить примером для других подобных конструкций.
 
Со стороны компьютера – VBNET
 
Программа осуществляет формирование необходимой информации, которая отображается на форме и параллельно передаётся в контроллер. При переходе на прогноз погоды или курса валют может происходить небольшая задержка. Это связано с тем, что информация вычитывается из интернета. Программное обеспечение может использоваться как по своему прямому назначению, так и в учебных целях:
 
- работа с USB HID устройствами
- помещение и удаление программы в автозагрузку
- сериализация элементов управления
- работа с графикой 
- работа с библиотекой bass.dll (http://www.un4seen.com/) для получения спектра звука 
- сворачивание программы в трей
- запрет запуска второй копии программы
- таблица символов 8х8.
 
О модернизации
 
Так как код открыт и достаточно прокомментирован, никто не мешает осуществить ваши пожелания в реальности. Для этого есть несколько идей. Например, проводить мониторинг железа ПК и выводить информацию, разработать программируемые пользователями световые эффекты, написать простую игру типа тенниса, крестиков-ноликов или тетриса. И это всё можно делать без переделки железа! Успехов!
 
Видео работы часов:
 
 

Устройство разработано по принципу «КАК ЕСТЬ» и автор не несёт ответственности за явный или не явный ущерб, причинённый в результате повторения девайса!

Скачать ПО, исходники и прошивки, фьюзы, печатную плату в формате LAY.

 
Здесь можно купить матрицу, дешево.
 
Автор: Рубашка Василий (Radan)

 

Категория: Мои статьи | Добавил: bascom (17.05.2011)
Просмотров: 13843 | Комментарии: 43
Всего комментариев: 431 2 »
43 geneSYS  
0
Ребят скиньте прошиву на 12 МГц.

42 tevga  
0
Собрал устройство, автору спасибо! У меня всё прекрасно работает под Win7. Устройство определилось корректно, система автоматом поставила "дрова". Софт я запускал в режиме совместимости XP SP2, работает нормально, как и на XP.

41 rootvik  
0
на windows 7 64x прога не правильно работает не видет устройство на xp видет

40 6pblcuk  
0
Спасибо всем откликнувшимся на мою просьбу. Собрал, прошил, подключил и всё заработало (отдельное спасибо автору проекта). А теперь вопрос, можно ли заставить моджет работать из под семёрки? Собственно сам девайс определяется семёркой как два устройства ввода и не более. Да и программа загружается с ошибками.

39 6pblcuk  
0
Добрый день всем. У кого есть прошивка под кварц 12 Мгц? Не получается у меня скомпилировать код с изменением, вот хоть убейся. И ещё одна проблема, DrWeb ругается на 8x8_USB.exe, в скачанном архиве типа это троян, никто не сталкивался?

37 uropb  
0
Здравствуйте, собираю ваш девайс на ATEGA8A ставлю кварц 12 Мгц, меняю строку на 12000000 и при компиляции выскакивает ошибка. Пробую прошивать процессор, шьётся. Но устройство не определяется. Сразу вас обрадую, в написании программ я полный ноль, но очень хотелось бы собрать данную игрушку.

38 bascom  
0
Проверьте наличие библиотеки ЮСБ в папке с библиотеками Баскома. Нет смысла прошивать, если компилируется с ошибками. И версия Баскома должна быть посвежее, древние просто не поддерживают некоторые функции, используемые в программе.

36 Regina  
0
In awe of that asnewr! Really cool!

34 djzoob  
0
А у меня не определяет комп((( Пишет "Одно из подключенных устройств работает не правильно, и Windows не удается его опознать" фьюзы выставлены правильно, прошит тоже правильно, единственное что процессор не ATmega8-16PU, а ATmega8A-PU, мне сказали что он работает до 16 МГц, по даташиту посмотрел так оно и есть, так что должен пойти, а 16PU просто не было. В чем может быть дело может кто-то сталкивался с этим?

35 Mrshilov  
0
Контроллер при 3,3 Вольтах может и не запуститься на 15МГц. Попробуйте поставить 12МГц и исправьте строчку:
$crystal = 15000000 на
$crystal = 12000000.
Вообще Меги8А оказались очень капризные и легкоубиваемые...

29 Juris3D  
0
Добрый день! Скажите пожалуйста, а сложно ли в данной управляющей программе в режиме аудио спектра изменить скорость реакции столбиков? Если возможно, то где и как в исходном тексте?
Спасибо!

30 bascom  
0
Скорость передачи данных от компьютера до контроллера при софтовой реализации HID и так на пределе. Увеличивать реакцию аудио бессмысленно - всё равно быстрее не отобразится. Это плата за простоту и дешевизну конструкции. Можно увеличить только если перейти на железный USB. А вообще это в Timer6.interval, его нужно уменьшить.

31 Juris3D  
0
Я вообще-то имел ввиду - уменшить скорость smile Всмысле, чтобы столбики по спокойнее двигались (увеличение периодов опроса? или как то так...), в идеальном случае конечно с регулируемым слаидером для этого. Люблю помечтать по светомузыкальным проектам... smile А сам я программист никакой sad
П.С.: железо пока не собирал, сужу только по работе управляющей программы.

32 bascom  
0
Подключите железо - будет поспокойнее... Качайте студию - экспресс на официальном сайте. Она бесплатная. В визуальном конструкторе устанавливайте слайдер. По двойному клику автоматом пропишется событие. А в нём нужно будет выставлять значение интервала таймера в зависимости от положения слайдера. Делов на 5 минут.

33 Juris3D  
0
Спасибо за информацию и советы! cool

23 max50  
0
Привет!
Такой вопрос: не совсем понятно, как прорисовывается калейдоскоп. Можно поподробней рассказать.
Спасибо.

24 bascom  
0
Там ничего сложного нет. Делим матрицу 8х8 на 4 квадрата размером 4х4. Далее получаем 16 случайных чисел - 1 и 0. От регулятора зависит, сколько в этом массиве из 16 чисел будет выпадать нулей или единиц - от этого зависит заполнение матрицы. Далее этот массив (квадрат) вращаем вокруг центра матрицы 8х8 - переносим данные на следующие 3 квадрата. Если непонятно описал, пиши, постараюсь более доходчиво описать. biggrin

25 max50  
0
Спасибо! Вроде все понятно.

26 max50  
0
Привет.
В коде есть строчки:
Code
'Массив значений для калейдоскопа
  Private Kaleydos As Integer() = {0, 7, 56, 63, 1, 15, 48, 62, 2, 23, 40, 61, 3, 31, 32, 60, _
  6, 8, 55, 57, 9, 14, 49, 54, 10, 22, 41, 53, 11, 30, 33, 52, _
  5, 16, 47, 58, 13, 17, 46, 50, 18, 21, 42, 45, 19, 29, 34, 44, _
  4, 24, 39, 59, 12, 25, 38, 51, 20, 26, 37, 43, 27, 28, 35, 36}

Это данные для отправки в USB или что-то другое?

27 bascom  
0
Как раз этот массив и определяет симметрию из 16 в 64. Т.е. если первый бит в квадрате 4х4 нужно зажигать, зажигаем 0, 7, 56, 63 - угловые светодиоды. Если второй нужно зажигать, зажигаем 1, 15, 48, 62 и т.д. Чтобы каждый раз не считать, разрисовал в тетрадке в клетку и составил этот массив. Получается 16 четверостиший biggrin

28 max50  
0
Понятно. Спасибо.

1-10 11-16
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Поиск
Друзья сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Copyright Radan Studio © 2024