Оглавление:

Интерактивный геодезический светодиодный купол: 15 шагов (с изображениями)
Интерактивный геодезический светодиодный купол: 15 шагов (с изображениями)

Видео: Интерактивный геодезический светодиодный купол: 15 шагов (с изображениями)

Видео: Интерактивный геодезический светодиодный купол: 15 шагов (с изображениями)
Видео: Светодиодный графический экран 2024, Ноябрь
Anonim
Image
Image
Интерактивный геодезический светодиодный купол
Интерактивный геодезический светодиодный купол
Интерактивный геодезический светодиодный купол
Интерактивный геодезический светодиодный купол
Интерактивный геодезический светодиодный купол
Интерактивный геодезический светодиодный купол

Я построил геодезический купол, состоящий из 120 треугольников, со светодиодом и датчиком в каждом треугольнике. К каждому светодиоду можно обращаться индивидуально, и каждый датчик настроен специально для одного треугольника. Купол запрограммирован с помощью Arduino, чтобы загораться и генерировать MIDI-сигнал в зависимости от того, в какой треугольник вы кладете руку.

Я спроектировал купол так, чтобы он был забавным дисплеем, который заинтересовал людей светом, электроникой и звуком. Поскольку купол красиво делится на пять частей, я спроектировал купол так, чтобы он имел пять отдельных MIDI-выходов, каждый из которых мог иметь разный звук. Это делает купол гигантским музыкальным инструментом, идеально подходящим для воспроизведения музыки с несколькими людьми одновременно. Помимо воспроизведения музыки, я также запрограммировал купол для световых шоу и воспроизведения Симона и Понга. Окончательная конструкция имеет диаметр чуть больше метра и высоту 70 см и в основном построена из дерева, акрила и деталей, напечатанных на 3D-принтере.

Есть несколько отличных инструкций по светодиодным столам и кубам, которые вдохновили меня начать этот проект. Однако я хотел попробовать расположить светодиоды с другой геометрией. Я не мог придумать лучшей конструкции для проекта, чем геодезический купол, который также хорошо задокументирован на Instructables. Итак, этот проект представляет собой ремикс / мэшап светодиодных столов и геодезических куполов. Ниже приведены ссылки на таблицу светодиодов и инструкции по геодезическому куполу, которые я проверил в начале проекта.

Светодиодные столы и кубики:

www.instructables.com/id/RGB-LED-Pixel-Touc…

www.instructables.com/id/Touch-LED-Table-Re…

www.instructables.com/id/Led-Cube-8x8x8/

www.instructables.com/id/500-LED-Pixel-RGB-…

Геодезический купол:

www.instructables.com/id/Folding-Geodesic-D…

www.instructables.com/id/Geodesic-dome-kit/

Шаг 1: Список материалов

Список поставок
Список поставок
Список поставок
Список поставок
Список поставок
Список поставок

Материалы:

1. Древесина для подкосов купола и основания купола (количество зависит от типа и размера купола).

2. Адресная светодиодная лента (Адресная цветная светодиодная пиксельная лента 5 м, 160 светодиодов Ws2801 Dc5v)

3. Arduino Uno (Atmega328 - в сборе)

4. Прототип платы (универсальная двухсторонняя прототипная печатная плата Penta Angel (7x9 см))

5. Акрил для рассеивания светодиодов (литой акриловый лист, прозрачный, размер 12 x 12 x 0,118 дюйма)

6. Источник питания (драйвер блока питания переключателя Aiposen 110/220 В - 12 В постоянного тока 30 А, 360 Вт)

7. Понижающий преобразователь для Arduino (Понижающий преобразователь постоянного тока в постоянный ток RioRand LM2596 1,23–30 В)

8. Понижающий преобразователь для светодиодов и датчиков (DROK Mini Electric Buck Voltage Converter 15A)

9. 120 ИК-датчиков (модуль инфракрасного датчика объезда препятствий)

10. Пять 16-канальных мультиплексоров (аналоговый / цифровой MUX Breakout - CD74HC4067)

11. Шесть 8-канальных мультиплексоров (Multiplexer Breakout - 8-канальный (74HC4051))

12. Пять двухканальных мультиплексоров (MAX4544CPA +)

13. Проволока для намотки проводов (Пайка для пайки, луженая медная проволока диаметром 0,25 мм, диаметр проволоки 305M, 30AWG, красный)

14. Монтажный провод (сплошной сердечник, 22 AWG).

