Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:04
Это моя первая инструкция, так что терпите меня.
Я люблю сочинять музыку, и в живых выступлениях, например на концертах в гостиной, мне нравится, когда световые эффекты синхронизируются с тем, что я играю. Итак, я построил блок на базе Arduino, который заставляет светодиодную ленту загораться случайным цветом, когда я нажимаю ноту на своей MIDI-клавиатуре, и где я нажимаю ноту.
Запасы
- Ардуино Уно
- Ардуино protoshield
- MIDI-разъем
- 1N4148 диод
- Оптрон 6Н138
- резисторы: 2x 220 Ом, 1x 10кОм, 1x 470Ом
- Светодиодная лента WS2812B (60 светодиодов)
- некоторые оставшиеся провода
- термоусадочная трубка
- подходящий корпус для Arduino (я использую пластиковую распределительную коробку)
Вам также понадобится
- паяльник и припой
- MIDI-клавиатура и MIDI-кабель
Шаг 1: Электроника
Схема довольно проста. Он состоит из стандартного MIDI-входа (слева от Arduino) и подключения к светодиодной ленте (справа от Arduino). Поместите все детали на протощит, там много места. Обычно рекомендуется использовать внешний источник питания для питания светодиодной ленты, но я обнаружил, что, когда вы играете, только несколько светодиодов горят одновременно, поэтому было Нет проблем с использованием Arduino + 5V / GND в качестве выхода питания. (Старайтесь не нажимать все клавиши одновременно и с полной скоростью.;-)) Если вы решите использовать внешний источник питания, просто подключите его к контактам Arduino + 5V и GND. Некоторые рекомендуют вставить между этими двумя линиями конденсатор емкостью 100 мкФ (на схеме не показан).
Припаяйте детали к протощиту и подключите светодиодную ленту, как показано на схеме.
Шаг 2: Подключение светодиодной ленты
Важно подключить к цепи правый конец - входной конец - светодиодной ленты. Моя полоса имеет гнездовой разъем в качестве входа и имеет маленькие треугольники, направленные в противоположную сторону от входа. На выходе был штекер (чтобы можно было подключить его к другой полосе, которая нам не нужна), поэтому я отрезал его и припаял к трем кабелям, идущим от Arduino. Используйте термоусадочную трубку, чтобы привязать три кабеля к светодиодной ленте вместе и сделать их менее заметными.
Светодиодная лента, которую я использовал, имеет липкую ленту сзади, поэтому ее можно легко приклеить к задней части MIDI-клавиатуры.
Шаг 3: адаптация проекта к вашей клавиатуре
Возможно, вам придется адаптировать светодиодную ленту и код Arduino к вашей клавиатуре. У меня 76 клавиш, а длина полоски почти равна ширине клавиатуры. Если у вас, например, 61 ключ, может понадобиться полоска покороче. Светодиодную ленту можно разрезать между любыми двумя светодиодами. Просто убедитесь, что вы отрезаете правильную часть, у нее есть входной конец (с гнездовым соединителем) и выходной конец (с гнездовым соединителем), вам нужно сохранить входной конец. В коде измените #defines для
- NUMBER_OF_LEDS к количеству светодиодов, оставшихся в вашей полосе после отрезания конца,
- NUMBER_OF_KEYS к количеству клавиш на клавиатуре и
- MIN_KEY к номеру высоты тона MIDI самой нижней клавиши. Вы можете найти это в руководстве пользователя клавиатуры; или используйте инструмент, который отображает номер MIDI-ноты, например KMidiMon для Linux или Pocket MIDI для Windows или Mac; или попробуйте разные значения, пока устройство не будет реагировать на все клавиши на клавиатуре.
Шаг 4: Код Arduino
Код Arduino использует библиотеку MIDI (v4.3.1) от Forty Seven Effects и библиотеку Adafruit NeoPixel (v1.3.4) от Adafruit. Установите эти библиотеки с помощью Arduino IDE. Затем скомпилируйте код и загрузите его в Arduino без подключенного экрана (оптопара подключена к контакту RX, что препятствует загрузке). Включите Arduino через USB-кабель (я использую настенную USB-бородавку).
Если вы хотите изменить код по своему вкусу, вот краткий обзор того, как это работает: в каждом цикле считывается вход MIDI. Если было получено событие Note On или Note Off, вызываются функции MyHandleNoteOn или MyHandleNoteOff. Оба они вызывают функцию updateVelocityArray, которая хранит скорость (то есть, насколько сильно вы нажали клавишу) номера клавиши. Если скорость выше, чем было сохранено ранее, цвет соответствующего светодиода устанавливается на «текущий цвет». После обработки MIDI-событий вызывается функция updateLedArray. Это обновляет «текущий цвет» (красный, зеленый и синий значения которого изменяются независимо линейно, пока не будет достигнут нижний или верхний предел, и в этот момент скорость линейного изменения устанавливается на случайное число), медленно снижает скорость нажатия нажатых нот и обновляет значения цвета каждого светодиода, который должен изменить свой цвет (из-за нажатия новой ноты или уменьшения скорости). Функция showLedArray передает цвета в структуру Adafruit_NeoPixel, называемую «пикселями», и заставляет фактические светодиоды отображать цвета в структуре пикселей.
Шаг 5. Возможные улучшения…
Проект никогда не заканчивается. Всегда есть что-то, что можно сделать, чтобы улучшить его:
- Протощит содержит так мало деталей, что это действительно пустая трата; можно легко добиться того же эффекта с помощью Arduino Nano и печатной платы с 15х7 отверстиями, а также некоторых разъемов для штырей.
- Некоторые MIDI-сигналы теряются. Если это NoteOn, соответствующий светодиод не загорится; если это NoteOff, он не погаснет (поэтому я ввел снижение скорости, которое гарантирует, что светодиоды не будут гореть бесконечно). Я все еще пытаюсь выяснить причину. Возможно, это проблема времени, и MIDI.read () следует вызывать чаще.
- Некоторые MIDI-сигналы неверно считываются, т. Е. Загораются неправильные светодиоды. Может быть связано с вышеизложенным. Требуется некоторое расследование.
- Схема разработана для создания приятного визуального эффекта без особого взаимодействия с пользователем (кроме игры на клавиатуре). Однако я мог бы представить добавление потенциометра, который считывается (используя один из аналоговых входов Arduino), с помощью которого вы можете изменять максимальную скорость, с которой меняются цвета (в настоящее время # определяется как MAX_COLOR_CHANGE_SPEED = 20). Или измерьте среднее время между двумя событиями NoteOn и соответственно измените MAX_COLOR_CHANGE_SPEED - в медленных песнях цвет должен меняться медленнее.
Шаг 6: Готово
Включите Arduino через USB-кабель (я использую настенную USB-бородавку). Подключите MIDI-клавиатуру к MIDI-разъему и начните играть. Посмотри, как я играю легкую музыку (каламбур, какой бы плохой он ни был).
Рекомендуемые:
Как настроить OSMC с Hyperion на Raspberry Pi с помощью светодиодной ленты WS2812b: 8 шагов
Как настроить OSMC с Hyperion на Raspberry Pi с WS2812b Led Strip: Иногда я очень хорошо говорю по-английски, иногда нет … Сначала обо всем. Это мой первый инструктаж, а английский не мой родной язык, поэтому, пожалуйста, не будьте слишком строги со мной. Речь пойдет не о том, как построить каркас, это просто. Речь идет об установке
Контроллер светодиодной ленты: 8 шагов (с изображениями)
Контроллер светодиодных лент: в этом руководстве я расскажу вам, как использовать и управлять своими светодиодными лентами, создав интерфейс управления. Я получил много удовольствия от этих огней, и я уверен, что вы тоже. Если вам нравится эта инструкция, пожалуйста, убедитесь
Простые светодиодные ленты (обновите светодиодные ленты): 4 шага (с изображениями)
Простые светодиодные ленты (обновите свои светодиодные ленты): я использую светодиодные ленты довольно давно, и мне всегда нравилась их простота. Вы просто отрезаете кусок от роли, припаиваете к нему несколько проводов, подключаете блок питания и получаете источник света. С годами я нашел
Удивительный эффект светодиодной ленты: 4 шага
Удивительный эффект светодиодной ленты: Привет друг, нам нужны хорошие эффекты светодиодной ленты. Светодиодная лента украшает нашу комнату, и когда она дает эффекты, тогда комната выглядит потрясающе. Если ваша светодиодная лента светится просто, тогда этот блог для вас очень особенный, потому что в этом блоге вы узнаете, как сделать
Контроллер светодиодной ленты MIDI 5V для Spielatron или другого MIDI-синтезатора: 7 шагов (с изображениями)
Контроллер светодиодной ленты MIDI 5V для Spielatron или другого MIDI-синтезатора: этот контроллер мигает трехцветной светодиодной лентой в течение 50 мс на ноту: синий для G5 - D # 6, красный для E6 - B6 и зеленый для C7 - G7. Контроллер представляет собой MIDI-устройство ALSA, поэтому программное обеспечение MIDI может выводить данные на светодиоды одновременно с устройством MIDI-синтезатора