За этим замысловатым названием кроется очень интересная конструкция на PIC микроконтроллере. Главное достоинство — это оригинальность идеи. В Интернете можно встретить множество вариантов подобных устройств. Я решил опубликовать две схемы. Первую из них я нашел в глубинах интернета. Я выбрал именно эту схему потому, что в у нее простая схема и упрощенная и легкая для понимания программа. На основе первой схемы я разработал другой вариант такого же устройства (на микроконтроллере AT89C2051).

Устройство представляет собой небольшую палочку с электронной начинкой. На палочке имеется ряд светодиодов (в нашем случае их пять штук). Они расположены вдоль палочки, как показано на рисунке.

Расположение светодиодов в корпусе

Внутри схема на микроконтроллере и батарейка. Вы берете волшебную палочку в руку и делаете быстрый мах в воздухе. Вам не приходилось махать, в темноте палкой, вынутой из костра, с тлеющим огоньком на конце? Такая палка рисует линии в прямо воздухе. А наша волшебная палочка рисует не линии. В ней, внутри встроен инерционный датчик. Как только вы начнете движение, датчик сработает и подаст на процессор команду старта. Процессор начнет зажигать и тушить светодиоды по мере движения палочки. В результате появится надпись. Некое слово, заложенное в программе процессора. В авторском варианте палочка высвечивает слово «HELLO». Но программа содержит в себе подпрограммы рисования всех латинских букв. Заставить ее показывать любое другое латинское слово — пара пустяков. Русские буквы тоже сделать нетрудно. Дальше я обо всем этом подробно расскажу.

Принципиальная схема устройства:

Принципиальная схема fly text

 

Вы видели, что ни будь проще? Тут и пояснять особо нечего. В основе схемы микросхема PIC16C84. Стабилизатор напряжения DA1 служит для получения напряжения стабилизированного +5В, которое питает все устройство. На элементах R1, C4 собрана частотно задающая цепочка, для внутреннего тактового генератора микросхемы. Вход RA0 используется для ввода стартового сигнала в микроконтроллер. Для этого на него, через резистор R2 подано напряжение питание, образующее на входе сигнал логической единицы. Контактная пара «Старт» срабатывает при резком ускорении движения палочки и замыкает вход RA0 на общий провод, создавая на нем нулевой уровень. Программа постоянно опрашивает состояние этого входа. Когда после очередного цикла опроса программа получит нулевой уровень в младшем разряде порта RA, она перейдет к циклу вывода изображения. Светодиоды подключены к пяти младшим разрядам порта RB процессора. Автор подключил светодиоды непосредственно к выходам микросхемы для получения большей яркости свечения, хотя такая схема включения создает слишком большую нагрузку на выходы. Для повышения надежности и яркости светодиодов не мешало бы подключить светодиоды через транзисторные ключи.Остальные ёмкости схемы служат для сглаживания помех по питанию.

 

Для синхронизации процесса вывода изображения с движением палочки применяется инерционный контактный датчик движения. Устроен он следующим образом:

Инерционный датчик синхронизации

В состоянии покоя контакты разомкнуты. Если же резко махнуть палочкой, то груз под действием силы инерции замкнет контакты. На входе RA0 контроллера появится сигнал логического нуля. По этому сигналу процессор запустит процесс вывода изображения.

 

Программа микроконтроллера

Автор этой конструкции приводит полный текст программы с комментариями.

В этой программе реализован самый элементарный алгоритм. В авторском варианте она может выводить только заглавные латинские буквы. После включения программа сначала производит настройку портов (процедура init). Все разряды порта B переводятся в режим вывода. А порт B настраивается таким образом, что его младший разряд RA.0 включается в режим ввода. Для этого в управляющие регистры соответствующих портов записываются управляющие коды. Далее программа переходит к процедуре опроса датчика запуска getbut. Пока датчик не замкнут, программа находится в непрерывном процессе опроса датчика и из программы опроса не выходит. Как только программа обнаружит нулевой сигнал на RA0, она переходит к процедуре вывода слова letters.