15. Заголовки штифтов (Gikfun 1 x 40 штифтов 2,54 мм, однорядный разъединительный штыревой разъем)

16. Пять MIDI-разъемов (MIDI-разъем для макетных плат (5-контактный DIN))

17. Десять резисторов 220 Ом для разъемов MIDI.

18. Прокладки стойки для крепления электроники к куполу (Шестигранная втулка стойки M3 с наружной резьбой x M3 с внутренней резьбой)

19. Резьбовые переходники для крепления стоек к дереву (резьбовая вставка E-Z Lok, латунь, резьба для ножа)

20. Эпоксидная смола или суперклей Gorilla.

21. Изолента

22. Припой

Инструменты:

1. Паяльная станция

2. Электродрель

3. Циркулярная пила

4. Орбитальная шлифовальная машина

5. Лобзиковая пила

6. Торцовочная пила.

7. Транспортир

8. 3D-принтер.

9. Кусачки.

10. Инструмент для намотки проволоки.

11. Лазерный резак для резки светодиодных пластин (опция).

12. Shopbot с ЧПУ для основания купола (опция)

Шаг 2: проектирование геодезического купола

Проектирование геодезического купола
Проектирование геодезического купола
Проектирование геодезического купола
Проектирование геодезического купола

Как я уже упоминал во вступлении, есть несколько онлайн-источников для создания собственного геодезического купола. На этих сайтах есть калькуляторы купола, которые определяют длину каждой стороны (т. Е. Стойки) и количество разъемов, необходимых для любого типа купола, который вы хотите построить. Сложность геодезического купола (то есть плотность треугольников) определяется его классом (1V, 2V, 3V и т. Д.), Причем более высокая сложность становится лучшим приближением идеальной сферической поверхности. Чтобы построить свой собственный купол, вы должны сначала выбрать диаметр и класс купола.

Я использовал сайт под названием Domerama, чтобы помочь мне спроектировать купол 4V, который был усечен до 5/12 сферы с радиусом 40 см. Для этого типа купола существует шесть распорок разной длины:

30 X «A» - 8,9 см

30 X «B» - 10,4 см

50 X «C» - 12,4 см

40 X «D» - 12,5 см

20 X «E» - 13,0 см

20 X «F» - 13,2 см

Это в общей сложности 190 стоек, которые в сумме составляют 2223 см (73 фута) материала. Я использовал брус сосны размером 1x3 (3/4 дюйма × 2-1 / 2 дюйма) для распорок этого купола. Для соединения стоек я спроектировал и распечатал на 3D-принтере соединители с помощью Autocad. Файлы STL доступны для загрузки в конце этого шага. Количество разъемов для купольной камеры 4V 5/12:

20 X 4-коннектор

6 X 5-коннектор

45 X 6-коннектор

На следующем этапе я опишу, как этот купол построен с использованием деревянных распорок и 3D-печатных соединителей, которые я спроектировал.

Шаг 3: Изготовление купола с распорками и соединителями

Строительство купола с подкосами и соединителями
Строительство купола с подкосами и соединителями
Строительство купола с подкосами и соединителями
Строительство купола с подкосами и соединителями
Строительство купола с подкосами и соединителями
Строительство купола с подкосами и соединителями
Строительство купола с подкосами и соединителями
Строительство купола с подкосами и соединителями

Используя расчеты Domerama для купола 4V 5/12, я разрезал распорки с помощью циркулярной пилы. 190 стоек были помечены и помещены в коробку после разрезания. 71 разъем (20 четырехразъемных, 6 пятиконнекторных и 45 шестиконтактных) были напечатаны на 3D-принтере с помощью Makerbot. Деревянные распорки вставлялись в соединители согласно схеме, созданной компанией Domerama. Я начал строительство сверху и двинулся радиально наружу.

После того, как все стойки были соединены, я снимал по одной стойке за раз и добавлял эпоксидную смолу на дерево и соединитель. Разъемы были спроектированы таким образом, чтобы иметь возможность гибкости в том, как они соединяют конструкции, поэтому было важно проверить симметрию купола перед добавлением какой-либо эпоксидной смолы.

Шаг 4: Лазерная резка и установка опорных пластин

Лазерная резка и установка опорных пластин
Лазерная резка и установка опорных пластин
Лазерная резка и установка опорных пластин
Лазерная резка и установка опорных пластин
Лазерная резка и установка опорных пластин
Лазерная резка и установка опорных пластин
Лазерная резка и установка опорных пластин
Лазерная резка и установка опорных пластин

