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
Автор поста оценил этот комментарий

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

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

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

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

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

не работает пишет  compilation terminated

exit status 1

ошибка компиляциидля платы Arduino/Genuino Uno

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

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

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

Видео

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

раскрыть ветку