Блог

  • Архив

    «   Апрель 2024   »
    Пн Вт Ср Чт Пт Сб Вс
    1 2 3 4 5 6 7
    8 9 10 11 12 13 14
    15 16 17 18 19 20 21
    22 23 24 25 26 27 28
    29 30          

Замороженный свет светодиодных линеек

Приветствуем уважаемую публику!

Два слова о названии блога: про совсем уж бесполезные вещи постараемся не писать. Будем надеяться, что даже изготовление чего-то с сомнительным конечным результатом будет полезно в плане приобретения нового умения или опыта.

Итак, начнем.
Многие знают о такой технике художественной фотографии как "фризлайт" (от англ. freezelight - "замороженный свет"). На всякий случай напомним о чем речь: с помощью фонарика (или нескольких), большой фантазии и верной руки перед объективом фотокамеры, делающей длинную выдержку, изображается некая художественная идея. Иногда как самоценное произведение, иногда как элемент "дополненной реальности". В интернетах есть масса примеров фризлайтов разной степени интересности.

Идея эта давным-давно используется в технике - любой кинескоп или другое сканирующее устройство отображения информации фактически эксплуатирует свойство инерционности человеческого зрения. Разница только в том, за какое время нужно отрисовать полную картинку. В иностранных интернетах такая идея обозначается как POV (persistence of vision - инерция зрения), и продолжает вдохновлять конструкторов экзотических систем отображения (включая также велосипедные колеса и, не к ночи буду помянуты, спиннеры).

И вот однажды промелькнула идея попробовать сделать светодиодную линейку, которая, как матричный принтер, оставляла бы на фризлайте текст. Тем более, что со всеми нынешними Ардуинами это можно сделать действительно за вечер (хотя довести до условно-полезного вида потребовало больше времени). Подробное описание и код скетча для Ардуино есть там. Далее некоторое время обдумывалась и прототипировалась цветная версия, но благополучно заглохла.

Впрочем, идея свербила где-то на периферии сознания, и когда в магазине обнаружились программируемые RGB-светодиоды WS2812B (и это удобно совпало с некоторым количеством свободного времени), было решено попробовать снова. Adafruit написали для Ардуино удобную библиотеку NeoPixel (по торговому имени линеек, которые они производят), так что глядеть на демонстрационные эффекты, которые выделывала эта библиотека на самодельной 16-диодной линейке, было весьма захватывающе. Внятная "печаталка для фризлайтов" пока не получилась (по причине отсутствия хороших мыслей про организацию управления, которые некогда подумать), но увиденные возможности такой линейки сразу предопределили приобретение ленты из 60 светодиодов, как только она попала на глаза.

Собственно, про нее сегодня и речь. Попробуем сделать на ее основе рисовалку картинок-спрайтов. Описание, коды и вспомогательный софт будут там. Здесь вкратце о том, что получилось и куда дальше.

Итак, нам нужно:
  1. Адресная светодиодная лента на WS2812B
  2. Arduino UNO (Duemilanove, Nano, в общем, любая)
  3. Тактовая кнопка
  4. Резистор для линии DIn на 300-500 Ом (необязательно, но рекомендуется)
  5. Конденсатор 1000 мкФ (необязательно, но рекомендуется)

Также - фотоаппарат, умеющий делать длинные (3 - 10 сек) выдержки и что-то типа куска кабель-канала или рейки длиной ~1,2 м, куда можно наклеить светодиодную ленту.

Пиковое потребление такой ленты составляет около 0,8А при 5В. Поскольку ее придется активно перемещать в пространстве, питание удобно организовать USB-кабелем от портативного аккумулятора (aka PowerBank).

Электрические соединения ленты с Ардуино тривиальны: GND к GND; +5V к +5V; DIn к D6 Arduino (можно не к D6, если учесть это в коде). Буквально три провода. Дабы минимизировать риск повреждения пикселей, Adafruit рекомендует DIn ленты подключать к контроллеру через резистор 300 — 500 Ом и поставить на линии питания конденсатор на 1000 мкФ. Органы управления минимизируем до одной кнопки, которая при нажатии будет закорачивать на землю D3, например. Схема для тех, кто привык к беспаечным макеткам (для Arduino NANO):



Untitled Sketch_bb.png


Прилепим ленту на носитель из, в нашем случае, кабель-канала, там же разместим контроллер таким образом, чтобы было удобно нажимать на кнопку. Скетч для Ардуино и инструкция по подготовке изображения - опять же там.

IMG_7752_5.jpg

Можно попробовать сделать фризлайт: закрепим фотоаппарат в каком-нибудь темном углу (или дождемся вечера на улице), поставим выдержку 3-5 сек и, если нет помощников, задержку спуска, чтобы успеть занять место в кадре. Когда откроется затвор, плавно проведем линейку по кадру.


IMG_7751_3.jpg

IMG_7757_3.jpg

Как-то так. При наличии фантазии подобные фризлайты можно сделать более интересными.

В качестве домашней работы для заинтересовавшихся назовем пару улучшений, которые были бы полезны в данном случае:
а) Изготовление рассеивающих колпачков (или подобного), чтобы смягчить проблему больших интервалов между светодиодами. Альтернатива — прилепить вплотную еще одну ленту со смещением в один «пиксель».

б) Вывод картинок не из ПЗУ, а с SD-карты (и, может, с конверсией из неподготовленных картинок «на лету»). Соответственно, некоторый интерфейс для пользователя, чтобы можно было эти картинки выбирать. Или прямая трансляция столбиков, прилетающих по последовательному интерфейсу/блютузу от компьютера или смартфона.

Успешного технического творчества!