Теперь, когда каркас купола построен, пора вырезать треугольные опорные плиты. Эти опорные плиты прикреплены к нижней части стоек и используются для крепления светодиодов к куполу. Сначала я вырезал опорные плиты из фанеры толщиной 5 мм (3/16 дюйма), измерив пять разных треугольников на куполе: AAB (30 треугольников), BCC (25 треугольников), DDE (20 треугольников), CDF (40 треугольников).) и EEE (5 треугольников). Размеры каждой стороны и форма треугольников были определены с помощью калькулятора купола (Domerama) и некоторой геометрии. Вырезав тестовые опорные плиты лобзиком, я нарисовал треугольник с помощью Coral Draw и вырезал оставшиеся опорные плиты лазерным резаком (намного быстрее!). Если у вас нет доступа к лазерному резаку, вы можете нарисовать опорные плиты на фанере с помощью линейки и транспортира и вырезать их все лобзиком. После того, как опорные плиты вырезаны, купол переворачивают, и пластины приклеиваются к куполу с помощью столярного клея.

Шаг 5: Обзор электроники

Обзор электроники
Обзор электроники

На рисунке выше показана схема электроники купола. Arduino Uno используется для записи и чтения сигналов купола. Чтобы осветить купол, светодиодная лента RGB проходит по куполу так, чтобы светодиод располагался в каждом из 120 треугольников. Для получения информации о том, как работает светодиодная лента, ознакомьтесь с этой инструкцией. К каждому светодиоду можно обращаться отдельно с помощью Arduino, который выдает последовательные данные и тактовый сигнал для полосы (см. Выводы A0 и A1 на схеме). С помощью только полосы и этих двух сигналов вы можете получить потрясающий световой купол. Есть и другие способы записи сигналов для большого количества светодиодов от Arduino, такие как Charlieplexing и регистры сдвига.

Чтобы взаимодействовать с куполом, я установил ИК-датчик над каждым светодиодом. Эти датчики используются для обнаружения, когда чья-то рука приближается к треугольнику на куполе. Поскольку каждый треугольник на куполе имеет свой собственный ИК-датчик, а треугольников 120, вам придется выполнить какое-то мультиплексирование перед Arduino. Я решил использовать пять 24-канальных мультиплексоров (MUX) для 120 датчиков на куполе. Вот инструкция по мультиплексированию, если вы не знакомы. Для 24-канального мультиплексора требуется пять управляющих сигналов. Я выбрал контакты 8-12 на Arduino, чтобы можно было манипулировать портами (см. Шаг 10 для получения дополнительной информации). Вывод плат MUX считывается с помощью контактов 3-7.

Я также включил пять MIDI-выходов на купол, чтобы он мог воспроизводить звук (шаг 11). Другими словами, пять человек могут играть на куполе одновременно, и каждый выход воспроизводит свой звук. На Arduino есть только один вывод TX, поэтому пять MIDI-сигналов требуют демультиплексирования. Поскольку выходной сигнал MIDI формируется в другое время, чем показание ИК-датчика, я использовал те же управляющие сигналы.

После того, как все входы ИК-датчика считываются в Arduino, купол может загореться и воспроизводить звуки, как бы вы ни запрограммировали Arduino. У меня есть несколько примеров в Шаге 14 этого руководства.

Шаг 6: Установка светодиодов на купол

Установка светодиодов на купол
Установка светодиодов на купол
Установка светодиодов на купол
Установка светодиодов на купол
Установка светодиодов на купол
Установка светодиодов на купол

Поскольку купол такой большой, светодиодную ленту необходимо разрезать, чтобы разместить по одному светодиоду на каждом треугольнике. Каждый светодиод приклеен на треугольник с помощью суперклея. По обе стороны от светодиода просверливаются отверстия в опорной плите для кабелей, которые будут проходить через купол. Затем я припаял соединительный провод к каждому контакту светодиода (5 В, земля, часы, сигнал) и пропустил провода через опорную пластину. Эти провода обрезаны, чтобы они были достаточно длинными, чтобы добраться до следующего светодиода на куполе. Провода протягиваются к следующему светодиоду, и процесс продолжается. Я подключил светодиоды в конфигурации, которая минимизирует количество необходимых проводов, но при этом имеет смысл адресовать светодиоды с помощью Arduino позже. Купол меньшего размера избавит от необходимости разрезать полоску и сэкономит много времени на пайку. Другой вариант - использовать отдельные светодиоды RGB со сдвиговыми регистрами.

