Электрификация

Справочник домашнего мастера

Цветомузыка на ардуино

Подскажите Схему Светомузыки Для Светодиодной Ленты На 12 В

Прошло больше двух лет, как я собрал свою первую цветомузыку.
Та давно приелась и я редко включаю. По этому решил собрать еще одну. Но немного другую. За основу был взят китайский так называемый хрустальный шар. Это такое устройство с прозрачным куполом. Внутри схемка небольшая и 6 разноцветных 1 ватных светодиода, установленных на куске дюралюминия, болтаются на моторчике, хаотично перемигиваясь. Еще внутри 2 динамика и модуль, для воспроизведения музыки с карточки.Мой вариант даже не имел блютуза. Звук говно, а крутящиеся в одну сторону светики быстро надоедали. Бесполезная вообщем штука, включил пару раз и забыл.
Так вот на его основании и решил сделать полноценное ЦМУ. Но чтобы он работал на аккумляторах, без этого шнура в розетку. Типа поставил в середину стола и пусть моргает.
Первоначально хотел повторить китайскую конструкцию, чтобы основные каналы болтались на моторе, а по сторонам еще чтобы стояли неподвижные светики фонового канала. Даже начал делать.
Но потом мне захотелось внести хоть какое-то разнообразие в это однообразное кружение. Чтобы мотор вращал их то в одну, то в другую сторону. И чтобы не было резкого переключения, а была небольшая пауза. Даже открыл тему. В итоге подошла схема от Светы. Там можно регулировать как длительности рабочих ходов, так и паузу. Собрал, все четко заработало.
Но мне все не нравилось, что все каналы будут крутиться одинаково. Начал прорабатывать кинематику, чтобы каждый светик совершал свое движения. На картонке пробовал 3 и 4 канальные схемы.
При вращении моторчика — там пластиковый редуктор- светодиоды качались каждый по своей траектории. Решил остановиться на 3х канальной схеме, по опыту своей первой 6 канальной ЦМУ я понял, что много каналов не всегда хорошо. Непонятно кто как мигает… Но не нравилось, что ход светиков был короткий. От края до середины. А хотелось большей амплитуды, от края до края. В итоге и от этого варианта отказался. Какой придумал? Об этом чуть позже.
И так, решено было в этот раз построить все на обычных деталях, никаких микросхем. За основу были взяты схемы Сеньки. Он мне сильно помогал, закидывая в личку все новые и новые схемы.
Потом я вспомнил, что у меня еще с первой ЦМУ осталась куча разноцветных светиков 5050. Шесть цветов. Решил и их использовать,чтобы они при долгих паузах просто перемигивались.
У Сеньки нашлась подходящая схема. Трехканальный мультивибратор с плавным загоранием и тушением, то, что мне и нужно было. Решил, что если собрать их 2 штуки, то каждый сможет управлять тремя цветами.Правда это хорошо работало с одним светиком на канале, а мне надо было хотя бы 3 штуки на канал. Сенька предложил сдвоенные транзисторы на выходе этих мультиков. Все заработало, но исчезло плавное загорание. Ну да ладно, решили, что и так сойдет.
Много мучились со схемой управления. Я даже по этому поводу открыл тему «Строптивое реле». Ну никак не хотела эта схема надежно работать!
Сенька бедный что только не пробовал, и конденсаторы с диодами по питанию, и резистор по минусу, и линию задержки, и обратную связь… Ну никак не получалось добиться устойчивой работы. То работает нормально, то начинает реле колбасить… Утром хорошо все, а вечером колбаса. На следующий день все наоборот.
В итоге с помощью какой-то матери и ТШ удалось ему решить и эту проблему! Раз все модули были опробованы, можно было рисовать окончательную схему.
К тому времени уже с Китая пришли готовые платы по питанию и платка с микрофоном. Если с платами заряда и защиты вопросов не было, то с этим микрофонным усилком я уже с того раза помнил, что для нормальной чуйки нужен будет еще один усилитель. Не проблема, у Сеньки этих схем куча.)
Я даже с Китая закзал индикатор уровня заряда, но потом понял, что его мне просто сунуть некуда. Почти всю заднюю стенку занимали аккумляторы. Пришлось собрать на ЛМке, которую разместил отдельно, вторым этажом, а контрольные светики вывести назад. Их над аккумляторами можно было разместить. Туда и вывел светики с блока зарядки. А те, что стояли на плате, выдернул.
Аккумляторы нашлись в моем ноуте, которые давно с ним не дружили, никак не хотели заряжаться. Хотя оказались вполне годными.
И так, в итоге получилась вот такая схема.
Теперь нужно было как-то все это разместить на плату. Текстолит, который у меня был, имел ширину 90мм. А по длине в этот шар влезало 156мм. И то с косыми сторонами. Да с вырезом под аккумы. Да с дырками под крепление моторчика. Еще и под мотором оставалось максимум 5 мм зазора, то есть крупные детали туда не сунуть.
В итоге начал как пазл размещать элементы. На обилие перемычек решил плюнуть, лишь бы все влезло. Как ни странно все поместилось.
Вот так она выглядела живьем
А вот так уже собранная, с кучкой проводов.
Проект начинал принимать уже какие-то реальные очертания.
Вот наконец прикручены и все светодиоды. А их немало — 3 основных подвижных, 3 неподвижных фоновых и 18 штук по периметру — режим «космос».
Оставалось немного облагородить внешний вид.
Долго конечно пришлось с ним повозиться ( я все проблемы тут не стал описывать), но получилась весьма прикольная штучка. Конечно, особой избирательности по каналам тут нет, все таки ловит на микрофон, но мне кажется, не зря мы с Сенькой так долго мучались. )
Работает следующим образом.
Если убрать все крутилки в ноль, то работает режим «космос». Можно использовать как ночник. Емкостей аккумов хватит надолго. На потолке будут плавно меняться разные цветовые конструкции.Снимал на телефон, по этому качество конечно не то.
Если оставить ручку ФОН2 и дальше на нуле, то с помощью ручек громкости и основных цветов будут неподвижные каналы моргать на фоне космоса. Подходит для медляков, когда не хочется никакой движухи над головой.
Если покрутить ФОН 2 , то через несколько секунд реле сработает и космос отключится и включится фоновый канал, который выглядит вот так
И начнет крутиться мотор. Основные каналы начнут качаться. Кстати, так как без разницы, в какую сторону они будут качаться, и схема переключения направления вращения мотора от Светы тут не понадобился. Ну и в зависимости от положения крутилки ФОН1 они будут моргать или на постоянном фоне ( сомнительный режим), или фон будет гаснуть при определенном сигнале на каналах (нормальный режим, когда фон выступает неким 4-м каналом, заполняя своим рисунком мелкие паузы), ну или вообще будут моргать в темноте ( тоже прикольно, контрастные выстрелы цвета тоже дают некий драйв).
Вот несколько видео. Снимал на телефон, а звук шел из ноутбука. Какие частоты выдают его динамики я не знаю, но что получилось, то получилось.
Еще раз огромное спасибо Сеньке и всем форумчанам, которых я мучил последние месяцы своими проблемами. ))

Arduino.ru

Привет всем . С Наступившим.

Чего то заклинило, не знаю куда двигаться. Нашел подходящий мне скетч, хороший функционал. Чего мне не достает как всунуть туда многозвучнные аккорды. проверил- звук хорошо смешивается на динамиках через обычные сопротивления. 4 выхода достаточно для любых муз. фрагментов. Как переделать программу- я в стопоре (может новый год еще не выветрился) надо меня немного подтолкнуть!!!

