Впервые статья опубликована здесь: http://cxem.net/mc/mc61.php как конкурсная работа с применением МК, поделившая 2-3 места.
О происхождении слова
Противоречия бушуют в каждом человеке. Иногда побеждают добрые, иногда не очень. Кто-то живёт стереотипами, и таковых большинство, а кто-то делает вызов и побеждает своим нестандартным поступком, мышлением или делом. Когда мне на глаза попалась светодиодная матрица 8х8, первая мысль была такой – куплю много, сделаю бегущую строку. Вторая – много стоит много… а тугриков мало… Третья – куплю одну и сделаю круче, чем строка. Противоречие наступило! Минимум в конструкции и максимум в функциях! Мысль пошла работать, руки так и раздваивались в попытке обхватить паяльник и клавиатуру, ноги носились от ванночки с хлорным железом к коробочкам с мелочёвкой. Наступил момент истины – устройство ожило!
После оно стало взрослеть и получило ещё несколько полезных функций. Настал черёд дать название этому чуду. И вот тут опять стандартные решения, предлагаемые современной модой. По своему функционалу и назначению больше всего подходит «гаджет», но их кругом полно, этих гаджетов… Ничего другого, после того как вложены в устройство все силы на ум не пришло, как «антигаджет».
Чтобы дать определение слову «антигаджет», для начала необходимо разобраться с его предком – «гаджетом». Всезнающая Википедия даёт такое определение: Гаджет (англ. gadget — приспособление) — оригинальное, нестандартное техническое приспособление. Сегодня гаджетом можно считать любой цифровой прибор, достаточно небольшой, чтобы надеть на руку или подключить. Функциональность гаджета - помимо ожидаемых функций (например, индикация времени для часов), содержит произвольный набор дополнительных функций (в часы может быть встроен радиоприёмник, микрокомпьютер, плеер и т.п.). Любители компьютеров используют гаджеты для более эффектного моддинга (от англ. modding - modifying модификация), т.е. индивидуального художественного оформления корпуса ПК. В программном обеспечении гаджет — небольшое приложение, предоставляющее дополнительную информацию, например, прогноз погоды или курс валют. В простонародье есть такое красивое русское слово - ПРИБАМБАС. Вот это оно и есть. Если у человека уже все имеется, но хочется еще чего-то, он идет и покупает (или делает) гаджет.
Если исходить из этого, то «антигаджет» должен быть неоригинальным, стандартным и нетехническим приспособлением, громоздким и без возможности подключения. О нашем устройстве этого не скажешь. Поэтому от такого определения отталкиваться нельзя. Но есть и другие определения слова «гаджет». Самое удачное, на мой взгляд, определение, которое я встретил в сети - это когда купил безделушку, назвал ее цену своей жене, а она непременно тебе ответила: "ну и ГАД ЖЕ Ты!.." ;) Это более интересное определение, и от него уже можно оттолкнуться. Итак, в нашем случае «антигаджет» - непременно самодельное, а не покупное устройство, достаточно дешёвое и простое в изготовлении, представляющее из себя МОДдинговый прибамбас для компьютера, ну и самое главное – чтобы при его виде жена произнесла - "ну и МОлоДец ЖЕ Ты!.." ;) Вот такая цепочка мыслей и породила название МОДЖЕТ!
В нём заложено несколько полезных определений. С одной стороны, это симбиоз двух слов – моддинг и гаджет. В принципе, так оно и есть. С другой – как написано выше – оценка жены. Ну и с третьей – оценка друзей и коллег - МОдЖЕТ!
Так что возможно, это определение приживётся в кругах тех, кого не могут оставить равнодушным подобные прибамбасы.
О функционале
Перейдём от лирического вступления к практическому описанию. Устройство позволяет реализовывать несколько полезных или развлекательных функций:
Часы
Спектро анализатор звука
Калейдоскоп
Бегущая строка
Прогноз погоды (практически на все значимые населённые пункты мира!) – с сайта http://informer.gismeteo.ru/xml/
Курсы валют России и Украины – с сайтов 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.
О модернизации
Так как код открыт и достаточно прокомментирован, никто не мешает осуществить ваши пожелания в реальности. Для этого есть несколько идей. Например, проводить мониторинг железа ПК и выводить информацию, разработать программируемые пользователями световые эффекты, написать простую игру типа тенниса, крестиков-ноликов или тетриса. И это всё можно делать без переделки железа! Успехов!
Видео работы часов:
Устройство разработано по принципу «КАК ЕСТЬ» и автор не несёт ответственности за явный или не явный ущерб, причинённый в результате повторения девайса!
Собрал устройство, автору спасибо! У меня всё прекрасно работает под Win7. Устройство определилось корректно, система автоматом поставила "дрова". Софт я запускал в режиме совместимости XP SP2, работает нормально, как и на XP.
Спасибо всем откликнувшимся на мою просьбу. Собрал, прошил, подключил и всё заработало (отдельное спасибо автору проекта). А теперь вопрос, можно ли заставить моджет работать из под семёрки? Собственно сам девайс определяется семёркой как два устройства ввода и не более. Да и программа загружается с ошибками.
Добрый день всем. У кого есть прошивка под кварц 12 Мгц? Не получается у меня скомпилировать код с изменением, вот хоть убейся. И ещё одна проблема, DrWeb ругается на 8x8_USB.exe, в скачанном архиве типа это троян, никто не сталкивался?
Здравствуйте, собираю ваш девайс на ATEGA8A ставлю кварц 12 Мгц, меняю строку на 12000000 и при компиляции выскакивает ошибка. Пробую прошивать процессор, шьётся. Но устройство не определяется. Сразу вас обрадую, в написании программ я полный ноль, но очень хотелось бы собрать данную игрушку.
Проверьте наличие библиотеки ЮСБ в папке с библиотеками Баскома. Нет смысла прошивать, если компилируется с ошибками. И версия Баскома должна быть посвежее, древние просто не поддерживают некоторые функции, используемые в программе.
А у меня не определяет комп((( Пишет "Одно из подключенных устройств работает не правильно, и Windows не удается его опознать" фьюзы выставлены правильно, прошит тоже правильно, единственное что процессор не ATmega8-16PU, а ATmega8A-PU, мне сказали что он работает до 16 МГц, по даташиту посмотрел так оно и есть, так что должен пойти, а 16PU просто не было. В чем может быть дело может кто-то сталкивался с этим?
Контроллер при 3,3 Вольтах может и не запуститься на 15МГц. Попробуйте поставить 12МГц и исправьте строчку: $crystal = 15000000 на $crystal = 12000000. Вообще Меги8А оказались очень капризные и легкоубиваемые...
Добрый день! Скажите пожалуйста, а сложно ли в данной управляющей программе в режиме аудио спектра изменить скорость реакции столбиков? Если возможно, то где и как в исходном тексте? Спасибо!
Скорость передачи данных от компьютера до контроллера при софтовой реализации HID и так на пределе. Увеличивать реакцию аудио бессмысленно - всё равно быстрее не отобразится. Это плата за простоту и дешевизну конструкции. Можно увеличить только если перейти на железный USB. А вообще это в Timer6.interval, его нужно уменьшить.
Я вообще-то имел ввиду - уменшить скорость Всмысле, чтобы столбики по спокойнее двигались (увеличение периодов опроса? или как то так...), в идеальном случае конечно с регулируемым слаидером для этого. Люблю помечтать по светомузыкальным проектам... А сам я программист никакой П.С.: железо пока не собирал, сужу только по работе управляющей программы.
Подключите железо - будет поспокойнее... Качайте студию - экспресс на официальном сайте. Она бесплатная. В визуальном конструкторе устанавливайте слайдер. По двойному клику автоматом пропишется событие. А в нём нужно будет выставлять значение интервала таймера в зависимости от положения слайдера. Делов на 5 минут.
Там ничего сложного нет. Делим матрицу 8х8 на 4 квадрата размером 4х4. Далее получаем 16 случайных чисел - 1 и 0. От регулятора зависит, сколько в этом массиве из 16 чисел будет выпадать нулей или единиц - от этого зависит заполнение матрицы. Далее этот массив (квадрат) вращаем вокруг центра матрицы 8х8 - переносим данные на следующие 3 квадрата. Если непонятно описал, пиши, постараюсь более доходчиво описать.
Как раз этот массив и определяет симметрию из 16 в 64. Т.е. если первый бит в квадрате 4х4 нужно зажигать, зажигаем 0, 7, 56, 63 - угловые светодиоды. Если второй нужно зажигать, зажигаем 1, 15, 48, 62 и т.д. Чтобы каждый раз не считать, разрисовал в тетрадке в клетку и составил этот массив. Получается 16 четверостиший