Последовательная связь с полосой достигается с помощью двух выводов (вывод данных и вывод синхронизации) от Arduino. Другими словами, данные для освещения купола передаются от одного светодиода к следующему, когда они выходят из вывода данных. Вот пример кода, измененного с этого форума Arduino:

// Увеличиваем весь купол и уменьшаем интенсивность одного цвета

#define numLeds 120 // Количество светодиодов // ВЫХОДНЫЕ КОНТАКТЫ // int clockPin = A1; // определяем вывод часов int dataPin = A0; // определение вывода данных // ПЕРЕМЕННЫЕ // int red [numLeds]; // Инициализируем массив для светодиодной ленты int green [numLeds]; // Инициализируем массив для светодиодной ленты int blue [numLeds]; // Инициализировать массив для светодиодной ленты // ПОСТОЯННЫЙ двойной масштаб A = {0, 0,1, 0,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8, 0,9, 1, 0,9, 0,8, 0,7, 0,6, 0,5, 0,4, 0,3, 0,2, 0,1}; // доля яркости светодиодов void setup () {pinMode (clockPin, OUTPUT); pinMode (dataPin, ВЫХОД); memset (красный, 0, numLeds); memset (зеленый, 0, numLeds); memset (синий, 0, numLeds); } void updatestring (int redA [numLeds], int greenA [numLeds], int blueA [numLeds]) {for (int i = 0; i <numLeds; i ++) {shiftOut (dataPin, clockPin, MSBFIRST, redA ); shiftOut (dataPin, clockPin, MSBFIRST, greenA ); shiftOut (dataPin, clockPin, MSBFIRST, blueA ); }} void loop () {for (int p = 0; p <20; p ++) // цикл для увеличения интенсивности света купола {double scale = scaleA [p]; задержка (20); for (int i = 0; i <numLeds; i ++) // цикл по всем светодиодам {red = 255 * scale; зеленый = 80 * масштаб; синий = 0; } updatestring (красный, зеленый, синий); // обновляем светодиодную ленту}}

Шаг 7. Проектирование и реализация крепления датчика

Конструкция и реализация крепления датчика
Конструкция и реализация крепления датчика
Конструкция и реализация крепления датчика
Конструкция и реализация крепления датчика
Конструкция и реализация крепления датчика
Конструкция и реализация крепления датчика

Решил использовать для купола ИК-датчики. Эти датчики имеют ИК-светодиод и приемник. Когда объект попадает перед датчиком, некоторое ИК-излучение от ИК-светодиода отражается в сторону приемника. Я начал этот проект с создания собственных ИК-сенсоров, основанных на инструкциях Ричардувины. Вся пайка заняла слишком много времени, поэтому я купил на eBay 120 ИК-датчиков, каждый из которых имеет цифровой выход. Порог датчика устанавливается с помощью потенциометра на плате, так что выход будет высоким только тогда, когда рука находится рядом с этим треугольником.

Каждый треугольник состоит из фанерной опорной пластины светодиода, листа рассеивающего акрила, установленного примерно на 2,5 см над светодиодной пластиной, и ИК-датчика. Датчик для каждого треугольника был установлен на лист тонкой фанеры в форме пятиугольника или шестиугольника в зависимости от положения на куполе (см. Рисунок выше). Я просверлил отверстия в основании ИК-датчика, чтобы установить ИК-датчики, а затем соединил заземление и контакты 5 В с проводом для намотки проводов и инструментом для намотки проводов (красный и черный провода). После подключения заземления и 5 В я намотал длинный провод на каждый выход (желтый), заземление и 5 В, чтобы пройти через купол.

Затем шестигранные или пятиугольные крепления ИК-датчика были прикреплены эпоксидной смолой к куполу прямо над разъемами, напечатанными на 3D-принтере, чтобы провод мог проходить через купол. Имея датчики над разъемами, я также смог получить доступ и настроить потенциометры на ИК-датчиках, которые контролируют чувствительность датчиков. На следующем шаге я опишу, как выходы ИК-датчиков подключаются к мультиплексорам и считываются в Arduino.

Шаг 8: выходной сигнал датчика мультиплексирования

Выход датчика мультиплексирования
Выход датчика мультиплексирования
Выход датчика мультиплексирования
Выход датчика мультиплексирования
Выход датчика мультиплексирования
Выход датчика мультиплексирования

