Праздничный театр теней
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Необходимые инструменты и машины
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
|
Приложения и онлайн-сервисы
| ||||
| ||||
|
Об этом проекте
Обзор
В этом проекте используется Arduino 101, полоса адресуемых светодиодов, пенопласт и картон, чтобы создать управляемый телефоном анимированный театр теней. Электроника используется неразрушающим образом, поэтому вы можете легко использовать ее позже для другого проекта. Вот удобный список желаний Sparkfun с 99% электроники.
Как это работает:
Одна полоска адресуемых светодиодов наматывается на кусок пенопласта в центре Театра теней. Свет в нижней части медленно последовательно включается и светит через небольшие отверстия, создавая анимированную тень. Дальнейшие источники света направляются в здания наверху, а последний светодиод на полосе используется для освещения всей сцены, создавая основную тень.
Arduino 101 имеет встроенный радиомодуль Bluetooth, и я использую приложение для быстрого создания прототипов под названием Blynk для удаленного управления сценой. В примере кода вы можете управлять цветами в зданиях, включать мерцающий огонь и управлять яркостью основного теневого света.
Часть первая:настройка электроники
Шаг 1
Соберите концевой жгут светодиодной ленты, отрезав примерно 1 см от конца фонарей. Зачистите концы проводов.
Шаг 2
Разбейте изогнутые штыри, которые идут в комплекте с регулятором напряжения, и припаяйте два из них к концам зеленого и желтого проводов. Это позволит вам легко подключить их к контактам Arduino 101.
Шаг 3
Затем припаяйте красный провод к клемме VIN на регуляторе напряжения и припаяйте два прямых разъема к контактам GND и VOUT, как показано.
Шаг 4
Теперь подсоедините переходники цилиндрического домкрата. Сначала зачистите концы проводов, идущих от аккумуляторного отсека, затем вставьте их в клеммы штекерного гнезда и затяните отверткой. КРАСНЫЙ идет к клемме (+), ЧЕРНЫЙ идет к клемме (-).
Затем подключите переходник гнездового цилиндра к свободным проводам, идущим от начала светодиодной ленты. ЖЕЛТЫЙ идет к клемме (-), а КРАСНЫЙ идет к (+).
Шаг 5
Теперь подключите ваш жгут к Arduino 101. ЗЕЛЕНЫЙ провод идет к контакту 6, ЖЕЛТЫЙ провод идет к контакту GND рядом с №13.
С двумя контактами заголовка на регуляторе напряжения GND идет на GND, а VOUT идет на контакт Vin на Arduino 101. Не поймите неправильно! Подключение в обратном направлении приводит к появлению запахов и ожогов. Я знаю это.
Часть вторая:сборка этапа пенопласта.
Распечатайте выкройку из пенопласта на обычной бумаге для принтера (4 листа) и распечатайте выкройку картона на картонной бумаге (4 листа)
Шаг 1
Возьмите распечатанные страницы с выкройками из пенопласта и используйте их, чтобы вырезать кусочки пенопласта. Вы можете нанести узор на пенопласт, а затем слегка обвести контур ножом для хобби, чтобы передать линии.
Шаг 2
После того, как вы отрежете детали, начните со сборки держателя светодиодной ленты следующим образом:
Теперь возьмите светодиодную ленту и прикрепите первый светодиод к дну с помощью ленты или горячего клея и оберните светодиоды, как показано. Идея состоит в том, чтобы светодиодная лента оставалась целой. Это не обязательно должна быть очень плотная упаковка.
Сделав три обертывания, оставьте хвостовой конец свободным и закрепите верх липкой лентой или горячим клеем.
Шаг 3
Эта светодиодная лента имеет адресные светодиоды, что означает, что вы можете более или менее сказать:«Эй, ты посередине, стань красным!» Но они не отвечают на «привет», поэтому вам нужно знать их номера.
Светодиоды под складкой будут светить сзади Театра теней и использоваться для анимации. В приведенном ниже примере используются анимационные огни 0, 1, 2, 20, 21, 22, 40, 41, 42. Два светодиода в верхней части будут светить на дома. Я использую светодиод 23, чтобы освещать заднюю часть дома, и светодиод 25, чтобы имитировать свет костра в передних домах.
Подсчитайте количество светодиодов и нарисуйте простую справочную карту, которая имеет для вас смысл, чтобы вы могли ввести соответствующие номера светодиодов в код позже. Не забудьте начинать счет с начала полосы, начиная с нуля, потому что компьютеры.
Шаг 4
Приклейте держатель светодиода к нижней части из пенопласта. Расположите его, как показано, так, чтобы широкая полоса огней была примерно по центру по длине с основанием.
Теперь добавьте изогнутые боковые части из пенопласта на концах с помощью горячего клея, как показано.
Шаг 5
Теперь добавьте разделители света . и верх из пенопласта . Разделители света предотвращают попадание света анимации на дома и наоборот. Расположите самый большой разделитель рядом со складкой держателя светодиода, а меньший разделитель расположите над ним так, чтобы между ними находился хотя бы один светодиод (см. Фотографии ниже). Поместите верхнюю часть . так, чтобы он был квадратным с основанием, как показано на слайд-шоу ниже, и закрепите горячим клеем.
Шаг 6
Прикрепите конец светодиодной ленты к переднему верхнему краю горячим клеем, чтобы последний светодиод в цепочке мог светить на сцену. Это основной теневой светодиод.
Часть третья:программирование Arduino 101 и настройка Blynk
Подключите USB-кабель для программирования к Arduino 101 и соедините вместе светодиодную ленту, аккумулятор и Arduino 101 (оставьте переключатель питания на аккумуляторном блоке в положении «выключено») .
Вам понадобится Arduino IDE установлен на вашем компьютере с Intel Curie Core (см. раздел «Начало работы с Arduino 101»). Вам также потребуется установить Библиотека Adafruit Neopixel , а Библиотека Blynk .
Если вы новичок в Arduino, неплохо было бы запустить несколько базовых примеров скетчей, чтобы убедиться, что все работает нормально.
Шаг 1
Установите Приложение Blynk на вашем телефоне.
Blynk - отличный инструмент для быстрой проверки концепции и удаленного управления вашим Arduino 101. Поддержка BLE все еще имеет некоторые ошибки, но Blynk - это, безусловно, самый быстрый способ, который я нашел для управления любым проектом Arduino 101 с телефона.
Шаг 2
Загрузите пример кода в свою Arduino IDE и при необходимости измените номера светодиодных пикселей, используя карту, которую вы создали ранее.
Программа анимирует номера светодиодов в массиве pos [], чтобы создать иллюзию падающего снега. Измените эти числа, если необходимо, чтобы они соответствовали вашей настройке (светодиоды анимации находятся под складкой на держателе светодиодов). Расположите числа в том порядке, в котором вы хотите, чтобы они загорались. Свет проецируется через мелкие отверстия, образуя «снег», поэтому при освещении снизу вверх снег будет казаться падающим вниз, а слева направо - снегом, который дует справа налево.
// # свет анимации снега int pos [] ={0, 1, 2, 20, 21, 22, 40, 41, 42};
Затем установите, сколько пикселей будет анимировано
// # сколько пикселей анимации в массиве выше? int numLeds =9;
Затем установите пиксель, который находится на конце нити, сияющей на сцене (на полосе 60 пикселей это пиксель № 59).
// # основной отбрасывающий тень светодиод на конце нити. int shadowPixel =59;
Выберите пиксель для света, который будет светить в заднюю часть дома. Этот пиксель должен находиться между двумя разделителями света.
// # пиксель для фонарей в заднем домеint lightHousePixel =23;
Наконец, установите номер пикселя, который будет светить на передние дома, как «пиксель огня». Этот пиксель должен находиться прямо перед меньшим светоделителем.
// # Пиксель для мерцающего огня перед домами int firePixel =24;
Когда приведенный выше код будет изменен по мере необходимости, вы можете скомпилировать и загрузить на свой Arduino 101. После успешной загрузки кода отсоедините USB-кабель и переведите переключатель питания на батарейном блоке в положение «включено». Вы должны увидеть, что shadowPixel включится, и пиксели анимации загорятся последовательно. Пиксели дома и огня будут отключены, пока вы не управляете ими с помощью Blynk.
Шаг 3
Загрузка приложения Blynk:
Откройте приложение Blynk на своем телефоне и нажмите кнопку «сканировать» в правом верхнем углу. Отсканируйте этот QR-код, и интерфейс контроллера загрузится автоматически, и все будет готово.
При загрузке интерфейс должен выглядеть так:
Если вы предпочитаете создавать интерфейс Blynk вручную, а не сканировать приведенный выше код, начните с виджета BLE и трех ползунков, настроенных на вывод 0–100 в VO, V1 и V2.
Шаг 4
Подключитесь к Arduino 101 через BLE . Коснитесь виджета BLE, и если ваш Arduino 101 включен, вы должны увидеть «ShadowTheater». Подключитесь, затем нажмите значок стрелки «воспроизведение» в правом верхнем углу, чтобы управлять своим проектом. Возможно, вам потребуется восстановить соединение после того, как телефон перейдет в спящий режим.
Хорошо, с тяжелыми вещами покончено, теперь приступим к созданию! Вы можете выключить все до финального раскрытия.
Часть четвертая:силуэты карт, здания и последние штрихи
Шаг 1
Найдите свои четыре распечатанных листа картона. Используя нож для хобби и свежие лезвия, вырежьте силуэт на заднем плане. Часто меняйте лезвие! Резать тупым лезвием очень утомительно. Я менял лезвие 3 раза, вырезая этот силуэт.
Шаг 2
Вырежьте домики и приклейте спинки горячим клеем. Печатные стороны должны быть обращены назад, чтобы чернила не были видны спереди. Прокрутите фотографии ниже.
Шаг 3
Добавьте дома на сцену. Можно использовать горячий клей или скотч. Постарайтесь закрыть все зазоры, чтобы свет попадал в дома, но не рассеивался по сторонам.
Шаг 4
Теперь загните стороны силуэтного листа и прикрепите низ к заднему краю ступени горячим клеем. (поверните напечатанную сторону от зрителя.)
Шаг 5
Вырежьте снежную сцену, чтобы проецировать ее на стену за театром теней. Вы можете использовать булавки или зубочистки или вырезать замысловатые формы. Когда лист готов, приклейте его горячим клеем к изогнутым краям, чтобы создать выступающую поверхность.
Шаг 6
Прикрепите горячим клеем левый и лицевой листы.
Неплотно прикрепите правую боковую пластину с помощью ленты, чтобы вы все еще могли добраться до внутренней части, чтобы включать и выключать питание на батарейном отсеке.
Готово! Найдите темное место со стеной поблизости, чтобы попробовать! Когда вы впервые включаете питание, Театр теней должен отбрасывать тень сцены и падающий снег. С помощью приложения Blynk вы можете управлять основным светом и освещением в зданиях.
Код
- Театр теней Arduino Sketch
Театр теней Arduino Sketch Arduino
В этом скетче используются библиотеки Adafruit NeoPixel и Blynk. Он позволяет дистанционно управлять светодиодами в адресной цепочке светодиодов для создания эффектов в Shadow Theater./ * Copyright (c) Корпорация Intel, 2016. Все права защищены. См. Примечание о лицензии в конце файла. * //////////////////////// ЭТИ ПЕРЕМЕННЫЕ, КОТОРЫЕ ВЫ ДОЛЖНЫ ИЗМЕНИТЬ, ЧТОБЫ СООТВЕТСТВОВАТЬ ВАШИМ НАСТРОЙКАМ SHADOW THEATER //// ////////////////////////////////////// Анимация снега lightsint pos [] ={0, 1, 2, 20, 21, 22, 40, 41, 42}; // какие светодиоды доступны для анимации? Они будут вызываться слева направо. Int numLeds =9; // сколько пикселей анимации находится в приведенном выше массиве? int shadowPixel =59; /// основной светодиод отбрасывания тени в конце пряди.int lightHousePixel =23; // пиксель для фонарей в заднем домеint firePixel =24; // пиксель мерцающего огня для фасадных домов. ////////////////////////////////////////////////// ////////////////////////////////////////////////// // # include#include #include #define PIN 6int v0 =0; // переменные для хранения входящих значений от Blynkint v1 =0; int v2 =0; int fadeup =0; // переменные для сглаживания световой анимации int fdedown =0; int firetimer =0; /// переменные для мерцания огня fireinterval =50; int flicker =0; unsigned long lightcounter =0; // переменная для подсчета анимирующих огней навсегдаint stp =0; /// легкие шаги для анимации. Один для текущего света, чтобы включить его, и один для старого, чтобы выключить его. Int stpOld =0; unsigned long timer =0; int interval =0; char auth [] ="YourAuthToken"; /// Токен аутентификации в настоящее время не используется Blynk для BLE. Если он будет включен в будущем, вы можете получить свой токен аутентификации из своего приложения Blynk и вставить его в "" .BLEPeripheral blePeripheral; /// устанавливаем соединение BLEAdafruit_NeoPixel strip =Adafruit_NeoPixel (60, PIN, NEO_GRB + NEO_KHZ800); //// настраиваем световую полосу. Если ваша светодиодная лента имеет более или менее 60 пикселей, измените первое число, чтобы оно соответствовало вашей полосе .void setup () {delay (1000); таймер =миллис (); strip.begin (); strip.show (); // Инициализируем все пиксели как "выключенные" blePeripheral.setLocalName ("ShadowTheatre"); blePeripheral.setDeviceName ("Театр теней"); blePeripheral.setAppearance (384); Blynk.begin (авторизация, blePeripheral); blePeripheral.begin (); интервал =350; // временной интервал 350 мс для анимации снега} void loop () {Blynk.run (); // Блинк для управления в реальном времени blePeripheral.poll (); //////// включить пиксель тени и управлять с помощью Blynk strip.setPixelColor (shadowPixel, 200 - v2, 160 - v2, 160 - v2); // включает теневой свет, v2 (отправленный из приложения Blynk) меняет свет. // запускаем if ((millis () - firetimer)> fireinterval) {firetimer =millis (); мерцание =случайный (0, 40); // по прошествии заданного временного интервала изменяем яркость огня случайным образом от 0 до 40.} if (v0> 1) {strip.setPixelColor (firePixel, 80 + v0 + flicker, v0 + flicker, 0); // огонь =яркость ползунка в Blink + значение мерцания, взвешенное в сторону красного} else {strip.setPixelColor (firePixel, 0, 0, 0); // включаем огонь, только если ползунок Blynk> 0.} // houselights if (v1> 1) {strip.setPixelColor (lightHousePixel, 200 - v1, v1, 0); /// если ползунок Houselights в Blynk> 0, управлять светом в задней части дома. еще выключите. } еще {strip.setPixelColor (lightHousePixel, 0, 0, 0); } // анимация снега if ((millis () - timer)> interval) {// каждый раз, когда проходит интервал, перемещаемся на один шаг вперед и сбрасываем затухание stpOld =stp; таймер =миллис (); lightcounter ++; stp =(световой счетчик% numLeds); /// считает снова и снова от нуля до numLeds-1 fadeup =0; // сбрасываем значения затухания каждый раз, когда проходит интервал fadedown =170; } fadeup + =2; fadeup =ограничение (fadeup, 0, 170); затухание - =2; fdedown =ограничение (fdedown, 0, 170); for (int i =0; i
Схема
Распечатайте их на обычной бумаге для принтера, чтобы использовать их в качестве направляющих для резки пенопласта. Вы можете разместить их сверху и обвести ножом для хобби, чтобы перенести узор насквозь. Распечатайте на картонной бумаге 8,5 x 11 дюймов (4 листа). На них можно создать силуэты домов, сторон и теней. на лазерный или виниловый резак, вы можете использовать этот узор для вырезания кусочков картона. 30bn6Le68V1Lpp2spRMw.svgПроизводственный процесс