69

Как делалась светомузыка на Ардуино

Кому интересно вот пост со светомузыкой

http://pikabu.ru/story/rgb_svetomuzyika_arduino_3869046


Для светомузыки нам понадобиться 

1 Ардуинка

3-4 светодиода. Можно один 3х цветный, но цвета будут смешиваться и будет не красиво.

Аудио кабель 3,5,который не жалко порвать.

Да и все вроде.


Для начало рвем аудио кабель примерно как на фотке

Красный и Белый провод это Левый и Правый канал, а черный это общий (-). Красный и белый провод можно скрутить вместе в один провод.

Как делалась светомузыка на Ардуино Arduino, Длиннопост, Музыка, Видео

Теперь можно присоединить (+) светодиодов к 12,8,7,2 пинам, а минус можно в GND.

Теперь с аудио кабелем. После скручивание красного и белого, провода засуньте в разъем А0 а черный провод в GND, а потом в ноутбук или телефон. По нему будет передаваться аудио сигнал. Если не понятно ниже есть схема подключения.

Как делалась светомузыка на Ардуино Arduino, Длиннопост, Музыка, Видео

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



1. Зайдите в Диспетчер Realtek. (он в панели управление находится)

Как делалась светомузыка на Ардуино Arduino, Длиннопост, Музыка, Видео

2. В Дополнительных настройках включите режим многопоточности

Как делалась светомузыка на Ардуино Arduino, Длиннопост, Музыка, Видео

3. Качаем программу Virtual Audio Cabel. Эта программа соединяет несколько каналов в один. После установки у вас появится 3 программы. Audio Reapeter (MME), Audio Reapeter (KS), Control Panel. Для работы нам понадобится 1-я. Вот видео показывающее как пользоваться программой

Теперь вернемся к Арудуино. Для начало вам надо скачать библиотеку FFT. Она работает с преобразованием Фурье

https://github.com/TJC/arduino/tree/master/sketchbook/librar...


Ссылка на скетч будет в описании т.к Пикабу блочит.

Заливаем скетч. Врубаем музычку и наслаждаемся.

Если не понятно, рад помочь

2
Автор поста оценил этот комментарий

#include <fix_fft.h>


char im[128], data[128];


char data_a[14]; // Массив из 14 значений для аналоговых выводов


char data_d[14];


int i=0, val, vd=0; // Переменные для циклов


int vmin=30000; // Минимальное значение аудиосигнала


int vmax=0; // Максимальное значение аудиосигнала


const int DLeds[] = {1, 0, 2, 4, 7, 8, 12, 13, 3, 5, 6, 9, 10, 11}; // Номера выводов 6x-digital 6x-PWM



void setup()


{



for (i=0; i<14; i++)


{


pinMode(DLeds[i],OUTPUT);


digitalWrite(DLeds[i], LOW);


}



Serial.begin(9600);


}



void loop()


{


vmin = 30000;


vmax = 0;



for (i=0; i < 128; i++)


{


val = analogRead(AUDIOPIN);


data[i] = val; // усиливаем входящий сигнал


im[i] = 0;


}



fix_fft(data,im,7,0);



for (i=0; i< 128; i++)


{


data[i] = sqrt(data[i] * data[i] + im[i] * im[i]);


// получаем абсолютное значение от значения из массива, дальше имеем дело только с положительными числами


}



for (i=0; i<8; i++)


{


// усредняем соседние значения


data_a[i] = (data[i*16] + data[i*16 + 1] + data[i*16 + 2] + data[i*16 + 3] + data[i*16 + 4] + data[i*16 + 5] + data[i*16 + 6] + data[i*16 + 7]


+ data[i*16 + 8] + data[i*16 + 9] + data[i*16 + 10] + data[i*16 + 11] + data[i*16 + 12] + data[i*16 + 13] + data[i*16 + 14] + data[i*16 + 15]);


vmax = max(vmax, data_a[i]); // запоминаем максимальное значение


vmin = min(vmin, data_a[i]); // запоминаем минимальное значение


// масштабируем значения под аналоговый вывод


data_d[i] = map(data_a[i], 0, 20, 0, 1); //цифровые


// dataavg[pin] = map(data_a[pin], vmin+1, vmax, 255, 0); // аналоговые


// Выводим сигнал


digitalWrite(DLeds[i], data_d[i]);


// analogWrite(9, dataavg[pin]);


}


}