/* Функция Qb_PLAY проигрывает музыку из символьных строк стандарта АВС аналогично оператору QBASIC PLAY http://ru.wikipedia.org/wiki/ABC_(%D0%BD%D0%BE%D1%82%D0%BD%D0%B0%D1%8F_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C) Горкавчук Константин. mailto:kgg0@bk.ru http://gorkavchukkg.narod.ru */ //Нота 0 1 2 3 4 5 6 7 8 9 10 11 //Нота C C#/D- D D#/E- E F F#/G- G G#/A- A A#/B- B int freq = { {65, 69, 73, 78, 82, 87, 92, 98, 104, 110, 117, 123}, //0 = Большая октава {131, 139, 147, 156, 165, 175, 185, 196, 208, 220, 233, 247}, //1 = Малая октава {262, 277, 294, 311, 330, 349, 370, 392, 415, 440, 466, 494}, //2 = 1-я октава {523, 554, 587, 622, 659, 698, 740, 784, 831, 880, 932, 988}, //3 = 2-я октава {1047, 1109, 1175,1245, 1319,1397, 1480, 1568, 1661,1760, 1865, 1976}, //4 = 3-я октава {2093, 2218, 2349,2489, 2637,2794, 2960, 3136, 3322,3520, 3729, 3951}, //5 = 4-я октава {4186, 4435, 4699,4978, 5274,5588, 5920, 6272, 6645,7040, 7459, 7902}, //6 = 5-я октава }; int SoundPin1=9; int SoundPin2=10; int SoundPin3=11; int SoundPin4=12; void setup() { pinMode(SoundPin1, OUTPUT); pinMode(SoundPin2, OUTPUT); pinMode(SoundPin3, OUTPUT); pinMode(SoundPin4, OUTPUT); Serial.begin(9600); } int extractNumber(int& myNumber, char Muz, int& curPosition) { int digitsNumber=0; int curDigit=0; myNumber=0; do { if ((Muz> 47) && (Muz<58)) // Коды ASCII цифр ‘0’ == 48 , «9′ == 57 { curDigit=Muz-48; digitsNumber++; myNumber=myNumber*10+curDigit; } else { return digitsNumber; } curPosition++; }while(Muz!= ‘\0’); return digitsNumber; } int pointsCount(char Muz, int& curPosition) { int pointsNumber=0; do { if (Muz== ‘.’) { pointsNumber++; } else { return pointsNumber; } curPosition++; }while(Muz!= ‘\0’); return pointsNumber; } void Qb_PLAY(char Muz) { static int generalOktava; int oktava; static int tempo=120; // Задание темпа или четвертных нот, которые исполняются в минуту. n от 32 до 255. По умолчанию 120 int Nota=0; int curPosition, curNota4; unsigned long currentNotaPauseDuration; unsigned long currentNotaDuration; unsigned long pauseDuration; int takt=240000/tempo; bool isNota; bool isPause; int pointsNum=0; float generalNotaMultipl=0.875; static float NotaLong; float curMultipl; float tempFlo; float curPause; unsigned long tempLong; int i=0; do { isNota=false; isPause=false; oktava=generalOktava; switch(Muz){ case ‘\0’:{ return; } break; case ‘C’:{ Nota=0; isNota=true; } break; case ‘D’:{ Nota=2; isNota=true; } break; case ‘E’:{ Nota=4; isNota=true; } break; case ‘F’:{ Nota=5; isNota=true; } break; case ‘G’:{ Nota=7; isNota=true; } break; case ‘A’:{ Nota=9; isNota=true; } break; case ‘B’:{ Nota=11; isNota=true; } break; case ‘N’:{// Nнота Играет определенную ноту (0 — 84) в диапазоне семи октав (0 — пауза). curPosition=i+1; if (extractNumber(curNota4, Muz, curPosition)){ i=curPosition-1; if (curNota4){ curNota4—; oktava=curNota4 / 12; Nota=curNota4 % 12; isNota=true; } else{ isPause=true; } } } break; case ‘O’:{ //Oоктава Задает текущую октаву (0 — 6). curPosition=i+1; if (extractNumber(oktava, Muz, curPosition)){ i=curPosition-1; generalOktava=oktava; } } break; case ‘>’:{ generalOktava++; } break; case ‘<‘:{ generalOktava—; } break; case ‘M’:{ switch(Muz){ case ‘N’:{ //MN Нормаль. Каждая нота звучит 7/8 времени, заданного в команде L generalNotaMultipl=0.875; // =7/8 i++; } break; case ‘L’:{ //ML Легато. Каждая нота звучит полный интервал времени, заданного в команде L generalNotaMultipl=1.0; i++; } break; case ‘S’:{ //MS Стаккато. Каждая нота звучит 3/4 времени, заданного в команде L generalNotaMultipl=0.75; // =3/4 i++; } break; case ‘F’:{ //MF Режим непосредственного исполнения. Т.е. на время проигрывания ноты программа приостанавливается. Используется по умолчанию i++; //Сдвигаем точку чтения и ничего не делаем. } break; case ‘B’:{ //MB проигрывние в буффер i++; //Сдвигаем точку чтения и ничего не делаем. } break; } } break; case ‘L’:{ //Lразмер Задает длительность каждой ноты (1 — 64). L1 — целая нота, L2 — 1/2 ноты и т.д. curPosition=i+1; if (extractNumber(curNota4, Muz, curPosition)){ i=curPosition-1; tempFlo=float(curNota4); NotaLong=1/tempFlo; } } break; case ‘T’:{ //Tтемп Задает темп исполнения в четвертях в минуту (32-255).По умолчанию 120 curPosition=i+1; if (extractNumber(tempo, Muz, curPosition)){ i=curPosition-1; takt=240000/tempo; // миллисекунд на 1 целую ноту. 240000= 60 сек * 1000 мсек/сек *4 четвертей в ноте } } break; case ‘P’:{ //Pпауза Задает паузу (1 — 64). P1 — пауза в целую ноту, P2 — пауза в 1/2 ноты и т.д. curPosition=i+1; if (extractNumber(curNota4, Muz, curPosition)){ tempFlo=float(curNota4); curPause=1/tempFlo; i=curPosition-1; isPause=true; } } break; case ‘ ‘:{ //Есть в некоторых текстах. Вероятно это пауза длительностью в текущую ноту curPause= NotaLong; isPause=true; } break; } if (isNota){ switch(Muz){ case ‘#’:{ // диез Nota++; i++; } break; case ‘+’:{ // диез Nota++; i++; } break; case ‘-‘:{ // бемоль Nota—; i++; } break; } curPosition=i+1; if (extractNumber(curNota4, Muz, curPosition)){ currentNotaDuration=takt/curNota4; i=curPosition-1; } } if (oktava<0) oktava=0; if (oktava>6) oktava=6; if (isNota || isPause){ curPosition=i+1; pointsNum=pointsCount(Muz, curPosition); if (pointsNum) i=curPosition-1; curMultipl=1.0; for (int j=1; j<=pointsNum; j++) { curMultipl= curMultipl * 1.5; } currentNotaPauseDuration=(takt*NotaLong); } if (isNota){ curMultipl=curMultipl*generalNotaMultipl; currentNotaDuration= (currentNotaPauseDuration*curMultipl); if (Nota<0) Nota=0; if (Nota>11) Nota=11; tempLong1= freq; tempLong1= freq; tempLong1= freq; tempLong1= freq; tone(SoundPin1,tempLong1,currentNotaDuration); tone(SoundPin2,tempLong2,currentNotaDuration); tone(SoundPin3,tempLong3,currentNotaDuration); tone(SoundPin4,tempLong4,currentNotaDuration); delay(currentNotaPauseDuration); } if (isPause){ pauseDuration=takt*curPause*curMultipl; delay(pauseDuration); } i++; } while (Muz!= ‘\0’); } void loop() { // Боже царя храни Qb_PLAY («MLT120L2O2EAEABEL64C#FG#BC#FG#BC#FG#BC#FG#BL2EC#G#D#G#<«); //Qb_PLAY («MNT60L4O3#<B>EG#C#<G#>AB7EAEAEBE.E»); //Qb_PLAY («BL2BL4BBL2BL4B>D<G.L8AL1BL4>CCC.L8CL4C<BBL8BBL4BAABL2A»); //Qb_PLAY («>DL4<BBL2BL4BBL2BL4B>D<G.L8AL1BL4>CCC.L8CL4C<BBL8BBL4>D»); //Qb_PLAY («DC<AL1G»); /* // Jingle Bells Qb_PLAY («MNT255L4O2DBAGL2D.L8DDL4DBAGL2E.L4EE>C<BAL1F+L4>DDC<A»); Qb_PLAY («L1BL4DBAGL2D.L8DDL4DBAGL2E.L4EE>C<BA>DDDDEDC<AL2G.P4L4B»); Qb_PLAY («BL2BL4BBL2BL4B>D<G.L8AL1BL4>CCC.L8CL4C<BBL8BBL4BAABL2A»); Qb_PLAY («>DL4<BBL2BL4BBL2BL4B>D<G.L8AL1BL4>CCC.L8CL4C<BBL8BBL4>D»); Qb_PLAY («DC<AL1G»); // KATIUSHA Qb_PLAY («MST255L2O2E.L4F+L2G.L4EGGF+EL2F+L4<BP4L2>F+.L4GL2A.L4F+»); Qb_PLAY («AAGF+L1EL2B>EDL4EDCC<BAL2BEP4>CL4<AL2B.L4GF+<B>GF+L1E»); Qb_PLAY («L2B>EDL4EDCC<BAL2BEP4>CL4<AL2B.L4GF+<B>GF+L1E»); // Bach 1 Qb_PLAY («MNT150L8O3AL16>C<AL8EL16AEL8CL16ECL4<AL16EA>C<ABABAG+»); Qb_PLAY («B>D<B>C<B>C<AL8>AL16>C<AL8EL16AEL8CL16ECL4<AL16>C<BL8>C»); Qb_PLAY («L16C<BL8>CAL16C.L32DL8C<BL16>ED+L8EL16ED+L8E>CL16<E.L32F»); Qb_PLAY («L8ED+L16<B>EGEF+EF+ED+F+AF+GF+GF+EGED+EAED+EBED+E>C<E»); Qb_PLAY («D+E>C<BABGF+EL8GL32F+GL16F+L4EL8AL16>C<AL8EL16AEL8CL16E»); Qb_PLAY («CL4<AL16EA>C<ABABAG+B>D<B>C<B>C<AL8>AL16>C<AL8EL16AEL8C»); Qb_PLAY («L16ECL4<AL16>C<BL8>CL16C<BL8>CAL16C.L32DL8C<BL16>ED+L8E»); Qb_PLAY («L16ED+L8E>CL16<E.L32FL8ED+L16<B>EGEF+EF+ED+F+AF+GF+GF+»); Qb_PLAY («EGED+EAED+EBED+E>C<ED+E>C<BABGF+EL8GL32F+GL16F+L4EL8E»); Qb_PLAY («L16GEL8<BL16>E<BL8GL16BGL4EL8AG+>DC+GL16FEL8FDFL16AFL8D»); Qb_PLAY («L16FDL8<BL16>D<BL4GL8>CL16ECDCDC<B>DFDEDEDCEC<B>CFC<B»); Qb_PLAY («>CGC<B>CAC<B>CAGFGEDCL8EL32DEL16DL4CL16EDL8EL16EDL8E>C»); Qb_PLAY («<EL64FL8EDL16DCL8DL16DCL8DBDL64EL8DCAL16>C<AGL4F.L16A»); Qb_PLAY («FEL4D.L16FDCL4<A+L16A+AA+AL4G+L8FEAG+>DL16C<B>C<A>CEL8A»); Qb_PLAY («EL16DC<B>CL4<AL8>EL16GEL8<BL16>E<BL8GL16BGL4EL8AG+>DC+»); Qb_PLAY («GL16FEL8FDFL16AFL8DL16FDL8<BL16>D<BL4GL8>CL16ECDCDC<B»); Qb_PLAY («>DFDEDEDCEC<B>CFC<B>CGC<B>CAC<B>CAGFGEDCL8EL32DEL16DL4C»); Qb_PLAY («L16EDL8EL16EDL8E>C<EL64FL8EDL16DCL8DL16DCL8DBDL64EL8D»); Qb_PLAY («CAL16>C<AGL4F.L16AFEL4D.L16FDCL4<A+L16A+AA+AL4G+L8FEA»); Qb_PLAY («G+>DL16C<B>C<A>CEL8AEL16DC<B>CL4<A»); */ /* //REM CIRCUS/BIG-TOP Qb_PLAY («MNT100L32O2EL4>EL16E.L32<E>E<E>E<EL4>EL16E.L32<E>E<E>E<E>EL16<D+DC+C<B»); Qb_PLAY («<F+>F+<F+>F+L16<FED+DC+C<BA+AG+GF+FED+L32>GL4>GL16GL32O1B>F>G<F>G<FL4>»); Qb_PLAY («GL16GL32O1B>F>G<F>GO1B>GFG+<B>AFA+<G>BF>CO1BO3C+<F>DO1GO3D+P32E<F>FP32»); Qb_PLAY («F+O1BO3GP32G+O1GO3AP32BO1CO4C.P32O1GO3B.P32GA+P32BO1GO3A+P32AO1CO3G+.»); Qb_PLAY («P32O1GO3G.P32GL16F+.L32O1GO3G.P32O1CO3A.P32O1GO3G+.P32GGP32G+O1GO3GP32»); Qb_PLAY («F+O1CO3F.P32O1GO3E.P32GL16D+.L32O1GO3E.P32BG.P32O1GO3FP32FGL16C+.L32O1G»); Qb_PLAY («O3D.P32BG.P32O1GO3FP32FGL16C+.L32O1GO3D.P32O1F>BP32>CO1EO3C+P32DO1DO3D+»); Qb_PLAY («P32EO1CO3FP32F+BGP32G+AAP32BGL16A.L32BG.P32O1CO4C.P32O1GO3B.P32GA+P32B»); Qb_PLAY («O1GO3A+P32AO1CO3G+.P32O1GO3G.P32GL16F+.L32O1GO3G.P32O1CO3A.P32O1GO3G+.»); Qb_PLAY («P32GGP32G+O1GO3GP32F+O1CO3F.P32O1GO3E.P32GL16D+.L32O1GO3E.P32BD+.P32»); Qb_PLAY («O1F+O3D+P32D+O1D+L16O3F+.L32O1F+>B.P32<EO3GP32AO1GO3GP32F+O1EL16O3E.»); Qb_PLAY («L32O1GL16O3G.L32BL16B.L32O1BO3BO1BO3BO1BL16O3BP32L32O1BL16O3BP32L32O1»); Qb_PLAY («BO3BO1A+O3BO1AO3BO1G+O3BO1GO3BO1F+O3BO1FO3BO1DP32CO4C.P32O1GO3B.P32»); Qb_PLAY («GA+P32BO1GO3A+P32AO1CO3G+.P32O1GO3G.P32GL16F+.L32O1GO3G.P32O1CO3A.P32O1»); Qb_PLAY («GO3G+.P32GGP32G+O1GO3GP32F+O1CO3F.P32O1GO3E.P32GL16D+.L32O1GO3E.P32BG.»); Qb_PLAY («P32O1GO3FP32FGL16C+.L32O1GO3D.P32BG.P32O1GO3FP32FGL16C+.L32O1GO3D.»); Qb_PLAY («P32O1F>BP32>CO1EO3C+P32DO1DO3D+P32EO1CO3FP32F+BGP32G+AAP32BGL16A.L32B»); Qb_PLAY («G.P32O1CO4C.P32O1GO3B.P32GA+P32BO1GO3A+P32AO1CO3G+.P32O1GO3G.P32GL16F+.»); /* Qb_PLAY («L32O1GO3G.P32O1CO3A.P32O1GO3G+.P32GGP32G+O1GO3GP32F+O1CO3F.P32O1GO3E.»); Qb_PLAY («P32GL16D+.L32O1GO3E.P32O1DO3D.P32O1F+O3DP32DO1DL16O3A.L32O1F+O3D.»); Qb_PLAY («P32O1C+O3D+.P32O1GO3D+P32D+O1C+L16O3A+.L32O1GP16DO3BP32>DO1GO4C+P32»); Qb_PLAY («CO1DO3B.P32<C>A.P32O1BL16O3G.L32O1G>G<G>G<G>G<F>F<E>E<D>D<CL16>C.L32G»); Qb_PLAY («>E<G>E<GL16>EL32O1G>GL16>E.L32O1CL16>C.L64<B>BL32>EO1C>C<C+>C+<D>DL64»); Qb_PLAY («<D+>D+L32>EO1E>E<FL16>FL32GB>F<B>F<BL16>FL64O1E>EL32BL16>F.L32O1DL16>»); Qb_PLAY («DL32G>DFDFDL16FL32<B>DL16F.L32O1AL16>A.L32>DFDFDL16FL32O1G>GL16>F.L32O1»); Qb_PLAY («F>F<G>GL64<F>FL32>FO1E>E<D>D<E>EL64<F>FL32>FO1D>D<CL16>C.L32G>E<G>E<G»); Qb_PLAY («L16>EL32<EGL16>E.L32GL16O1G.L32O3CECECL16EL32<G>CL16E.L32O1CL16>C.L32»); Qb_PLAY («G>E<G>E<GL16EL32G<GL16O3E.L32O1CL16>C.L64B<BL32O3EO1C>C<D>D<E>EL64<F»); Qb_PLAY («>FL32>EO1G>G<F+L16>F+.L32>CF+CF+CL16F+L32<A>CL16F+.L32O1CL16>CL32A>D+F+»); Qb_PLAY («<A>F+O1BL16O3F+L32<ACL16>F+.L32O1EL16>E.L32>CGCGO1CL16>C.L32>EGEGO1DL16»); Qb_PLAY («>D.L32>DGDGGL16O1G.L32O3FGFGO1CL16O3C.L32B<B<A>A<G>G<F>F<E>E<D>D<CL8>C.»); Qb_PLAY («P32L32GL8<G.P32L32CL16>C.L32G>E<G>E<GL16>EL32O1G>GL16>E.L32O1CL16>C.»); Qb_PLAY («L64<B>BL32>EO1C>C<C+>C+<D>DL64<D+>D+L32>EO1E>E<FL16>FL32GB>F<B>F<BL16»); Qb_PLAY («>FL64O1F>FL32BL16>F.L32O1DL16>DL32G>DFDFDL16FL32<B>DL16F.L32O1AL16>A.»); Qb_PLAY («L32>DFDFDL16FL32O1G>GL16>F.L32O1F>F<G>GL64<F>FL32>FO1E>E<D>D<E>EL64<F>»); Qb_PLAY («FL32>FO1D>D<CL16>C.L32G>E<G>E<GL16>EL32<EGL16>E.L32GL16O1G.L32O3CECEC»); Qb_PLAY («L16EL32<G>CL16E.L32O1CL16>C.L32G>E<G>E<GL16EL32G<GL16O3E.L32O1CL16>C.»); Qb_PLAY («L64B<BL32O3EO1C>C<D>D<E>EL64<F>FL32>EO1G>G<F+L16>F+.L32>CF+CF+CL16F+»); Qb_PLAY («L32<A>CL16F+.L32O1CL16>CL32A>D+F+<A>F+O1BL16O3F+L32<ACL16>F+.L32O1E»); Qb_PLAY («L16>E.L32>CGCGO1CL16>C.L32>EGEGO1DL16>D.L32>DGDGGL16O1G.L32O3FGFGO1CL16»); Qb_PLAY («O3C.L32B<B<A>A<G>G<F>F<E>E<D>D<CL16>C.L32>E>C<E>C<EL8>CP8L16O1FL32A>CL8»); Qb_PLAY («F.P16L16<E.P32DL32A>CL16F.P32L32<DP32CP32DP32EP32L16FL32A>CL4FL16<E.»); Qb_PLAY («P32DL32A>CL16F.P32L32<DP32CP32DP32EFL16A.L32CL8F.P32L32CL16F.L32FL16A+.»); Qb_PLAY («L32CL16F.L32FL16B.L32CL16F.L32FL16>C.L32<CL8A.P32L32CL16A.L32FL16>D.»); Qb_PLAY («L32<CL16F.L32FL16>E.L32<CL16A.L32C+L16>F.L32<C+L8G+.P32L32C+L16G+.L32C+»); Qb_PLAY («L16>D+.L32<C+L16G+.L32C+L16>C+.L32<C+L16G+.L32FL16>C.L32<CL8A.P32L32C»); Qb_PLAY («L16A.L32FL16>C.L32<CL16A.L32FL16>C.L32<CL16A.L32A+L16>D.L32<FL8A+.»); Qb_PLAY («P32L32FL16A+L32A+>DL16A+L32<FA+L16A+.L32>C+L16A+.L32<FL16A+L32C>CL16»); Qb_PLAY («A.L32<FL8A.P32L32FL16AL32C>CL16G.L32<FL16AL32C>CL16F.L32<FL16AL32A+>D»); Qb_PLAY («L16A.L32<FL8B.P32L32FL16BL32G>DL16G.L32<FL16BL32G>D+L16F+L32<F+GL16B.»); Qb_PLAY («L32CL16>AL32<EGL16A+.L32CL16>GL32<EGL16A+.L32CL16>E.L32<GL16A+.L32C»); Qb_PLAY («L16>DL32<GA+L16>C+L32FCL16A.L32<CL8F.P32L32CL16FL32FA+L16>A+.L32<CL16»); Qb_PLAY («AL32FBL16>BL32<CFL16AL32F>CL16>C.L32O1CL8A.L32CFL16AL32F>DL16>D.L32O1»); Qb_PLAY («CL16AL32F>EL16>EL32O1CFL16AL32C+>FL16>F.L32O1G+L8>C+.L32<FG+L16>C+L32»); Qb_PLAY («<C+>GL16>G.L32O1FL16BL32C+>G+L16>G+L32O1FG+L16BL32C>AL16>A.L32O1FL8A.»); Qb_PLAY («P32L32FL16AL32F>FL16>F.L32O1AL16>CL32<A>FL16>FL32O1FAL16>CL32BG+L16>»); Qb_PLAY («G+.L32O1GL8>D.P32L32<GL16>DL32BGL16>G.L32O1F+L16>DL32BFL16>F.L32O1GL16>»); Qb_PLAY («DL32<CO3DL16>D.L32O1AL16>CL32<CO3CL16>C.L32O1AL16>CL32<C>AL16>A.L32O1»); Qb_PLAY («AL16>CL32<C>FL16>F.L32O1AL16>CL32<G>GL16>G.L32O1FL16BL32G>DL16>D.L32O1»); Qb_PLAY («GL16BL32C>EL16>E.L32O1GL16>CL32<C>GL16>G.L32O1A+L16>CL32<F>FL16>F.L32O1»); Qb_PLAY («AL8>C.L32<FAL16>CL32<FAL16>C.L32A>A<A>A<AL16>A.L32<AL16>A.L32AL16O1A.»); Qb_PLAY («L32AABBC>C<C+>C+<D>D<D+>D+<E>E.P32<EL16>E.L32<C+L16>C+.L32AL16<A.L32»); Qb_PLAY («FL16>F.L32<E>E<D>D<C+>C+<D>D<E>E<C+>C+AL16<A.L32B>C+L16<BL32A»); Qb_PLAY («L8A.P32L32CL16>C.L32<C>C<C+>C+<D>D<E>E<F>F<F+>F+<G>G.»); Qb_PLAY («P32<GL16>G.L32<EL16>E.L32<CL8>CL16A+.P32F+L32A.P64L16G.»); Qb_PLAY («P32C.L32<A+L16>A+.L32<F+>F+<A>A<GL16>G.L32<CL16>C.L32C»); Qb_PLAY («<CC+C+DDD+D+EEFFF+F+GGG+L16G+.L32AL16A.L32A+L16A+.L32B»); Qb_PLAY («L16B.L32FL64O3CFL16AL32<CFCFCL16F.L32CL16F.L32FA+L16>A+»); Qb_PLAY («L32<CL16F.L32FBL16>BL32<CL16F.L32FL64>FAL16>CL32O1A>F»); Qb_PLAY («<A>F<AL16>F.L32<AL16>F.L32F>DL16>DL32O1AL16>F.L32F>EL16>E»); Qb_PLAY («L32O1AL16>FL32C+<C+L64O3G+>C+L16FL32O1G+>C+<G+>C+<G+L16>C+.»); Qb_PLAY («L32<G+L16>C+L32C+<C+O3D+L16>D+L32O1FL16>C+L32C+<C+O3C+»); Qb_PLAY («L16>C+L32O1FL16>C+L32F<FL64O3FAL16>CL32O1A>F<A>F<AL16>F.»); Qb_PLAY («L32<AL16>FL32F<FO3CL16>CL32O1AL16>FL32F<FO3CL16>CL32O1A»); Qb_PLAY («L16>F.L32A+L64>FA+L16>DL32O1A+>D<A+>D<A+L16>DL32<FA+L16>D.»); Qb_PLAY («L32A+>A+L16>A+L32O1FL16>D.L32A+>A+L16>A+L32O1FL16>C+L32C»); Qb_PLAY («<CL64O4CFL16AL32O1F>C<F>C<FL16>CL32<FAL16>CL32C<CO3GL16>G»); Qb_PLAY («L32O1FL16>CL32C<CO3FL16>FL32O1AL16>FL32C<CL64O4DFL16A»); Qb_PLAY («L32O1G>F<G>F<GL16>FL32<GBL16>FL32G<GO3GL16>GL32O1BL16>F»); Qb_PLAY («L32G<GO3F+L16>F+L32O1BL16>FL32C<CL64O4CEL16AL32O1A+L16>E»); Qb_PLAY («L32C<CO3GL16>GL32O1A+L16>EL32C<CL64O3GA+L16>EL32O2CL16E»); Qb_PLAY («L32C<CO3DL16>DL32O1A+O3C+L16>C+L32FL64<CFL16AL32O1A>F»); Qb_PLAY («<A>F<AL16>FL32<A>CL16FL32F<F>A+L16>A+L32<CL16FL32F<F>B»); Qb_PLAY («L16>BL32<CL16FL32F<FL64O3FAL16>CL32O1A>F<A>F<AL16>FL32<A»); Qb_PLAY («>CL16FL32F<FO3DL16>DL32O1AL16>FL32F<FO3EL16>EL32O1AL16>F»); Qb_PLAY («L32C+<C+L64O3G+>C+L16FL32O1G+>C+<G+>C+<G+L16>C+L32<G+»); Qb_PLAY («>C+L16FL32C+<C+O3GL16>GL32O1BL16>FL32C+<C+O3G+L16>G+L32O1B»); Qb_PLAY («L16>FL32C<CL64O4CFL16AL32O2CFCFCL16FL32<A>CL16F.L32A>F»); Qb_PLAY («L16>FL32O1A>CL16FL32A>FL16>FL32O1A>CL16FL32G+L64>FBL16>F»); Qb_PLAY («L32O1G+>F<G+>F<G+L16>FL32<G+BL16>FL32G+<G+O3EL16>EL32O1B»); Qb_PLAY («L16>FL32B<BO3DL16>DL32O1BL16>FL32C<CL64O3FAL16>DL32O2C»); Qb_PLAY («L16FL32C<CL64O3FAL16>CL32O2CL16FL32C<CO3AL16>FL32O1AL16>F»); Qb_PLAY («L32C<CO3FL16AL32O1AL16>FL32C<CL64O3CAL16>CL32O2CFCFCL16F»); Qb_PLAY («L32<A>CL16FL32C<CO3AL16>CL32O1GL16>EL32C<CO3GL16>CL32O1A+»); Qb_PLAY («L16>EL32<F>C>FL16>FL64O2C+>EL32>E<G>GO2C>FL16>FL64O2D»); Qb_PLAY («>EL32>E<G>GL64O1F>AL32>FL16>FP8L64O1F>CA>FL32>CL16FP8»); */ delay(10000); }

Arduino:Примеры/Проигрывание мелодии с помощью функции tone()

Проверка/Оформление/Редактирование: Мякишев Е.А.

Черновик

Проигрывание мелодии с помощью функции tone()

Данный пример демонтирует подключение динамика и воспроизведение простейшей мелодии. В данном примере используется два массива одинаковой длины для нот и длительности звучания нот. Обратите внимание, функция tone() использует один из аппаратных таймеров контроллера ATmega, поэтому после ее вызова она продолжает работать в фоновом режиме и поэтому после вызова функции tone() введена задержка delay(), чтобы следующая нота звучала только тогда, когда закончится воспроизведение текущей ноты.

Необходимые компоненты

  • Плата Arduino;
  • Резистор 150 Ом;
  • Переменный резистор 10 кОм;
  • Динамик;
  • Макетная плата;
  • Провода-перемычки;
  • Провода с крокодилами;

Монтажная схема

Соберите схему согласно монтажной схеме.

При подключении динамика к выводам Arduino необходимо использовать токоограничивающие резисторы. Каждый вывод Arduino может выдать ток не более 40 мА (0,04 А). Воспользовавшись законом Ома, вычислим минимальное сопротивление токоограничивающего резистора:

  • U = I * R;
  • R = U / I = 5 / 0,04 = 125 Ом;

Но т.к. динамик имеет также сопротивление(обмотка провода катушки электромагнита), для примера возьмем 8 Ом, то получим минимальное сопротивление токоограничивающего резистора равным:

  • R = 125 — 8 = 117 Ом;

Ближайший номинал резистора равен 150 Ом, его и будем использовать в нашей схеме.

Чтобы регулировать громкость звучания мелодии, воспользуемся переменным резистором на 10 кОм, включив его последовательно с подобранным токоограничивающим резистором. Обратите внимание, что мы используем только крайний и средний вывод потенциометра. Крайний вывод соединен с токоограничивающим резистором, а средний с одним из выводов динамика.

При повороте ручки потенциометра громкость воспроизведения будет изменяться вследствие изменения сопротивления цепи.

Код

В данном скетче используется дополнительный файл – pitches.h. Он содержит все значения, соответствующие стандартным нотам. Например, NOTE_C4 – это среднее «до», а NOTE_FS4 – это «фа-диез» и так далее. Этот нотный «алфавит» был написан Бреттом Хэгменом (Brett Hagman), и функция tone() основана именно на его работе.

Создайте новую вкладку с названием файла pitches.h и вставьте туда этот код.

У вас должны получится две вкладки, одна с кодом и вторая с нотами.

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

Для данного проект потребуется сама плата Arduino и минимум деталей: динамик, потенциометр (переменный резистор), сопротивление на 10кОм, батарейки АА, кнопка и транзистор КТ503А или любой другой маломощный n-p-n транзистор, например КТ315.

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

В платах Arduino для вывода звука на динамик используются цифровые или аналоговые выходы. Для воспроизведения мелодии необходимо подавать последовательно звуки определенной частоты и длительности. Для генерации звуков определенной частоты и длительности в Arduino используется функция tone(pin,frequency,duration);

Функция tone() генерирует на выводе pin прямоугольный сигнал частоты frequency с коэффициентом заполнения 50%. Третий (необязательный) параметр функции duration позволяет задавать длительность сигнала. Если длительность сигнала не указана, звук будет генерироваться до вызова функция noTone().

Обычно в примерах по генерации звуков на Arduino для воспроизведения звука используется пьезоэлектрический излучатель, но к сожалению громкость звука при этом недостаточна. Поэтому Мы для воспроизведения звука мы будем использовать маленький динамик.

В качестве контроллера Arduino я использовал Arduino Pro Mini, которая отличается малым размером и очень удобна при использовании на плате. Можно использовать любую плату Ардуино, например, подойдет наиболее популярная Arduino Uno. Соберем схему, показанную на рисунке 1 (схема соединений на рисунке 2).

Рис. 1. Принципиальная схема музыкальной шкатулки Рис. 2. Схема подключения компонентов к Arduino

Для написания скетча нам понадобятся значения частот для нот 1 и 2 октавы и обозначения для каждой ноты (см. таблицу 1).

Таблица 1. Таблица нот

Теперь подберем мелодию, которую будет воспроизводить музыкальная шкатулка. Желательно найти мелодию, записанную на нотном стане. Я выбрал простую мелодию – “В траве сидел кузнечик” (ноты на рисунке 3).

Рисунок 3. Мелодия “В траве сидел кузнечик” на нотном стане.

Теперь приступим к написанию скетча. Потенциометр в схеме (рисунок 1) присутствует для подбора нужного темпа мелодии. Темп может принимать значения от MIN_TEMPO до MAX_TEMPO. Для вычисления подобранного темпа используем функцию map(), которая преобразует значение на аналоговом входе A0 в значение подобранного темпа.
tempo=map(analogRead(PIN_POT),0,1024,MIN_TEMPO,MAX_TEMPO);

Занесем в массив melody последовательность воспроизводимых нот, список длительностей нот занесем в массив duration, при этом длительность целой ноты равна 32, половинной 16, и т.д. до 1/32 – длительность1. Данные с обозначением нот занесем в массив notes, а данные с частотами для соответствующих нот занесем в массив frequency. Паузу обозначим символом ‘*’.

В цикле loop() мы проверяем отжатие кнопки (открытие шкатулки). По отжатию кнопки начинается проигрывание мелодии понотно, вызывая процедуру playNote(), в которую передает обозначение текущей ноты и продолжительность. Процедура playNote() находит по обозначению ноты значение соответствующей частоты и вызывает для проигрывания ноты функцию tone(). Продолжительность звучания ноты – это базовая нотная длительность (32 – для целой, 16 – для полуноты, 8 – для четвертной и т.д.) умноженная на значение темпа произведения – temp. Значение temp устанавливается по значению потенциометра, и подбирается при отладке, в работе не меняется.

Для лучшего звучания музыкального отрезка после воспроизведения каждой ноты делаем небольшую паузу delay(beats*tempo+tempo). По нажатии кнопки при воспроизведении мелодии, воспроизведение прекращается. При нажатии клавиш обязательно использовать процедуру проверки на дребезг debounce(boolean last).

Запустим Arduino IDE. Создадим новый скетч и внесем в него содержимое листинга 1.

После загрузки скетча и настройки потенциометром скорости воспроизведения мелодии все упаковываем в шкатулку (рисунки 4, 5, 6) и дарим маме или любимой девушке.

Рис. 4. Собранная схема музыкальной шкатулки

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

Рис. 5. Сундучок – корпус музыкальной шкатулки Рис. 6. Устанавливаем схему музыкальной шкатулкив корпус

Скачать файлы проекта

Просмотров всего: 1 147, сегодня: 6

nadim24 ›
Блог ›
Цветомузыка Lumazoid на Arduino и WS2812B светодиодах

Решил повторить цветомузыку от Nootropic design USA и chipdip.ru
Пока едут светодиоды и arduino NANO — жду, а тем временем развел платку.

Плату развел под arduino NANO V3.0 ATmega328P


Первое видео снимал сам — первый день тестирования после сборки.

Скетч и библиотека БПФ — компилировать на версии arduino-1.6.8
Скетч
Библиотека

Исходник от авторов Nootropic design — Lumazoid
Страница авторов — lumazoid из Миннеаполиса USA

Работает с любыми светодиодами WS2812 / WS2812B, такими как NeoPixel и другими
Поддерживает 60, 120 или 180 светодиодных полос. (видео ниже показано 2m 120 светодиодной полосы)
8 различных шаблонов + случайный режим, который плавно переходит между шаблонами
3 разных цветовых режима с контролем параметров
Контроль чувствительности и яркости
Регулируемый частотный отклик, поэтому вы можете выбрать визуализацию всех частотных диапазонов или только басов и биений
Программируемый с Arduino

Технические подробности
Мощность
Плата Lumazoid требует источника питания 5 В постоянного тока (имеется в нашем магазине). Источник питания должен быть способен подавать ток 2А при использовании люмазоидов с 60 или 120 светодиодами (например, полоса 1 м или 2 м с 60 светодиодами на метр). Прошивка Lumazoid тщательно разработана для создания менее 2 А тока при использовании с 60 или 120 светодиодами. Если вы используете Lumazoid с полосой 180 LED, вам понадобится источник питания, который может обеспечить ток не менее 3A, но вы, вероятно, уже имеете такой источник питания, если у вас есть много светодиодов. В настоящее время мы продаем только блоки питания 2А.

Если вы разрабатываете и кодируете свои собственные визуализации для Lumazoid, убедитесь, что вы учитываете текущие требования к визуализации.

Совместимость с светодиодной лентой
Lumazoid предназначен для светодиодных полосок WS2812 или WS2812B. Они легко доступны у многих поставщиков (включая нас) и иногда называются «NeoPixel», который является брендом Adafruit для полос WS2812B. Иногда светодиодные полосы называются «WS2811», но имя WS2811 относится только к чипу драйвера, а не к интегрированной микросхеме + светодиод. Если у вас есть светодиодная полоса, которую кто-то назвал «WS2811», и у нее есть 3 провода (5V, земля и данные), тогда он должен работать.

Lumazoid НЕ работает с другими типами светодиодных полосок на основе различных технологий, таких как светодиоды APA102 и APA104 (например, полосы Adafruit «DotStar»). Lumazoid работает только с 3-проводными светодиодными полосками на основе технологии WS2812 или WS2812B.

ВАЖНО : Всегда подключайте светодиодную ленту перед подключением питания. Не подключайте светодиодную ленту к питающей плате.

Инструкции по использованию
Начальная настройка
Перед использованием Lumazoid вам может потребоваться настроить его для вашей длины светодиодной полосы и, при необходимости, настроить яркость. По умолчанию Lumazoid сконфигурирован для использования 120 светодиодных полосок (например, полоса 2 м с 60 светодиодами на метр) и установлен для максимальной яркости. Если у вас есть одинарная светодиодная длина или вы хотите уменьшить яркость, следуйте этим инструкциям.

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

Длина светодиодной полосы : удерживайте кнопку шаблона при подключении питания. Отобразится один, два или три красных светодиода. Использовал ручку параметров, чтобы выбрать конфигурацию светодиодной полосы в зависимости от количества красных светодиодов:

60 светодиодов
120 светодиодов
180 светодиодов
По завершении нажмите кнопку шаблона еще раз, и ваша конфигурация будет сохранена в памяти. Это будет запомнено, даже если питание отключено.

Регулировка громкости и чувствительности
Lumazoid лучше всего работает, если громкость вашего музыкального устройства установлена ​​на высокий уровень. Меньшим устройствам, таким как телефоны и планшеты, необходимо будет увеличить громкость до самого высокого уровня. Используйте регулятор чувствительности для регулировки чувствительности люмазоида. Для небольших устройств потребуется более высокая чувствительность. Музыкальное устройство, такое как компьютер, может вообще не нуждаться в высокой чувствительности. Просто экспериментируйте с устройством, чтобы Lumazoid отвечал на музыку так, как вам хочется.

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

Шаблоны: Люмазоид имеет различные шаблоны отображения для визуализации пиков аудиосигнала (высокой амплитуды), обнаруженных в музыке. Lumazoid похож на графический эквалайзер, который показывает силу разных полос частот, но Lumazoid отображает информацию гораздо более интересным способом. Существует 8 различных шаблонов для отображения звуковых пиков в музыке. Нажмите кнопку шаблона, чтобы просмотреть их. Белый светодиод указывает, какой шаблон выбран. 9-й шаблон — это «случайный» режим, который обозначается красным светодиодом. Этот режим изменяет шаблон случайным образом со случайным интервалом времени. 8 моделей:

Алгоритмы

Танцы плюс: пики звуковых сигналов испускаются из центра полосы и исчезают по мере приближения к концам. Скорость пика пропорциональна величине звукового сигнала этого пика.

Танцы минус: то же, что и Dance Party, но пики сигналов испускаются с одного конца.
Импульс: пики сигналов отображаются как яркие импульсы, которые поступают из центра полосы. Ширина импульса зависит от уровня сигнала.

Световая полоса: в пиках освещается вся полоса.

Цветные полоски: пики сигналов отображаются как цветные полосы, которые исчезают.

Цветные полоски 2: подобно цветные полоски, но каждая полоска сжимается и исчезает.

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

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

Цветовые схемы

Случайная двухцветная схема: выбраны два случайных цвета и только они используются для отображения пиков сигнала. Со временем будут выбраны новые цвета. Используйте param, чтобы настроить скорость изменения цветовой схемы. Если ручка потенциометра «параметры» в верхнем положении, цвета будут меняться часто и каждый пик сигнала будет иметь новый цвет. Рекомендую установить ручку в средину.

Радуга: все пики сигналов отображаются как один и тот же цвет (с небольшим количеством случайных вариаций) и этот цвет меняется как радуга с течением времени. Скорость изменения цвета устанавливается потенциометром param.

Цветные частоты: в этом режиме каждый пик сигнала окрашивается в зависимости от частотной полосы где он находится. Самая низкая полоса красного цвета, и дальше вверх по спектру. Есть 8 полос частот: красный, оранжевый, желтый, зеленый, голубой, синий, фиолетовый, белый. Этот цветовой режим наиболее интересен, когда частотная характеристика настроена на все полосы частот.

Диапазон частот: вы можете управлять тем диапазоном частот, на который откликается цветомузыка. Чтобы установить диапазон нажмите и удерживайте обе кнопки. Используйте ручку param, чтобы выбрать, сколько из восьми частотных диапазонов будет показываться. Если вы хотите выделить бас и ритм музыки, установите частотную характеристику только на самые низкие 2 или 3 полосы. Если вы хотите показать все частоты в музыке (например, вокал и более высокие инструменты), выберите все полосы частот.
Некоторые рекомендуемые настройки
Dance Party или Dancy Party 2, цветной режим = 1 (двухцветная схема), ручка параметра установлена ​​на полпути, частотная характеристика установлена ​​на более низкие 3 полосы частот. Это создает двухцветные схемы, которые меняются со временем.
Dance Party или Dancy Party 2, цветной режим = 3 (частотные цвета), частотная характеристика, включающая все диапазоны частот. Этот параметр позволяет вам реально визуализировать различные компоненты музыки. Бит будет красным / оранжевым, вокал голубой / синий / пурпурный и т. Д.
Режим случайного шаблона, цветной режим = 1, регулятор параметров установлен на самый высокий уровень. Каждый пик сигнала будет случайным цветом, который хорошо выглядит на множестве шаблонов.
Режим случайного шаблона, цветной режим = 2 (циклический режим радуги), регулятор параметров установлен на средний уровень. Все пики имеют тот же базовый цвет (с некоторой случайной вариацией), а базовый цвет смещается через радугу.
_______________________________
Дополнительно:
Уровень входного сигнал у визуализатора около 1,8В
конденсатор С2 Минусом к источнику звука, плюсом к Ардуино, т.к там на делителе +2.5в
Может кому будет будет полезно. Что бы Atmega328P нормально работал, вывод номер 21 (AREF) надо подключить через конденсатор 0,1 мкФ на землю.
Подключение микрофонного и линейно входа:
Микрофонный, он-же линейный вход на уcилителе TDA1308. Дальше через переменник и коммутируемый миниджек на усилитель мощности PAM8403 и через конденсаторную развязку дальше в схему. Усилки на Алиэкспресе копейки. В итоге имеем линейный вход (он-же микрофонный) и вход от любого источника с наушников. Миниджек дублируем для дальнейшего прохождения сигнала, например на акустический усилитель.

Изменить бэкграунд:
#define BACKGROUND ((uint32_t) 0x000006) //background color
Указать задержку схлопывания эффекта:
bandPeakDecay = 6, // peak decreases by 1 every bandPeakDecay frames. Larger value is slower decay

alexgyver — colormusic
МУЗЫКА для YouTube БЕЗ АВТОРСКИХ ПРАВ
Еще одна сборка — цветомузыки
ws2812b-neopixels — подключение
Lichtorgel на светодиодах ws2812
WS2812B+Mic.+ Arduino
Цветомузыка НЕОН | Визуализатор
Прошивка любого Hex-файла в Arduino при помощи штатного загрузчика (Bootloader)
136-gcUploader автоматический загрузчик HEX-файлов для Arduino

Как сделать светомузыку своими руками? Закатите новогоднюю вечеринку и поразите своих друзей удивительными музыкальными цветными огнями, которые зажигаются и меняют цвет в такт музыке. Эти огни – не что иное, как простые светодиодные RGB-ленты, подключенные к электронному мозгу – контроллеру Arduino.

Вы можете установить светодиодные ленты в любом месте в доме или даже на улице. Использовать цветомузыку можно не только во время вечеринок, но и при повседневном прослушивании музыки. Приклейте светодиодные ленты хоть к телевизору, хоть к дивану, к столу или стенам – куда захотите. Единственное условие – рядом должен присутствовать источник звука: аудио-сигнал, который будет подаваться на цветомузыкальную установку (ЦМУ) и обрабатываться устройством.

Как уже говорилось, для приема аудио сигнала, обработки и вывода его через цифровые выходы на светодиодные ленты, используется контроллер Arduino. Для питания платы Arduino и светодиодных лент, применяется источник питания 12 В. Устройство имеет входной и выходной аудио разъем. От входного разъема, сигнал поступает на контроллер Arduino и выходное гнездо, для подключения к нему наушников или динамиков. Проект может быть выполнен в течение двух часов (максимум трех) из легкодоступных компонентов. Вы очень удивитесь, увидев конечный результат проекта (фотографии не передают всей его красоты).

Вот короткое видео домашней цветомузыки в действии:

youtube
пожалуйста укажите корректную ссылку

Приступаем к реализации цветомузыки на Ардуино!

Шаг 1: Как это работает?

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

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

Когда такой сигнал зафиксирован, Arduino меняет цвет RGB-ленты на любой случайный. Следует отметить, что контроллер Arduino не управляет светодиодной лентой напрямую. Он отправляет сигналы на транзисторные ключи, которые и включают светодиоды. Причина заключается в том, что сигналы с выводов Arduino имеют напряжение 5 В, в то время как для работы светодиодных лент требуется 12 В.

Шаг 2: Компоненты и инструмент

Показать еще 6 изображений

Следующие компоненты и инструмент необходимы для осуществления этого проекта. Общая стоимость проекта составляет 30 долларов США. Эта сумма может меняться в зависимости от того, где вы приобретаете материалы. Длина светодиодной ленты зависит от ваших потребностей.

Компоненты для самодельной цветомузыки:

  • Контроллер Arduino Nano или UNO (или же любая другая аналогичная плата).
  • RGB светодиодная лента (длина на ваш выбор).
  • Три NPN-транзистора (TIP31C, TIP122 или любой аналогичный).
  • Два аудио разъема 3,5 мм.
  • Три резистора номиналом 1 кОм.
  • Два кабеля AUX (для подключения ЦМУ к аудиовыходу).
  • Один 12-вольтный блок питания (можно использовать аккумулятор).
  • Штыревые контакты для установки на плату.
  • Провода.
  • Подходящий корпус.
  • Текстолитовая печатная плата с готовыми отверстиями.

Инструмент:

  • Паяльник.
  • Паяльная проволока (припой).
  • Пистолет для термо-клея с клеевыми стержнями.
  • Дрель.
  • Кусачки, инструмент для зачистки проводов.
  • Плоскогубцы.

Шаг 3: Подготовительные работы

Подготовим корпус для установки в него компонентов. Сначала нужно выбрать тип корпуса и его размеры. Самый простой способ – использовать пластиковый контейнер для еды, так как с пластиком легко работать. Не рекомендуется использовать металлический корпус, так как его придется полностью изолировать во избежание короткого замыкания.

Чтобы просверлить отверстия, используйте дрель. Вам нужно сделать четыре отверстия: одно – для провода электропитания, одно – для выводов светодиодной ленты, два – для аудио-разъемов. При работе с электроинструментом, используйте средства защиты. Отверстия также можно прожечь раскаленным гвоздем или проковырять ножом.

Шаг 4: Паяем контроллер светодиодов

Это важный шаг. Вам нужно распаять схему ключей управления светодиодными лентами, на которые будут поступать сигналы от контроллера Arduino. Такая схема необходима, поскольку выходное напряжение выводов платы Arduino составляет всего 5 В, а светодиодной ленте для работы требуется не менее 12 В. Схема состоит из трех силовых транзисторов, которые работают как ключи: при поступлении слабого сигнала на базу транзистора, он открывается, подавая напряжение, достаточное для питания светодиодных лент. Каждым цветом полосы (красным, зеленым и синим) управляет отдельный транзистор.

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

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

Шаг 5: Делаем шилд для Arduino

Следующим шагом будет создание шилда для Arduino, который поможет соединить все компоненты, хотя делать его необязательно. Для контроллера Arduino UNO такой шилд не понадобится. Основное предназначение шилда – возможность в любой момент вносить необходимые изменения в соединениях проводов без необходимости пайки. Это также позволит загружать код в контроллер Arduino, отключив его от шилда.

Вы можете спаять такой шилд по фотографии выше. Он состоит из печатной платы на которой распаяны гнезда для подключения контроллера Arduino и штыревые разъемы, соответствующие каждому выводу контроллера. Еще потребуется припаять несколько штырьков для подключения выводов 5 В и GND, так как они используются очень часто. Вы сможете применить данный шилд в других проектах, просто отсоединив все провода-перемычки.

Шаг 6: Подключаем цепь к Arduino

После того, как шилд и светодиодный контроллер будут готовы, подключим их друг к другу. Вначале установите плату Arduino на шилд. Теперь, используя несколько монтажных проводов с разъемами типа «мама-мама», соедините шилд и светодиодный контроллер по следующей схеме:

  1. Эмиттеры всех транзисторов соедините с «землей» (GND) контроллера Arduino.
  2. Базу транзистора 1 – с цифровым выводом 9 Arduino через резистор 1 кОм.
  3. Базу транзистора 2 – с цифровым выводом 10 Arduino через резистор 1 кОм.
  4. Базу транзистора 3 – с цифровым выводом 11 Arduino через резистор 1 кОм.

После этого, приклейте плату светодиодного контроллера, а также шилд с установленным контроллером Arduino внутри корпуса устройства.

Шаг 7: Устанавливаем входной и выходной аудио-разъемы

Показать еще 4 изображения

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

Любое современное аудиоустройство воспроизводит стереофонический звук, то есть имеет два канала: левый и правый. Наше устройство будет использовать сигнал только от одного канала, но на выходной разъем будут подаваться оба аудио-сигнала. Далее подключите схему так (терминология Википедии):

  1. Гильза разъема 1 (вход) – к гильзе разъема 2 (выход).
  2. Кольцо разъема 1 – к кольцу разъема 2.
  3. Кончик разъема 1 – к кончику разъема 2.
  4. Гильза разъема 1 – к «земле» (GND) платы Arduino.
  5. Кольцо разъема 1 – аналоговый вывод А0 Arduino.

После выполнения всех соединений, установите оба разъема в сделанных ранее отверстиях корпуса.

Шаг 8: Подключаем электропитание к установке

Показать еще 4 изображения

На данном шаге у вас могут возникнуть трудности, если вам не удастся подобрать необходимый для проекта источник питания 12 В. Для питания ЦМУ требуется адаптер 12 В / 2 А. Адаптер, рассчитанный на максимальный ток 1 А, может не работать должным образом при использовании длинной светодиодной ленты, поскольку она будет потреблять большой ток.

Подсоедините провода от блока питания к винтовым клеммам контроллера. Питание будет подаваться не только на светодиоды, но и на контроллер Arduino. Контроллеры Arduino UNO и Arduino Nano имеют встроенный преобразователь напряжения 12 В – 5 В (который отсутствует в контроллере Arduino Pro Mini). С помощью соединительных проводов подключите положительный вывод от источника питания к выводу Vcc Arduino, а отрицательный – к GND Arduino.

Шаг 9: Подключаем светодиодную ленту к контроллеру

Теперь вам нужно подключить RGB-светодиодную ленту к соответствующему разъему на контроллере. Убедитесь в том, что вы подключили ее правильно. Обрежьте ленту до необходимой вам длины и припаяйте провода к ее медным контактным площадкам, расположенным с задней стороны полосы.

При желании, можете удлинить провода ленты, если намереваетесь установить ее на большом расстоянии от устройства.

Шаг 10: Загружаем код

Подключите контроллер Arduino к ПК и загрузите в него приведенный ниже скетч через приложение Arduino IDE. В разделе «Инструменты => Плата» выберите вашу плату, например, Arduino Nano, а в разделе «Инструменты => Порт» выберите номер COM-порта, к которому подключен контроллер. Если вы хоть немного разбираетесь в программировании, то легко сможете понять код скетча. Работает программа следующим образом:

  1. Проверяется, превышает ли аудио-сигнал установленный порог.
  2. Если нет, цикл повторяется снова, бесконечно проверяя уровень сигнала, пока условие не станет истинным.
  3. Если да, то генерируется случайное число от 1 до 6.
  4. В зависимости от сгенерированного числа, контроллер зажигает определенный цвет светодиодов.
  5. После задержки в 10 мс, программа продолжает свой цикл.
  6. Таким образом, всякий раз, когда звуковой сигнал превышает порог срабатывания, цвет светодиодной ленты меняется на случайный.

Вы можете изменить пороговое значение сигнала в цикле if(), а также изменить номера выводов, не забывая, однако, что все они должны работать в ШИМ-режиме. Вот код скетча:

/* Music Reactive Color Changing Lights Source code Made by- Saiyam Agrawal */ int threshold = 20; void setup() { pinMode(9, OUTPUT); // set all the pins as output pinMode(10, OUTPUT); pinMode(11, OUTPUT); } void loop() { // enter the loop if(analogRead(A0) > threshold) // check if audio signal goes above threshold { int a = random(1, 6); // store a random number if(a == 1) // glow red { digitalWrite(9, HIGH); digitalWrite(10, LOW); digitalWrite(11, LOW); } if(a == 2) // glow green { digitalWrite(9, 0); digitalWrite(10, 1); digitalWrite(11, 0); } if(a == 3) // glow orange { analogWrite(9, random(100, 255)); analogWrite(10, random(100, 255)); digitalWrite(11, 0); } if(a == 4) // glow cyan { digitalWrite(9, 0); analogWrite(10, random(100, 255)); analogWrite(11, random(100, 255)); } if(a == 5) // glow purple { analogWrite(9, random(100, 255)); digitalWrite(10, 0); analogWrite(11, random(100, 255)); } if(a == 6) // glow blue { digitalWrite(9, 0); digitalWrite(10, 0); digitalWrite(11, 1); } delay(20); // wait for 20ms } else digitalWrite(9, LOW); // if audio signal is less than 20, set all the pins low digitalWrite(10, LOW); digitalWrite(11, LOW); // again reach the top and start } Project_code.ino Файлы

  • Project_code.ino

Шаг 11: Финальные шаги – подключаем и любуемся

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

Для настройки устройства понадобятся два кабеля AUX. Подключите один конец одного из кабелей к источнику звука (iPod, MP3-плеер, мобильный телефон, планшет, телевизор и т.д.), а другой конец – к разъему аудиовхода вашего устройства. Далее подключите выходной разъем к любым колонкам или наушникам (опционально). Включите музыку. Если светодиоды не загораются, увеличьте громкость. Если они загораются, но не гаснут, то уменьшите громкость.

Вот и все. Получайте удовольствия от своей цветомузыкальной установки.

В этой статье я расскажу как сделать цветомузыку на Arduino своими руками без больших усилий. Несомненно, для многих начинающих радиолюбителей интересно создать свою собственную цветомузыку! Еще в 80-х годах прошлого века на этом самодельном устройстве была помешана вся молодежь в независимости от знаний в области физики и электроники. Кто разбирался в электронике — придумывал, что-то новое, кто не разбирался – копировали уже существующие схемы. И было абсолютно не важно, как это работает, главное, что работает и радует глаз. Сегодня огромный ассортимент светомузыкальных устройств имеется в продаже, кому лень паять микросхемы и транзисторы – можно просто светомузыку купить! А кому интересно повозиться несколько часов (дней) ради своего самоутверждения или самообразования – эта статья для Вас.
Познания человечества в области электроники за последние десятилетия шагнули далеко вперед. Ламповые транзисторы почти полностью вытеснены полупроводниковым приборами, лампочки со спиралью активно меняются на светодиоды, а огромные монтажные платы заменены на маленькие платки с микросхемой по центру. Так вот, нашу цветомузыку мы будем делать из микроконтроллера Arduino (я использовал Arduino uno) и дешевых белых светодиодов. Каждый светодиод будет реагировать на заданную частоту звука. Количество светодиодов будет ограничиваться лишь количеством свободных пинов микроконтроллера. Интересней, конечно, было бы сделать цветомузыку на светодиодной ленте, но выходы микроконтроллера нам 12 Вольт никак напрямую не дадут. Нужны какие нибудь усилители, например микросхема ULN2003. Схемку с использованием такой микросхемы мы рассмотрим чуть позже.
Как сказал Юрий Гагарин, поехали!
Всю электронику я размещал на дешевой гетинаксовой макетной плате 5см*6см с отверстиями. В примере паять не будем, а просто все подключим к Arduino uno посредством разъемов на плате.
Микроконтроллер Arduino будет у нас и блоком питания и усилителем сигнала и анализатором звука.
Так же нам понадобится аудиоразъем 3,5мм или штекер от наушников, много проводов (отлично подойдет витая пара), светодиоды 0,1Вт – 0,5Вт, цветной картон или любой другой светофильтр, две руки и немного энтузиазма…
Начну со скетча, заливаем в МК этот код:

C++

Подводим аудиосигнал к аналоговому пину A0 и земле (GRD).
Светодиоды подключаем к пинам 3, 4, 5, 6 (для наглядности хватит). Ограничивающие резисторы для светодиодов не ставил, так как Ардуино большой ток на них и не даст, а вот резистор между А0 и GRD придется поставить чтоб избавиться от наводок. Резистор подбирал методом научного тыка… 10 Ом вполне нормально справляется с задачей.
Вот, что у нас получилось:

А вот схема, на которой все это разборчиво…

Подключаем питание к отладочной плате Arduino, включаем музыку и наслаждаемся плодами своего труда. Прикольно, не правда ли? Прикольно, да не очень. Этому всему нужно, какое ни будь оформление. Я использовал цветной картон. Скручиваем и клеим листы картона в трубки. Посередине каждого «фонаря» крепим светодиод и соединяем все трубки в один ряд:
Ну, вот и все, наша цветомузыка на ардуино готова и основа для полета творческой мысли у вас есть. Желаю удачи в Ваших самоделках!

Цветомузыка на Arduino

Видео демонстрация под Metallica — Fuel

Видео демонстрация под Evanescence — Even in death (2016 version)

Добрый день всем читателям и любителям «посамодельничать». Все мы с нетерпением ждем Новый год. И конечно хочется украсить свой дом. Чтобы вокруг всем было красиво и сказочно. И какой же Новый год без хорошей музыки. Вкусы у всех, конечно, разные, но каждый захочет включить что-нибудь, веселое и потанцевать. А может это будет медленный танец или вспомнить ушедший год под грустные мотивы. В любом случае, создать атмосферу и украсить дом, поможет цветомузыка. Созданию цветомузыки на основе Arduino и WS2812, и будет посвящена данная инструкция. На эту идею меня натолкнул AlexGyver. На его сайте alexgyver.ru много подобных идей и изобретений. Загляните как будет время. Итак, начнем.
В список покупок к Новому году добавим:
— Arduino Nano (можно использовать практически любую совместимую плату)
— Адресные светодиоды WS2812 (WS2812B), в количество светодиодов от 2 – 400 шт.
— Переменный резистор 10 – 100 кОм
— Кнопка
— Блок питания 5 В, 3 А (сила тока подбирается по ваше количество диодов)
— гнездо подключения блока питания
— Гнездо стерео-джек 3,5 мм
— Соединительный провод (стерео-джек 3,5 мм — стерео-джек 3,5 мм)
— Керамический конденсатор 10нФ (маркировка 103)
— Провода
— Паяльник и все сопутствующие ему.
Шаг 1 Подготовка светодиодных лент.
В этом шаге большой простор для вашей фантазии. Можно закрепить ленты на шкафу, картине, карнизе, телевизоре, тумбе и тд и тп. Я так и не смог определиться с выбором места. Я сделал, и вам рекомендую, сделать переносную ленту, точнее две. По длине – все зависит от вашего желания. Также ленту бываю с разной плотностью. Я брал с плотностью 30 диодов на метр. Они также есть 60 и 120 диодов на метр. Я сделал две полоски по 18 светодиодов. Это примерно 60 см. Для начала нам нужно основа. Под основу подойдут полоски фанеры, ДВП или пластика. Я взял фанеру толщиной 3 мм и вырезал две полоски шириной 1 см и диной 62 см (с запасом чтобы на конце закрепить провода от ленты):
Поверх полоски из фанеры клеим светодиодную ленту, если вы приклеили ленту не ровно и пришлось ленту отодрать, она будет плохо держаться. В таком случае рекомендую использовать канцелярский двусторонний скотч. Он есть толщиной 1 см, как раз по ширине нашей ленты:

Для тех кот не работал с адресными лентами вкратце расскажу. WS2812 – это три светодиода (красный, синий, зеленый) и 8-битный ШИМ драйвер для них в одном корпусе. Для подключения ленты используется три провода. +5V контакт на который подается плюс от блока питания, GND – минус блока питания. Управление происходит подачей 24 битного сигнала для каждого светодиода (8 бит на один цвет). Сигнал от Arduino подается на контакт Din первого светодиода, который в свою очередь, записывает себе во временную память первые 24 бита и согласно им, устанавливает цвет свечения, отсекает от сигнала эти первые 24 бита и отправляет сигнал через контакт Do дальше, следующим светодиодам. Поэтому у ленты есть направление. Она указано на ленте стрелочкой, или от контакта Din к Do.
Чем больше светодиодов, тем больше протекающий ток . WS2812 очень прожорливы и один диод потребляет (при максимальной яркости все трех цветов) 0,06 А. Поэтому провода питания контакты +5V и GND надо подбирать под максимальный ток протекающий по ним. Я использовал медный гибкий провод сечение 0,5 мм (с запасом и для дальнейшего увеличения длины ленты). Провод для сигнального контакты не столь требователен к сечению, ток протекающий по нему мал, поэтому берем тоненький гибкий провод. Припаиваем провода к ленте и изолируем контакты:
Цветомузыка работает следующим образом: делит количество светодиодов пополам, громкость музыки указывается загоранием диодов от середины к концам всей ленты. Поэтому, если вы хотите две полосы, работающие как у меня на видео обе ленты подключаются параллельно (провод от контактов Din обеих лент к одному пину Arduino, D12). И тогда количество светодиодов в скетче указываем равное сумме диодов обеих лент. Если вы хотите, чтобы лента работала от середины подключаем две полоски последовательно и также указываем общее количество светодиодов.
Шаг 2 Блок питания.
Как я уже говорил лента WS2812 прожорлива, к выбору блока питания надо подойти основательно. Нам нужен 5 вольтовой стабилизированный, силу тока подбираем в зависимости от количества светодиодов, лучше брать с запасом. Я рекомендую, например, такой на 3 А:
Характеристики написаны на корпусе блока питания:
Я планирую дальнейшее расширение моей цветомузыки, поэтому не мелочась беру компьютерный блок питания с выведенными контактами подключения:
Шаг 3 Arduino и схема подключения.
Для реализации данного проекта подойдет практически любая Arduino совместимая плата. У меня под руками оказалась Arduino Uno. Теперь надо собрать все по схеме. Схему возьму от моего идейного вдохновителя AlexGyver –ра:

Потенциометр нужен для установки опорного напряжения для измерения уровня аудио сигнала. Контакт A0 используется как GND (для Arduino Nano так удобнее подключать). Можно обойтись без потенциометра, включив использование внутреннего опорного напряжения в скетче.
Контакты A1, A2 используются для подключения аудио сигнала, не забываем соединить GND контакты Arduino и провода аудио сигнала.
Кнопка, используется для переключения режимов, подключается к контакту D3 Arduino.
Соединение гнезда и контакта A3 через конденсатор нужно для работы некоторых режимов. Подробно о режимах работы вы можете узнать на странице AlexGyver:
Чтобы мы могли слушать музыку, и наша цветомузыка работа нам необходимо разделить аудио сигнал. Сделать это можно используя тройник:

Также можно подключить колонки к аудио выходу на материнской плате, а цветомузыку к выходу наушников. Главное, нельзя подключать цветомузыку к выходу после усилителя, там слишком большой уровень сигнала для Arduino.
Я собрал все на основе Arduino Uno и разместил на блоке питания:
Шаг 4 Редактирование, настройка и заливка скетча.
Для начала необходимо скачать последнюю версию среды разработки Arduino IDE. Лучше всего с официального сайта.
Выбирайте как вам удобнее: скачать ZIP архив и распаковать в нужное место или скачать установочный файл и установить программу. Разницы нет.
Для работы скетча нам понадобятся библиотеки: Adafruit_NeoPixel-master, EEPROMex, FastLED-master, FHT, GyverButton, IRLremote-master и IRremote. Проще всего скачать их все вместе и уже нужные версии с сайта AlexGyver.
Скачиваем целиком архив. Распаковав архив, переписываем все содержимое папки «libraries» в одноименную папку, находящуюся в папке с установленной Arduino iDE.
Запускаем Arduino IDE. Открываем скетч из скаченного ранее архива. Нужный нам скетч находиться в папке «firmware». Открываем «colorMusic_v2.10». Чтобы он работал правильно его нужно немного подправить, а точнее выставить правильные настройки.
Скетч предусматриваем возможность использования инфракрасного пульта для управления. Если есть желание вы можете найти все нужные инструкции на сайте AlexGyver-а. На мой взгляд пульт не обязателен. Поэтому будет настраивать на работу без пульта. Ищем строку:
#define REMOTE_TYPE 0
Там должен стоять «0».
Настройки Arduino будет хранить в энергонезависимой памяти EEPROM. Чтобы не возникало ошибок в дальнейшем, сбросим все настройки. Находим строку:
#define RESET_SETTINGS 0
Ставим вначале «1», прошиваем скетч, после этого ставим «0» и прошиваем еще раз.
В строке:
#define NUM_LEDS 36
Указываем ваше количество светодиодов.
После запуска цветомузыки поступаем следующим образом: для начала надо настроить нижнюю границу уровня звука. Для этого ставим музыку на паузу, зажимает и удерживаем кнопку пока не загорится диод на плате Arduino.
Вариантов установки цветомузыки масса. Я установил блок питания и Arduino на шкафу. Блок питания подальше, чтобы его не было видно, а ленты направил вверх:
Также можно установить ленты по бокам от компьютерного стола:
Затем включаем музыку и смотрим все вся ли лента загорается при работе музыки. Если лента работает только в самом начале или наоборот всегда горит крутим потенциометр. Опытным путем делаем так чтобы вся лента работала. Все удачи в самоделках и отличных идей.
Доставка новых самоделок на почту

Получайте на почту подборку новых самоделок. Никакого спама, только полезные идеи!

*Заполняя форму вы соглашаетесь на обработку персональных данных

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

admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Наверх