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

 



Музыкальная новогодняя гирлянда на 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




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

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

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