Процедура вывода слова представляет собой последовательные обращения к подпрограммам вывода букв отображаемого слова. У автора программа выводит слово «HELLO». Поэтому она последовательно обращается к подпрограммам вывода именно этих букв.

Для вывода каждой буквы имеется своя отдельная подпрограмма. Для вывода буквы ‘A’ служит подпрограмма, на которую можно перейти по метке ‘la’. Подпрограмма вывода буквы ‘B’ имеет метку ‘lb’ и так далее. Все подпрограммы вывода букв совершенно одинаковы. Различаются они лишь выводимыми кодами. Каждая подпрограмма последовательно выводит на выходные светодиоды четыре кода, соответствующие четырем столбцам матрицы, отображающей изображение буквы. Эта матрица, как мы знаем, образуется при движении пяти светодиодов в пространстве. Следовательно каждый знак отображается матрицей 4X5 точек. После вывода очередного столбца матрицы, подпрограмма рисования буквы переходит к подпрограмме задержки wait. Подпрограмма задержки обеспечивает нужный темп вывода столбцов. Задержка подобрана таким образом, что бы при движении палочки с разумной для человека скоростью, ширина букв была пропорциональна их высоте.

После вывода всех четырех столбцов, подпрограмма вывода буквы переходит к процедуре space1, служащей для формирования промежутка между буквами. Подпрограмма space1 гасит все светодиоды и выдерживает необходимый временной интервал.

Описываемая программа содержит подпрограммы для высвечивания всех букв латинского алфавита. поэтому вы сами легко можете переделать программу, заставив ее выводить ваше слово. Для этого нужно переписать процедуру letters таким образом, что бы она обращалась к подпрограммам вывода нужных букв.

В заключении предлагаем скачать ZIP-архив, содержащий текст программы и оттранслированный ее вариант в формате HEX и BIN. Формат HEX является выходным форматом транслятора с языка ассемблера. HEX формат — это по сути специальный текстовый формат, в котором каждый байт кода описан в шестнадцатеричной форме. Формат BIN — это уже набор тех самых двоичных кодов, собственно и составляющих программу. Эти самые коды при помощи специального программатора необходимо «прошить» в память программ контроллера PIC16C84.

Второй вариант схемы:

 Принципиальная схема "Волшебная палочка". Автор - Белов А.В.

Принцип действия в новой схеме аналогичен предыдущей. Отличие состоит во-первых в том, что в новой схеме используется не 5, а 7 светодиодов. Это даёт возможность улучшить качество высвечиваемых букв и цифр. Кроме того, датчик движения в новой схеме двухсторонний. Он запускает процесс высвечивания как при прямом, так и при обратном ходе «палочки». При этом мы увидим одно и то же изображение. Кнопка S1 служит для выбора высвечиваемого слова. В программу заложено несколько слов для высвечивания. Каждое нажатие кнопки переключает «палочку» в режим высвечивание следующего. После последнего слова, программа переходит к первому.

Ниже приведен рисунок двунаправленного датчика движения.

 

Двухконтактный инерционный датчик

 

Из опыта изготовления конструкции:
1. Для того, что бы надпись была хорошо видна, нужно приноровиться правильно махать устройством. Это не так просто. Необходимо, что бы палочка двигалась равномерно. Иначе некоторые знаки сливаются в вертикальную линию и не понятно, что написано.
2. Самая оптимальная длина надписи — три символа. Такая надпись хорошо различима. Можно сделать надпись в четыре символа. Это тоже приемлемо. Надпись в пять символов наименее читаема. Тут нужно делать широкие махи. При этом труднее выдерживать равномерность движения.
3. Подберите для устройства светодиоды с повышенной яркостью свечения. Иначе вы сможете насладиться эффектом только в полной темноте.

Просмотров всего: 1 602, сегодня: 1

Напишите комментарий