Arduino: LED цветомузыка

Мигаем светодиодами под музыку
Изучал я как-то создание плагинов визуализации для медиаплееров, и тут мой взор упал на сборку светодиодов, которые я подключал к Arduino для проверки состояния выводов при тестировании различных скетчей. А почему бы не сделать аппаратную визуализацию музыки? Так я решил сделать простенькую цветомузыку.

С Википедии:

Цветомузыкой называют электронное устройство для построения световых картин, формирования цветовых зрительных образов, сопоставленных с музыкальным сопровождением.

Что нам потребуется:

  • Arduino
  • Ethernet Shield
  • Светодиоды — 10 шт.
  • Резисторы 470 Ом — 10 шт.
  • Макетная плата или что-либо, на чём будете крепить светодиоды.
Схема соединения очень простая. С ней справится даже первоклассник. Светодиоды через резисторы подключаются на цифровые выводы с 0 по 9.

Схема подключения светодиодов
Схема подключения светодиодов
Вот так это поначалу выглядело у меня:
dsc_0039
Теперь прошиваем в ардуину следующий скетч:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <SPI.h>         // needed for Arduino versions later than 0018
#include <Ethernet.h>
#include <Udp.h>         // UDP library from: bjoern@cs.stanford.edu 12/30/2008
 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,1,177 }; //IP ардуины
 
unsigned int localPort = 53412;      // локальный порт
 
byte remoteIp[4];
unsigned int remotePort;
 
// буфер для приёма/отправки данных
char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //буфер для получения данных по сети
 
void setup() {
  Ethernet.begin(mac,ip);
  Udp.begin(localPort);
 
  for (int i=0; i<10; i++)
  {
    pinMode(i,OUTPUT);
    digitalWrite(i, LOW);
  }
}
 
void loop() {
  // читаем пакеты данных при наличии
  int packetSize = Udp.available();
  if(packetSize)
  {
    memset(packetBuffer, 0, sizeof(packetBuffer)); //обнуляем буфер
    packetSize = packetSize - 8;      // subtract the 8 byte header
 
    Udp.readPacket(packetBuffer,UDP_TX_PACKET_MAX_SIZE, remoteIp, remotePort);
 
    for (int i=0; i<10; i++)
    {
      if (packetBuffer[i]=='1')
      {
        digitalWrite(i,HIGH);
      }
      else
      {
        digitalWrite(i,LOW);
      }
    }
  } //if(packetSize)
}
Всё, что он делает, это получает по протоколу UDP строку из десяти нулей и единиц и соответствующим образом зажигает светодиоды.
При необходимости меняем переменные ip[] и localPort.
snag-0053
Теперь подключаем плагин к Winamp или AIMP (необходимо скопировать DLL-файл в папку плагинов программы) и настраиваем его. Устанавливаем IP, порт (такие как в скетче) и выбираем режим визуализации. Ethernet Shield и компьютер соединяем по локальной сети.


Для открытия настроек плагина в AIMP щёлкните по чёрному полю визуализации.

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


Также прикладываю исходники плагинов.

Скачать
Скетч (1.26 KB)

Необходимые библиотеки для скетча:
Ethernet (29.73 KB)
SPI (7.49 KB)

Плагин для Winamp:
Плагин (227.16 KB)
Исходники плагина на Delphi (18.97 KB)

Плагин для AIMP:
Плагин (227.52 KB)
Исходники плагина на Delphi (24.94 KB)

Работа проверялась с Arduino IDE v0.22


Предупреждение!
Автор не несёт ответственности за возможную порчу оборудования. Всё, что вы делаете — вы делаете на свой страх и риск!

Похожие записи:

2 Комментарии “Arduino: LED цветомузыка

  1. Ардуино — это, конечно, хорошо… но гораздо круче, полезнее и дешевле собирать из голых компонентов — микроконтроллера и рассыпухи. Тогда можно будет устройство потом под разборку не пукскать, а оставить на память, например… Или в серийное производство пустить 😀

  2. Здравствуйте. Большое спасибо за статью!
    Я делаю артпроет и мне нужна Ваша помощь.
    Необходимо заменить Ethernet Shield на блютуз и сделать такую же цветумузыку от аимп плеера. модуль уже подключил к ардуино нано.

    помогите со скетчем. спасибо!

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

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