Поскольку Arduino Uno имеет только 14 цифровых входов / выходов и 6 аналоговых входных контактов, а также необходимо считывать 120 сигналов датчиков, купольной камере требуются мультиплексоры для считывания всех сигналов. Я решил сконструировать пять 24-канальных мультиплексоров, каждый из которых считывает данные с 24 ИК-датчиков (см. Обзорный рисунок электроники). 24-канальный мультиплексор состоит из 8-канальной коммутационной платы MUX, 16-канальной коммутационной платы MUX и 2-канального мультиплексора. Заголовки контактов были припаяны к каждой коммутационной плате, чтобы их можно было подключить к макетной плате. Затем с помощью инструмента для намотки проводов я подключил заземление, 5 В и контакты управляющего сигнала коммутационных плат MUX.

Для 24-канального мультиплексора требуется пять управляющих сигналов, которые я решил подключить к контактам 8–12 на Arduino. Все пять 24-канальных мультиплексоров получают одинаковые управляющие сигналы от Arduino, поэтому я подключил провод от контактов Arduino к 24-канальному мультиплексору. Цифровые выходы ИК-датчиков подключены к входным контактам 24-канального мультиплексора, чтобы их можно было последовательно считывать в Arduino. Поскольку на всех 120 выходах датчика есть пять отдельных контактов для считывания, полезно представить себе купол, разделенный на пять отдельных секций, состоящих из 24 треугольников (проверьте цвета купола на рисунке).

Используя манипуляции с портами Arduino, вы можете быстро увеличивать управляющие сигналы, отправляемые контактами 8-12 на мультиплексоры. Я прикрепил здесь пример кода для работы мультиплексоров:

int numChannel = 24;

// ВЫХОДЫ // int s0 = 8; // Управление мультиплексором 0 - PORTbD int s1 = 9; // Управление мультиплексором 1 - PORTb int s2 = 10; // Управление мультиплексором 2 - PORTb int s3 = 11; // Элемент управления мультиплексором 3 - PORTb int s4 = 12; // Управление мультиплексором 4 - ПОРТb // ВХОДЫ // int m0 = 3; // MUX input 0 int m1 = 4; // MUX input 1 int m2 = 5; // MUX input 2 int m3 = 6; // МУЛЬТИПЛЕКСОР input 3 int m4 = 7; // MUX input 4 // ПЕРЕМЕННЫЕ // int arr0r; // цифровое чтение из MUX0 int arr1r; // цифровое чтение из MUX1 int arr2r; // цифровое чтение из MUX2 int arr3r; // цифровое чтение из MUX3 int arr4r; // цифровое чтение из MUX4 void setup () {// поместите сюда свой установочный код, чтобы запустить его один раз: DDRB = B11111111; // устанавливает контакты с 8 по 13 Arduino в качестве входов pinMode (s0, OUTPUT); pinMode (s1, ВЫХОД); pinMode (s2, ВЫХОД); pinMode (s3, ВЫХОД); pinMode (s4, ВЫХОД); pinMode (m0, ВХОД); pinMode (m1, ВХОД); pinMode (m2, ВХОД); pinMode (m3, INPUT); pinMode (m4, ВХОД); } void loop () {// поместите сюда ваш основной код для повторного запуска: PORTB = B00000000; // Устанавливаем контрольные контакты для мультиплексора в низкий уровень для (int i = 0; i <numChannel; i ++) {// Цифровой вывод чтения MUX0 - MUX4 для ИК-датчика i // Если ИК-датчик - LO, игрок касается треугольника. arr0r = digitalRead (m0); // чтение с Mux 0, ИК-датчик i arr1r = digitalRead (m1); // чтение с Mux 1, ИК-датчик i arr2r = digitalRead (m2); // чтение с Mux 2, ИК-датчик i arr3r = digitalRead (m3); // чтение с Mux 3, ИК-датчик i arr4r = digitalRead (m4); // чтение с Mux 4, ИК-датчик i // ДЕЛАЙТЕ ЧТО-ТО С ВХОДАМИ MUX ИЛИ СОХРАНИТЕ В МАССИВЕ ЗДЕСЬ // PORTB ++; // увеличиваем управляющие сигналы для MUX}}

Шаг 9: Рассеивание света с помощью акрила

Рассеивающий свет акрилом
Рассеивающий свет акрилом
Рассеивание света с помощью акрила
Рассеивание света с помощью акрила
Рассеивание света с помощью акрила
Рассеивание света с помощью акрила

Чтобы рассеять свет от светодиодов, я отшлифовал прозрачный акрил круговой шлифовальной машинкой. Шлифовальный станок перемещался по обеим сторонам акрила в виде восьмерки. Я обнаружил, что этот метод намного лучше, чем аэрозольная краска «матовое стекло».

