Главная » Статьи » Arduino |
В этой статье я расскажу как сделать цветомузыку на Arduino своими руками без больших усилий. Несомненно, для многих начинающих радиолюбителей интересно создать свою собственную цветомузыку! long vl,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10;//Промежутки времени между колебаниями на аудиовходе long hz=0;//Частота при последнем измерении long hzprev=0;//Предварительная частота long tout=0;//Таймаут измерения частоты void setup() { pinMode(2, OUTPUT);//Светодиод pinMode(3, OUTPUT);//Светодиод pinMode(4, OUTPUT);//Светодиод pinMode(5, OUTPUT);//Светодиод pinMode(A0, INPUT);//Аудиовход } void loop() { tout=millis()+600;//Задаем таймаут измерения while (tout>millis() && digitalRead(A0) > 10 );//Цикл с выходом при окнчании времени ожидания или при значении на А0 больше 10 v1 = micros();//Задаем начало измерения while (tout>millis() && analogRead(A0) < 1);//Ждем падения напряжения на входе А0 v2 = micros();//Отбиваем первый отрезок времени и т.д.... while (tout>millis() && analogRead(A0) > 0 ); v3 = micros(); while (tout>millis() && analogRead(A0) < 1 ); v4 = micros(); while (tout>millis() && analogRead(A0) > 0 ); v5 = micros(); while (tout>millis() && analogRead(A0) < 1 ); v6 = micros(); while (tout>millis() && analogRead(A0) > 0 ); v7 = micros(); while (tout>millis() && analogRead(A0) < 1 ); v8 = micros(); while (tout>millis() && analogRead(A0) > 0 ); v9 = micros(); while (tout>millis() && analogRead(A0) < 1 ); v10 = micros(); hzprev=1000000/(((v2-v1)+(v3-v2)+(v4-v3)+(v5-v4)+(v6-v5)+(v7-v6)+(v8-v7)+(v9-v8)+(v10-v9))/9);//Получаем среднее зачение между колебаниями if (tout>millis()&&sq((hz+hzprev)/2-hzprev)>1000){ hz=(hz+hzprev)/2;//Если измерение вложилось в таймаут, то усредняем новое значение частоты с предыдущим (чтоб огоньки бегали) } else{ hz=0;//Если не вложились - обнуляем значение частоты } //Перед тем, как зажечь нужный светодиод - тушим все digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); if (hz>20 && hz<100){//И зажигаем тот, который сооветствует заданной частоте digitalWrite(2, HIGH); } if (hz>100 && hz<300){ digitalWrite(2, HIGH); } if (hz>300 && hz<700){ digitalWrite(4, HIGH); } if (hz>700 && hz<1500){ digitalWrite(5, HIGH); } } Подводим аудиосигнал к аналоговому пину A0 и земле (GRD). Подключаем питание к отладочной плате Arduino, включаем музыку и наслаждаемся плодами своего труда. Прикольно, не правда ли? Прикольно, да не очень. Этому всему нужно, какое ни будь оформление. Я использовал цветной картон. Скручиваем и клеим листы картона в трубки. Посередине каждого «фонаря» крепим светодиод и соединяем все трубки в один ряд: Источник: http://arduino-geek.pp.ua/%D1%86%D0%B2%D0%B5%D1%82%D0%BE%D0%BC%D1%83%D0%B7%D1%8B%D0%BA%D0%B0-%D0%BD%D0%B0-%D0%B1%D0%B0%D | |
Просмотров: 1348 | | |
Всего комментариев: 0 | |