показать ответы
0
Автор поста оценил этот комментарий

Ясно, спасибо, надо будет попробовать. А вообще закал себе только что из китая схему MSGEQ7

Попробую вот по этому руководству сделать http://tronixstuff.com/2013/01/31/tutorial-arduino-and-the-m...

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

http://kazus.ru/shemes/showpage/0/1548/1.html

Может будет интересно

показать ответы
0
Автор поста оценил этот комментарий

Здравствуйте! Правильно ли я понимаю, что у вас в скетче используется много светодиодов, т.к вывод идёт на следующие пины 1, 0, 2, 4, 7, 8, 12, 13, 3, 5, 6, 9, 10, 11

А вот на схеме подключено всего 4? Или я что-то не так понял?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Да все правильно. Использую только 4.Но выход идет на первые 8 из массива DLeds[]// Если я не ошибаюсь то выходы просто разбиты по частотам.

показать ответы
Автор поста оценил этот комментарий
Заливаем скетч, врубаем музычку и наблюдаем сгоревшие светодиоды, ибо нет токоограничительных резисторов.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Нуууу, я включал без резисторов. У меня все нормально

показать ответы
0
Автор поста оценил этот комментарий

спасибо , разобрался , правда скетч не компилируется) может помодешь?:

 In file included from C:\Games\arduino-1.6.5-r2\libraries\FFT/fix_fft.h:6:0,


from sketch_dec22a.ino:1:


c:\games\arduino-1.6.5-r2\hardware\tools\avr\avr\include\math.h:426:15: error: expected unqualified-id before 'double'


extern double round (double __x) __ATTR_CONST__;


^


c:\games\arduino-1.6.5-r2\hardware\tools\avr\avr\include\math.h:426:15: error: expected ')' before 'double'


c:\games\arduino-1.6.5-r2\hardware\tools\avr\avr\include\math.h:426:15: error: expected ')' before 'double'


sketch_dec22a.ino: In function 'void loop()':


sketch_dec22a.ino:52:18: error: 'AUDIOPIN' was not declared in this scope


'AUDIOPIN' was not declared in this scope

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

напиши в самом начале файла

#define AUDIOPIN 0;

если не поможет вот еще скетч, тот же самый рабочий

https://yadi.sk/d/SjpwutW4mRKDP

показать ответы
0
Автор поста оценил этот комментарий

Все хорошо , но я что то не могу скачать библиотеку ( если у кого есть можете на яд загурзить или другой файло обменик

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Вот что получилось на Arduino UNO с указанным алгоритмом. ФОТО

https://vk.com/album47226798_239079833?z=photo47226798_456239041%2Falbum47226798_239079833

Видео

https://vk.com/video?z=video47226798_456239019%2Fpl_cat_updates

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Не плохо работает))

0
Автор поста оценил этот комментарий

а подскажите пж что делать если пишет(ошибка компиляции скетча для ардуино леонардо)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
у меня 1.0.6

Судя по тому что у многих эта ошибка. Помогала смена IDE

показать ответы
0
Автор поста оценил этот комментарий

Подскажи, а в машину если к выходу магнитолы подклчить работать будет?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

теоритетически должен работать

0
Автор поста оценил этот комментарий

Спасибо за оперативный ответ! Скачал 1.0.6, тоже не помогло, а вот на 0022 завелась))) Еще по скетчу вопросик есть... Как я понял, можно на все 14 выходов светодиоды вешать, но вот проблема работают под музыку только: 2, 4, 7, 8, 12, 13(digital), горит постоянно 1, а на pwm ногах ничего не срабатывает. Это нормально, или я что-то не так понял?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Да, это нормально. Музыка подается на цифровые пины. А пин 1 и пин 0 используется для Serial соединения. Но я не помню использовался он в коде. Ну если мигает значит да))) Это нормально

0
Автор поста оценил этот комментарий

Привет! У меня не компилируется почему-то, выдает ошибку error: 'fix_fft' was not declared in this scope. И подсвечивается строка 61:  fix_fft(data,im,7,0);. Как исправить?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Ошибка на Библиотеку. Установил?


https://yadi.sk/d/jZWcBNRsmQw5K вот библиотека лично которая у меня стоит

https://yadi.sk/d/SjpwutW4mRKDP вот сам файл который у меня стоит.


Если не заработает, я думаю версия IDE не та. у меня 1,06. У кого то была похожая проблема. Он скачал более старую версию

показать ответы
0
Автор поста оценил этот комментарий

Собрал, залил скетч. Долго конечно мучился, пришлось скачать ардуино IDE от 2010 года, только в нём всё собралось без ошибок... НО! Почему-то корректно не работает ((( Вместо цветомузыки редкие хаотичные всполохи.. Плата Arduino UNO на чипе ATmel 328P-AU

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Я написал работает "почти на любой музыыку". Как я заметил под ритмичную музыку чаще всего. Под ХАРД РОК так и будет хаотично. Она не идеальна. Фильтрация идет на математическом уровне. Если делать на на низко частотных и высоко частотных фильтрах то будет работать НАмного лучше

0
Автор поста оценил этот комментарий
Давай по порядку, собрал все как указано на ардуино нано( это ведь не играет роли верно?) поставил программу, скопировал библиотеку fft в место установки а ардуино ide в папку библиотек(папка fft) в итоге исправил несовместимость путем замены

#include "WProgram.h"


, на


#if defined(ARDUINO) && ARDUINO >= 100

#include "Arduino.h"

#else

#include "WProgram.h"

#endif

непосредственно в айлах самой библиотеке
 библиотека встала, но теперь новая беда


Arduino: 1.6.7 (Windows 7), Плата:"Arduino Nano, ATmega328"

C:\Program Files (x86)\Arduino\libraries\FFT\fix_fft.cpp:53:7: error: 'prog_int8_t' does not name a type

const prog_int8_t Sinewave[N_WAVE-N_WAVE/4] PROGMEM = {

^

In file included from C:\Program Files (x86)\Arduino\libraries\FFT\fix_fft.cpp:1:0:

C:\Program Files (x86)\Arduino\libraries\FFT\fix_fft.cpp: In function 'int fix_fft(char*, char*, int, int)':

C:\Program Files (x86)\Arduino\libraries\FFT\fix_fft.cpp:202:37: error: 'Sinewave' was not declared in this scope

wr = pgm_read_word_near(Sinewave + j+N_WAVE/4);

^

C:\Program Files (x86)\Arduino\libraries\FFT\fix_fft.cpp:212:37: error: 'Sinewave' was not declared in this scope

wi = -pgm_read_word_near(Sinewave + j);

^

exit status 1

Ошибка компиляции.


Вот тут вообще не понятно )

Подскажи а IDE какой версии установленна у тебя ? может в этом беда

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

у меня 1.0.6



https://yadi.sk/d/jZWcBNRsmQw5K вот библиотека лично которая у меня стоит


https://yadi.sk/d/SjpwutW4mRKDP вот сам файл который у меня стоит. Там вроде надо #define AUDIOPIN 0; добавить или не надо, я точно не помню.

0
Автор поста оценил этот комментарий

Новичок в деле ардуино и появилась загвоздка,

Arduino: 1.6.7 (Windows 7), Плата:"Arduino Nano, ATmega328"


In file included from C:\Users\ArcheDeviL\Documents\Arduino\libraries\spectrum2.ino\spectrum2.ino.ino:3:0:


C:\Program Files (x86)\Arduino\libraries\FFT/fix_fft.h:6:22: fatal error: WProgram.h: No such file or directory


#include <WProgram.h>


^


compilation terminated.


exit status 1

Ошибка компиляции.


Как бороться, подскажите пожалуйста

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

ты скачал и подключил библиотеку?

показать ответы
0
Автор поста оценил этот комментарий

Привет, извиняюсь что не по теме поста, только недавно узнал об Arduino. У меня вопрос, для управление Arduino с помощью радиосигнала подойдёт этот приёмник ( http://ru.aliexpress.com/item/1-Pcs-RF-transmitter-and-recei... )?

Там есть и передатчик но мне нужен только приёмник, для простых команд на сервоприводы. И если ты знаешь варианты по лучше, без особых заморочек, то буду тебе очень благодарен)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

я точно не знаю, но мне кажется надо 2 ардуино. Одна посылает а другая принимает

0
Автор поста оценил этот комментарий

огромное спасибо , помогло)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

не за что :)