После шлифовки и очистки акрила я использовал лазерный резак, чтобы вырезать треугольники, чтобы они подходили к светодиодам. Если акрил не трескается, можно разрезать акрил с помощью режущего инструмента для акрила или даже лобзика. Акрил удерживался поверх светодиодов фанерными прямоугольниками толщиной 5 мм, также вырезанными лазерным резаком. Эти небольшие доски были приклеены к распоркам купола, а акриловые треугольники были приклеены эпоксидной смолой.

Шаг 10: Создание музыки с помощью купола с помощью MIDI

Создание музыки с помощью купола с использованием MIDI
Создание музыки с помощью купола с использованием MIDI
Создание музыки с помощью купола с использованием MIDI
Создание музыки с помощью купола с использованием MIDI
Создание музыки с помощью купола с использованием MIDI
Создание музыки с помощью купола с использованием MIDI

Я хотел, чтобы купольная камера могла воспроизводить звук, поэтому я установил пять MIDI-каналов, по одному для каждого подмножества купола. Сначала вам нужно приобрести пять разъемов MIDI и подключить их, как показано на схеме (см. Это руководство от службы поддержки Arduino для получения дополнительной информации).

Поскольку на Arduino Uno есть только один вывод последовательного порта передачи (вывод 2 обозначен как вывод TX), вам необходимо демультиплексировать сигналы, отправляемые на пять разъемов MIDI. Я использовал те же управляющие сигналы (контакты 8-12), потому что MIDI-сигналы отправляются в другое время, чем когда ИК-датчики считываются в Arduino. Эти управляющие сигналы отправляются на 8-канальный демультиплексор, так что вы можете управлять тем, какое MIDI-гнездо будет принимать MIDI-сигнал, созданный Arduino. MIDI-сигналы были сгенерированы Arduino с потрясающей библиотекой MIDI-сигналов, созданной Франсуа Бестом. Вот пример кода для создания нескольких MIDI-выходов на разные MIDI-разъемы с помощью Arduino Uno:

#include // включить MIDI-библиотеку

#define numChannel 24 // Количество IR на треугольник #define numSections 5 // количество секций в куполе, количество 24-канального мультиплексора, количество разъемов MIDI // ВЫХОДЫ // int s0 = 8; // Управление мультиплексором 0 - PORTbD int s1 = 9; // Управление мультиплексором 1 - PORTb int s2 = 10; // Управление мультиплексором 2 - PORTb int s3 = 11; // Элемент управления мультиплексором 3 - PORTb int s4 = 12; // Управление мультиплексором 4 - ПОРТb // ВХОДЫ // int m0 = 3; // MUX input 0 int m1 = 4; // MUX input 1 int m2 = 5; // MUX input 2 int m3 = 6; // МУЛЬТИПЛЕКСОР input 3 int m4 = 7; // MUX input 4 // ПЕРЕМЕННЫЕ // int arr0r; // цифровое чтение из MUX0 int arr1r; // цифровое чтение из MUX1 int arr2r; // цифровое чтение из MUX2 int arr3r; // цифровое чтение из MUX3 int arr4r; // цифровое чтение из MUX4 int midArr [numSections]; // Сохраняем, была ли нажата нота одним из игроков int note2play [numSections]; // Сохранение ноты для воспроизведения при прикосновении к сенсору int notes [numChannel] = {60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83}; int pauseMidi = 4000; // время паузы между MIDI-сигналами MIDI_CREATE_DEFAULT_INSTANCE (); void setup () {// поместите сюда ваш установочный код для однократного запуска: DDRB = B11111111; // устанавливает контакты с 8 по 13 Arduino как входы MIDI.begin (MIDI_CHANNEL_OFF); pinMode (s0, ВЫХОД); pinMode (s1, ВЫХОД); pinMode (s2, ВЫХОД); pinMode (s3, ВЫХОД); pinMode (s4, ВЫХОД); pinMode (m0, ВХОД); pinMode (m1, ВХОД); pinMode (m2, ВХОД); pinMode (m3, INPUT); pinMode (m4, ВХОД); } void loop () {// поместите сюда ваш основной код для повторного запуска: PORTB = B00000000; // Устанавливаем контрольные контакты для мультиплексора в низкий уровень для (int i = 0; i <numChannel; i ++) {// Цифровой вывод чтения MUX0 - MUX4 для ИК-датчика i // Если ИК-датчик - LO, игрок касается треугольника. arr0r = digitalRead (m0); // чтение с Mux 0, ИК-датчик i arr1r = digitalRead (m1); // чтение с Mux 1, ИК-датчик i arr2r = digitalRead (m2); // чтение с Mux 2, ИК-датчик i arr3r = digitalRead (m3); // чтение с Mux 3, ИК-датчик i arr4r = digitalRead (m4); // чтение с мультиплексора 4, ИК-датчик i if (arr0r == 0) // Датчик в секции 0 был заблокирован {midArr [0] = 1; // Игрок 0 нажал на ноту, установите HI так, чтобы был выход MIDI для игрока 0 note2play [0] = notes ; // Примечание для проигрывателя 0} if (arr1r == 0) // Датчик в секции 1 был заблокирован {midArr [1] = 1; // Игрок 0 нажал на ноту, установите HI так, чтобы был выход MIDI для игрока 0 note2play [1] = notes ; // Примечание для проигрывателя 0} if (arr2r == 0) // Датчик в секции 2 был заблокирован {midArr [2] = 1; // Игрок 0 нажал на ноту, установите HI так, чтобы был выход MIDI для игрока 0 note2play [2] = notes ; // Примечание для проигрывания для игрока 0} if (arr3r == 0) // Датчик в разделе 3 был заблокирован {midArr [3] = 1; // Игрок 0 нажал на ноту, установите HI так, чтобы был выход MIDI для игрока 0 note2play [3] = notes ; // Примечание для проигрывателя 0} if (arr4r == 0) // Датчик в разделе 4 был заблокирован {midArr [4] = 1; // Игрок 0 нажал на ноту, установите HI так, чтобы был выход MIDI для игрока 0 note2play [4] = notes ; // Примечание для проигрывателя 0} PORTB ++; // увеличиваем управляющие сигналы для мультиплексора} updateMIDI (); } void updateMIDI () {PORTB = B00000000; // УСТАНАВЛИВАЕМ контрольные контакты для низкого уровня мультиплексора if (midArr [0] == 1) // Выход MIDI плеера 0 {MIDI.sendNoteOn (note2play [0], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [0], 127, 1); delayMicroseconds (pauseMidi); } PORTB ++; // увеличиваем мультиплексор if (midArr [1] == 1) // MIDI-выход плеера 1 {MIDI.sendNoteOn (note2play [1], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [1], 127, 1); delayMicroseconds (pauseMidi); } PORTB ++; // увеличиваем мультиплексор if (midArr [2] == 1) // MIDI-выход плеера 2 {MIDI.sendNoteOn (note2play [2], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [2], 127, 1); delayMicroseconds (pauseMidi); } PORTB ++; // увеличиваем мультиплексор if (midArr [3] == 1) // MIDI-выход плеера 3 {MIDI.sendNoteOn (note2play [3], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [3], 127, 1); delayMicroseconds (pauseMidi); } PORTB ++; // увеличиваем мультиплексор if (midArr [4] == 1) // MIDI-выход плеера 4 {MIDI.sendNoteOn (note2play [4], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [4], 127, 1); delayMicroseconds (pauseMidi); } midArr [0] = 0; midArr [1] = 0; midArr [2] = 0; midArr [3] = 0; midArr [4] = 0; }

Шаг 11: включение купола

Питание купола
Питание купола
Питание купола
Питание купола
Питание купола
Питание купола
Питание купола
Питание купола

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

Светодиодная лента: я использовал примерно 3,75 метра светодиодной ленты Ws2801, которая потребляет 6,4 Вт / метр. Это соответствует 24 Вт (3,75 * 6,4). Чтобы преобразовать это в амперы, используйте Power = current * volts (P = iV), где V - напряжение светодиодной ленты, в данном случае 5V. Следовательно, ток, потребляемый светодиодами, составляет 4,8 А (24 Вт / 5 В = 4,8 А).

ИК-датчики: каждый ИК-датчик потребляет около 25 мА, что в сумме составляет 3 А для 120 датчиков.

Arduino: 100 мА, 9 В

Мультиплексоры: имеется пять 24-канальных мультиплексоров, каждый из которых состоит из 16-канального мультиплексора и 8-канального мультиплексора. 8-канальный и 16-канальный мультиплексоры потребляют около 100 мА каждый. Следовательно, общая потребляемая мощность всех мультиплексоров составляет 1 А.

Суммируя эти компоненты, ожидается, что общая потребляемая мощность составит около 9 А. Светодиодная лента, ИК-датчики и мультиплексоры имеют входное напряжение 5 В, а Arduino - 9 В. Поэтому я выбрал источник питания 12 В 15 А, понижающий преобразователь 15 А для преобразования 12 В в 5 В и понижающий преобразователь 3 А для преобразования 12 В в 9 В для Arduino.

Шаг 12: Основание круглого купола

Основание круглого купола
Основание круглого купола
Основание круглого купола
Основание круглого купола
Основание круглого купола
Основание круглого купола

Купол опирается на круглый кусок дерева с вырезанным в середине пятиугольником для облегчения доступа к электронике. Чтобы создать эту круглую основу, с помощью фрезерного станка с ЧПУ по дереву был вырезан лист фанеры размером 4x6 дюймов. Для этого шага также можно использовать лобзик. После того, как основание было вырезано, к нему был прикреплен купол с помощью небольших деревянных брусков 2x3 дюйма.

Сверху на базу я прикрепил блок питания с помощью эпоксидной смолы, а преобразователи MUX и Buck с помощью прокладок для печатных плат. Прокладки крепились к фанере с помощью резьбовых переходников E-Z Lok.

Шаг 13: Основание купола Пентагона

База Пентагона Купол
База Пентагона Купол
База Пентагона Купол
База Пентагона Купол
База Пентагона Купол
База Пентагона Купол

В дополнение к круглому основанию я также построил пятиугольное основание для купола с зеркалом внизу. Эта основа и смотровое окошко также были сделаны из фанеры, вырезанной с помощью фрезерного станка с ЧПУ по дереву. Стороны пятиугольника сделаны из деревянных досок, на одной из которых имеется отверстие для разъемов. Деревянные планки крепятся к основанию пятиугольника с помощью металлических скоб и блочных соединений 2x3. Выключатель питания, разъемы MIDI и разъем USB прикреплены к передней панели, которую я создал с помощью лазерного резака. Основание пятиугольника целиком прикручено к круглому основанию, описанному в шаге 12.

Я установил окно в нижней части купола, чтобы любой мог заглянуть в купол и увидеть электронику. Зазеркалье изготовлено из акрила, вырезанного лазерным резаком, и приклеено эпоксидной смолой к круглому куску фанеры.

Шаг 14: Программирование купола

Возможности программирования купольной камеры безграничны. Каждый цикл кода принимает сигналы от ИК-датчиков, которые указывают на треугольники, которых кто-то коснулся. С помощью этой информации вы можете окрасить купол в любой цвет RGB и / или создать MIDI-сигнал. Вот несколько примеров программ, которые я написал для купола:

Раскрасьте купол: каждый треугольник циклически меняет четыре цвета при прикосновении. Когда цвета меняются, воспроизводится арпеджио. С помощью этой программы вы можете раскрасить купол тысячами различных способов.

Купольная музыка: купол окрашен в пять цветов, каждая секция соответствует разному MIDI-выходу. В программе вы можете выбрать, какие ноты воспроизводит каждый треугольник. Я решил начать с середины C в верхней части купола и увеличивал высоту звука по мере приближения треугольников к основанию. Поскольку имеется пять выходов, эта программа идеально подходит для одновременного использования купольной камеры несколькими людьми. Используя MIDI-инструмент или программное обеспечение MIDI, эти MIDI-сигналы можно заставить звучать как любой инструмент.

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

Понг: Почему бы не поиграть в понг на куполе? Мяч движется по куполу, пока не попадает в ракетку. Когда это происходит, вырабатывается MIDI-сигнал, указывающий, что ракетка попадает в мяч. Затем другой игрок должен направить ракетку по дну купола так, чтобы мяч попал обратно.

Шаг 15: фотографии готового купола

Фотографии завершенного купола
Фотографии завершенного купола
Фотографии завершенного купола
Фотографии завершенного купола
Фотографии завершенного купола
Фотографии завершенного купола
Фотографии завершенного купола
Фотографии завершенного купола
Конкурс Arduino 2016
Конкурс Arduino 2016
Конкурс Arduino 2016
Конкурс Arduino 2016

Главный приз конкурса Arduino Contest 2016

Конкурс ремиксов 2016
Конкурс ремиксов 2016
Конкурс ремиксов 2016
Конкурс ремиксов 2016

Второй приз конкурса ремиксов 2016

Конкурс Make it Glow 2016
Конкурс Make it Glow 2016
Конкурс Make it Glow 2016
Конкурс Make it Glow 2016

Второй приз конкурса Make it Glow 2016

Рекомендуемые: