цифровая электроника
вычислительная техника
встраиваемые системы

 

Музыкальная новогодняя гирлянда на Arduino своими руками

Автор: Mike(admin) от 18-12-2018, 08:55

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


Музыкальная новогодняя гирлянда на Arduino своими руками

Этот проект научит вас, как синхронизировать вашу новогоднюю гирлянду с музыкой. Вы можете также использовать ту же технику для управления сценическим освещением, чтобы добиться прекрасной синхронизации выступлений на сцене, что не всегда возможно при использовании ручных пультов управления освещением.


В данном примере мы будем использовать MIDI-сигналы, которые превратим в данные для управления освещением.


Studio One DAW

Выше приведен скриншот программного обеспечения Studio One DAW (ПО для работы с цифровым звуком), которое мы используем для этого проекта. MIDI-трек в программном обеспечении DAW синхронизирован с песней. Используем Hairless MIDI для организации моста последовательной передачи данных для отправки MIDI-сигналов на Arduino. При этом плату Arduino мы запрограммируем для включения и выключения определенных реле в соответствии с полученными нотами. Таким образом, программное обеспечение DAW будет управлять светом в соответствии с ритмом песни. Ниже показана блок-схема устройства управления музыкальной гирляндой на основе Arduino.


Музыкальная новогодняя гирлянда на Arduino своими руками

Схема подключения Arduino и управляющих реле показана ниже.


Музыкальная новогодняя гирлянда на Arduino своими руками

Огни подключены к реле на платах. Три регистра сдвига 74HC595 используются для управления реле. Три байта используются для хранения световых состояний в программе (вкл / выкл). Музыкальное программное обеспечение отправляет MIDI-данные, которые принимаются Arduino, и устанавливает соответствующий бит одного из трех байтов равным 0 или 1. Три байта сдвигаются из регистров и затем фиксируются, поэтому реле включаются. или выключаются. После того, как все байты отправлены и процесс завершен, они фиксируются, что предотвращает включение или выключение реле при смещении данных.


Итак, соберите схему, как показано на рисунке, и подключите внешний источник питания реле. Снимите перемычку, которая есть в большинстве релейных плат, так как не рекомендуется получать питание, необходимое для работы реле, с платы Arduino.


Теперь настроим программное обеспечение. Установите Studio One (или любое программное обеспечение DAW). Можно использовать Studio One 2 Free. Большинство функций работают в бесплатной версии. Установите loopMIDI для создания виртуального порта MIDI. Запустите loopMIDI и запустите виртуальный порт MIDI.


Настройте порт loopMIDI как новый инструмент в программном обеспечении DAW. Для этого в Studio One 2 нажмите Ctrl +, выберите External Devices – Add – New Instrument – Send to: loopMIDI port – OK – OK.


Studio One DAW

Откройте этот файл (https://github.com/AkshayJames/arduino-midi-lights/blob/master/carol%20of%20the%20bells%20lights.song) с песней "Carol of the Bells", щелкните область, показанную ниже, и выберите New Instrument.


Studio One DAW

Если вы не используете Studio One, вы можете начать новую песню, создать MIDI-трек и отправить его вывод на вновь созданный инструмент.


Теперь загрузите основной код в Arduino:



/*
* GND (вывод 8) на землю,
* Vcc (вывод 16) на 5V
* OE (вывод 13) на ground
* MR (вывод 10) на 5V
* 
* DS (pin 14) к цифровому выводу 9 платы Ardunio (синий провод)
* SH_CP (pin 11) к цифровому выводу 8 платы Ardunio (желтый провод)
* ST_CP (pin 12) к цифровому выводу 10 платы Ardunio (зеленый провод)
*/

#include"notes_bits.h"

// Вывод соединен с линией защелки (ST_CP) 74HC595
const int latchPin = 9;
// Вывод соединен с линией тактирования (SH_CP) 74HC595
const int clockPin = 8;
// Вывод соединен с линией данных (DS) 74HC595
const int dataPin = 10;

int pitch, cmd, velocity;
int light;
boolean state;

byte lightData1 = 0, lightData2 = 0, lightData3 = 0;

void setup() {
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);  
pinMode(clockPin, OUTPUT);
Serial.begin(38400);

}

void loop() {

// считываем MIDI-сигнал
if(Serial.available()>2) {
cmd = Serial.read();
pitch = Serial.read();
velocity = Serial.read();

// Свет зажигается согласно данным канала 1 (MIDI ch.1)
if(cmd==144) state=0;
else if(cmd==128) state=1;

// так, чтобы свет не менялся во время смещения новых данных
digitalWrite(latchPin, LOW);

light = getBit(pitch);
// установить соответствующий бит в lightData
if(light<8)
bitWrite(lightData1, light, state);
else if(light<16){
light-=8;
bitWrite(lightData2, light, state);
}
else {
light-=16;
bitWrite(lightData3, light, state);
}

Также создайте файл notes_bits.h. Скопируйте и вставьте приведенный ниже код.



int getBit(int p) {
switch(p) {
case 60: return 0; //note C3 (middle C)
case 62: return 1; //D3
case 64: return 2; //E3
case 65: return 3; //F3
case 67: return 4; //G3
case 69: return 5; //A3
case 71: return 6; //B3
case 72: return 7; //C4
case 74: return 8; //D4
case 76: return 9; //E4
case 77: return 10; //F4
case 79: return 11; //G4
case 81: return 12; //A4
case 83: return 13; //B4
case 84: return 14; //C5
case 86: return 15; //D5
case 88: return 16; //E5
case 89: return 17; //F5
case 91: return 18; //G5
case 93: return 19; //A5
case 95: return 20; //B5
case 96: return 21; //C6
case 98: return 22; //D6
case 100: return 23; //E6
}
}

Подключите гирлянду и питание к плате реле и подключите Arduino к вашему компьютеру. Затем откройте мост Hairless Serial to MIDI bridge и выберите порт Arduino в качестве последовательного порта, а порт MIDI в качестве loopMIDI. Затем перейдите File – Preferences – Set the Baud rate to 38400 – OK, чтобы установить скорость передачи данных в 38400 бод. Мы должны изменить скорость передачи, потому что нам нужно, чтобы она была выше, чем скорость передачи MIDI, которая составляет 31250 бод. Если скорость передачи ниже этой, у нас будет заметная задержка в индикации.


Затем отметьте опцию Serial – MIDI bridge. Вернитесь в Studio One и запустите песню. Вы должны увидеть мигание зеленого светодиода в мосте Hairless Serial to MIDI bridge. Если это так, то ваши реле также должны работать. Теперь вы увидите свое световое шоу в синхронизации с песней. Это может все выглядеть примерно так:



Или так:





© digitrode.ru


Теги: Arduino



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий