Программа бегущая строка для телефона
Раньше как-то пробовал баловаться со светодиодами, точнее со светодиодной лентой, но это была простая светомузыка с использованием одного транзистора. А тут нужно же как-то и матрицу светодиодную сделать, и текст где-то хранить, и как-то его выводить. На «рассыпухе» просто так не сделать, по крайней мере с моим опытом.
Услышал, что можно делать на платформе Arduino. Раньше слышал, что есть такая крутая программируемая плата, что проект этот был стартапом, собравшим немалое количество денег, но в подробности не вдавался. А тут пришлось. Посмотрел несколько видео с примерами проектов, реализованных на Arduino, понравилось, купил.
В моей работе использовалась Arduino Uno R3, но не оригинальная, а копия. Как я почитал, особой разницы между копией и оригиналом нет. Плата Arduino имеет 14 цифровых входов/выходов, 6 аналоговых, входы внешнего питания, выходы +5 В, +3.3 В, GND. К компьютеру подключается с помощью USB. Для программирования микроконтроллера используется собственная IDE, которая распространяется бесплатно на официальном сайте Arduino.
С Arduino понятно, теперь надо решить, как сделать саму светодиодную матрицу. Изначально за основу разработки проекта была выбрана статья, в которой предлагалось использовать готовые модули со светодиодными матрицами и сдвиговыми регистрами. Схема представлена на рисунке 1. Использование готовых модулей, а именно MAX7219, значительно упростило бы разработку, так как необходимо было бы только всё правильно подключить и написать программу для корректной работы и вывода информации.
Однако возникли трудности с поиском соответственно этого модуля в нашей стране, поэтому было решено искать другой способ реализации. Да и как-то просто было бы совсем. Поэтому решил, что надо делать матрицу самому на светодиодах, благо в интернете достаточно информации, как это сделать.
Разработка
Для выбора строки матрицы был использован десятичный счётчик с дешифратором К176ИЕ8. Выбор пал на эту микросхему по причине её популярности, а также, потому что она имеет 10 выходов, как раз для управления 10-ю строками матрицы. Управляется счётчик с помощью микроконтроллера Arduino через входы сброса, счёта и выхода на 5 В.
Выходы счётчика подключаются к блоку транзисторов для управления светодиодной матрицей. Подключение будет рассмотрено в блоке транзисторов.
В результате функциональная схема получилась следующего вида:
Блок транзисторов
Для управления светодиодами кроме сигнала, подаваемого на аноды со 2 по 9 портов Arduino, необходимо также подавать напряжение на катоды светодиодов. Делается это с помощью блока транзисторов.
Все катоды светодиодов каждой строки соединены между собой и подключены к коллекторам 10 транзисторов. Эмиттеры транзисторов подключены к «земле», а на базу приходят сигналы с выходов счётчика.
В этом проекте используются биполярные транзисторы npn типа 2N3904. Так как каждый транзистор подключён к своей строке матрицы, то всего в схеме их используется 10 штук. Выбор пал на этот вид транзисторов из-за их популярности, а также соответствия условиям разработанной схемы. Этот транзистор применяется в схемах с небольшим напряжение. Общий вид и УГО данного транзистора:
Теперь можно описать, как происходит загорание светодиода. С определённого порта Arduino подаётся сигнал на анод светодиода. В то же самое время на счётчика с определённого выхода подаётся сигнал на базу эмиттера. И с коллектора транзистора идёт напряжение на катоды светодиодов. Так как в матрице соединены последовательно аноды светодиодов соседних строк, а также последовательно соединены катоды светодиодов соседних столбцов, то в одно время происходит загорание нескольких светодиодов матрицы.
Важный момент! Ардуино на выходе выдаёт около 5 В, поэтому для подсоединения анодов светодиодов к Ардуино нужно использовать резисторы номиналом 220 Ом, а для подсоединения базы транзисторов к выходам счётчика – номиналом 1 КОм. Найти эти резисторы не составляет труда, тем более они идут в стартовом наборе Ардуино.
От мысли к действию, или от схемы к реализации
В результате пайки получилась следующее устройство.
Программная часть
Теперь всё это дело нужно было подключить к Ардуино. Код само-собой писался на C. Первым делом нужно проинициализировать используемы порты платы Arduino. Это делается в функции setup() следующим образом:
clock и reset – порты 11 и 10 Arduino соответственно.
Первым делом идёт указание, что порты со 2 по 9 используются в качестве выходных. Делается это в цикле с помощью метода pinMode(i, OUTPUT), где i –номер порта, OUTPUT – флаг, указывающий, что этот порт выходной.
Далее аналогичным образом инициализируются порты clock и reset. С помощью функции digitalWrite(reset, HIGH) происходит подача высокого уровня напряжения на порт reset, что тем самым делает сброс счётчика. После 5 мс задержки (delayMicroseconds(5)) на порт reset подаётся низкий уровень напряжения.
После инициализации портов нужно разработать алгоритм включения светодиодов для вывода тестовой информации и имитации их движения, т.е. сделать алгоритм бегущей строки.
Для этого была создана отдельная функция display_symbol(int loops), которая принимает в качестве аргумента значение задержки для имитации движения текста. Опытным путём было установлено, что лучше всё информация воспринимается, если значение задержки находится в промежутке от 15 до 25.
Рассмотрим внутреннюю реализацию функции display_symbol(int loops).
Сначала видно четыре вложенных цикла. Самый наружный цикл, проходит по всем элементам байтового массива, т.е. по выводимым символам. Байтовым массив и его размерность задаётся разработчиком вручную выглядит наподобие следующего:
Каждый символ разложен на 10 байт, что соответствует количеству строк, а каждый байт, как известно, состоит из 8 бит. Каждый бит отвечает за определённый светодиод на схеме. Пример разбитого на биты символа:
Например, 0 и 9 байты выглядят как B00000000, это значит, что в 1 и 10 строках светодиоды гореть не будут. Сделано это для удобного чтения информации пользователем. А вот, например, 1-й байт со значением B01000010 указывает, что во второй строке для данного символа должны загораться 2 и 7 светодиоды. Таким образом из всех этих байт выстраивается символ буквы «И».
Вот, что получилось в результате:
А где же обещанное управление со смартфона?
В принципе результатом я остался доволен, как-никак первый раз так много паял и всё сразу заработало. Но захотелось большего, и я подумал добавить управление с Android смартфона по Bluetooth. Для Arduino есть готовый модуль HC-06. Схема его подключения к Arduino выглядит следующим образом:
Подробности подключения к Arduino и соединения со смартфоном описаны в этой статье: Блютуз модуль HC-06 подключение к Arduino. Соединение с телефоном и компьютером
В соответствии с этим код был изменён. И решил добавить ускоренное пролистывание текста, инверсное зажигание светодиодов и пролистывание текста с мерцанием. Ссылки на код для Android и Arduino будут ниже. В результате получилась вот такая штука:
Заключение
Сначала, что касается разработанного курсового. Главным достоинством разработанного устройства является его универсальность. Благодаря использованию программируемой платы Arduino проект можно расширять использованием различных датчиком и написанием соответствующих прошивок. В результате кроме функционала бегущей строки можно добавить и функционал вывода состояния погоды, используя соответственно датчики температуры, влажности, атмосферного давления. Если добавить какой-нибудь датчик звука, то можно доработать схему до музыкального эквалайзера.
А общие выводы заключаются в том, что Arduino – действительно классная штука, с помощью которой в домашних условиях можно сделать множество полезных и просто крутых штук, которые раньше могли сделать люди, посвятившие электронике не один год. Тем более, что есть множество примеров различных устройств на Ардуино в Интернете в открытом доступе. Уже есть даже множество книг по Ардуино, одну из которых я точно советовал бы для рассмотрения в качестве руководства для начинающих и продвинутых разработчиков: Arduino CookBook.
Я с всегда с огромным удовольствием смотрю на замечательные выступления в рамках конференции TED, публикуемые на страницах Лайфхакера. Завидую ораторам, которые умеют свободно и легко излагать свои мысли перед огромной аудиторией, не запинаясь и ни на шаг не сбиваясь с линии своего повествования. К сожалению, такой талант дан далеко не всем.
Впрочем, есть выход. Для всех людей, которым необходимо озвучить большой текст перед аудиторией, но не хочется при этом читать с бумажки, существуют специальные подсказчики — телесуфлеры. Профессиональные устройства этой категории разумеется довольно дороги, но в некоторых случаях можно обойтись и любым ноутбуком в паре со специальным веб-приложением.
CuePrompter
CuePrompter — это простейший сервис, который позволяет превратить любой ноутбук в надежного помощника во время публичных выступлений. Он может отобразить заданный вами текст в виде ползущих на экране слов, которые вы сможете прочитать даже находясь на значительном расстоянии от монитора.
От нас требуется только вставить нужный текст в соответствующее поле, настроить размер текста и параметры отображения (цвет фона и текста), а затем нажать на кнопку Start. Окно телесуфлера открывается в новом окне и содержит кнопки включения прямой и обратной перемотки и переключение между девятью фиксированными скоростями.
Существенным недостатком этого сервиса является ограничение на объем текста в 2000 знаков.
EasyPrompter
Это самое интересное приложение этого обзора. Кроме основной своей функции — отображения и прокрутки текста, содержит целый ряд дополнительных возможностей, в том числе отображение времени вашего выступления, маркера позиции в тексте и другие.
Окно добавления текста позволяет настроить размер шрифта, скорость прокрутки, включить режим отображения текста только заглавными буквами или зеркального отображения.
Поверх экрана телесуфлера отображаются кнопки управления воспроизведением, изменения скорости и размера текста, которые, впрочем, вы легко можете спрятать. Кроме этого, вы можете прямо на лету менять скорость прокрутки, просто покрутив колесико мышки. Обратите внимание, что вы можете использовать этот сервис и в отсутствие подключения к сети. Как это сделать описано здесь.
Online Teleprompter
Online Teleprompter запускается в отдельном окне браузера и содержит только минимум функций, необходимых для отображения текста вашего выступления. Здесь мы видим только поле ввода текста, кнопки старта и остановки, а также настройки величины шрифта и скорости демонстрации текста.
Сегодня мы расскажем вам как вернуть бегущую строку уведомлений на любое устройство с операционной системой Android на борту.
Сделать это вы можете установив приложение с наименованием «Super Status Bar - Gestures, Notifications & more» от разработчика еще одного достаточно известного приложения: Bottom Quick Settings.
Это приложение также позволит вам получить возможность управления яркостью и громкостью с помощью скользящих жестов по статусбару, настроить вид панели уведомлений и прочее.
Чтобы включить бегущую строку уведомлений в статус баре, вам нужно сделать следующее:
1. Установить приложение и запустить его
2. На главном экране приложения нажать на «Старт» и в открывшемся окне включить опцию «Служба специальных возможностей».
3. При касании её вы попадете в раздел «Спец. возможности» меню настроек системы, где вам нужно выбрать Super Status Bar и включить возможность использования сервиса:
4. Вернувшись на главный экран приложения выберите опцию «Текст в строке», а в открывшемся при этом окне её настроек включите «Бегущий текст в статус баре». При этом Android запросит предоставить приложению доступ к уведомлениям. Предоставьте его. Вернувшись с меню опции «Текст в строке» убедитесь, что переключатель «Бегущий текст в статус баре» включен.
5. Отключите всплывающие уведомления. Выбрав соответствующий пункт вы увидите инструкцию как сделать это.
Если у вас есть Root, то всё просто: вам нужно нажать на соответствующую кнопку и дать доступ к правам суперпользователя приложению.
Если Root нет, вам придется получить соответствующие права, подключив свой смартфон или планшет к компьютеру с установленной на него программой ADB с помощью USB кабеля. Как это сделать читайте ниже:
* Если компьютера, ноутбука или Windows планшета у вас нет, то вы можете воспользоваться Android устройством, следуя инструкциям в этой статье: ADB и Fastboot без компьютера, с помощью Android смартфона или планшета [Инструкция].
2. Зайдите в меню настроек системы смартфона и включите здесь режим отладки по USB. Где его найти и как включить описано в этом материале
3. Подключите ваш смартфон к компьютеру посредством USB кабеля, а затем на компьютере открой те менеджер файлов (проводник) и перейдите в папку, в которую вы поместили ранее скачанную программу ADB. Запустите окно командной строки Windows (терминал Linux/Mac). Например, на Windows устройстве для этого введите в адресной строке Проводника команду cmd и нажмите «Enter».
В открывшемся при этом окне командной строки выполните команду:
4. Теперь можно приступать к предоставлению необходимого для работы Super Status Bar разрешения. Для этого в окне командной строки/терминала выполните следующую команду:
adb shell pm grant com.tombayley.statusbar android.permission.WRITE_SECURE_SETTINGS
./adb shell pm grant com.tombayley.statusbar android.permission.WRITE_SECURE_SETTINGS
Отключите телефон о компьютера, перезагрузите его, а затем запустите Super Status Bar и убедитесь, что все необходимые переключатели находятся во включенном положении.
Наконец то довел до некоего логического завершения свою бегущую строку на WS2812b о которой уже писал в блоге ранее. Теперь текст, его цвет, скорость прокрутки и зацикливание можно настраивать из приложения для андроид.
Приложение кстати выглядит вот так:
Снял небольшое видео, пытался максимально запечатлеть процесс настройки текста, не всегда правда фотоаппарат правильно фокусировался, но в целом понятно.
UPD Переделал размер табло и изменил шрифт, вот видео теста знакогенератора (проверка всех символов по порядку)
Комментарии 28
Это не ардуина. Это устройство со своей полностью с нуля написанной прошивкой на C с грязными хакамии и извращениями. Изначально не планировал выкладывать исходники в свободный доступ, поэтому посторонний человек в них особо не разберется.
ясно.
а я добивался максимально легкого повторения и гибкости системы.Да и цена мала
А я не старался добится повторяемости, это проект был just for fun. Может как нибудь сяду и приведу все в порядок, но пока на это нет времени, сейчас загружен другими проектами.
Это не ардуина. Это устройство со своей полностью с нуля написанной прошивкой на C с грязными хакамии и извращениями. Изначально не планировал выкладывать исходники в свободный доступ, поэтому посторонний человек в них особо не разберется.
теперь бы с телефоном подружить. Да мозгов маловато :))
После Управлятора 3.0 скорее всего займусь универсальным контроллером для ws2812, будет возможность подключить до 2048 светодиодов и управлять ими через блютуз или с микросд карты
а программа записи эфектов своя или китайская HD2014 (HD2014)
Будут ли предусмотрены пульт и внешнее управление проводами
Если буду делать — то все свое. Пока это все в виде идей. Есть идея сделать несколько разных железок (дешевле и дороже) которые смогут работать с одним и тем же ПО, но способные тянуть разное количество светодиодов. Например младьшая версия будет работать только с цепочкой из 20 светодиодов, но такие устройства можно будет синхронизировать и они смогут работать в составе большой световой экспозиции с управлением от главного контроллера. При этом маленькие контроллеры смогут работать и автономно по своей программе
если можно еще вопрос.
эффекты будут заводские или программируемые(хотя бы выбираемые) пользователем
И заводские и программируемые.
добавьте мою идею и будет круче
Братик а сколь будет стоить такая на заказ ?
чудо то какое мне б в Спринтере оно по делу было бы…приходится всякие бумажные таблички распечатывать и ставить на лобовое
Читайте также: