ГРАФИЧЕСКИЙ АНАЛИЗАТОР АУДИО СПЕКТРА НА ARDUINO

Графоанализатор спектра с кучей настроек и возможностей

  • Вывод спектра на:
    • Дисплей 1602
    • Матрица из 4х блоков 8х8 (MAX7219)
    • Матрица адресных WS2812
  • Настройка яркости
  • Настройка цветовой гаммы (для WS2812)
  • Настройка усиления и подавления шумов
  • Настройка плавности анимации
  • Настройка громкости:
    • Фиксированная
    • С потенциометра
    • Автоматическая
  • Точки максимума
    • Вкл выкл
    • Время зависания
    • Скорость падения
  • Ручная выборка по частотам

ПОДРОБНОЕ ВИДЕО ПО ПРОЕКТУ

  • В данном видео показан полный и максимально подробный процесс разработки и изготовления устройства, а также обзор его возможностей и функций, всё это с приятным монтажиком, музычкой и комментариями. В общем, приятного просмотра!
поддержать автора
канал на youtube
страничка на github
группа вконтакте

СХЕМЫ, ПЕЧАТНЫЕ ПЛАТЫ

Просто анализ

LCD 1602

Матрица MAX7219

Матрица WS2812b

МАТЕРИАЛЫ И КОМПОНЕНТЫ

Ссылки на магазины, с которых я закупаюсь уже не один год

Вам скорее всего пригодится:

Готовые наборы анализаторов

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

ПРОШИВКА И НАСТРОЙКА

Содержимое папок в архиве

  • libraries – библиотеки проекта. Заменить имеющиеся версии
  • Firmware – прошивка для Arduino, файлы в папках открыть в Arduino IDE (инструкция)
    • spektrumFHT – “голая” прошивка для вывода спектра
    • spertrum1602 – анализатор с дисплеем 1602
    • spertrumMatrix_MAX7219 – анализатор с матрицей 8х32
    • spertrumWS2812_16x16_full – анализатор с цветной матрицей 16х16
  • schemes – схемы
скачать архив
страница на github

Как прошить?

  • ЕСЛИ ЭТО ПЕРВЫЙ ОПЫТ РАБОТЫ С ARDUINO – посмотреть ВИДЕО о платформе с целью ознакомления, далее скачать, установить и настроить необходимые для работы программы согласно СУПЕР ПОДРОБНОЙ ИНСТРУКЦИИ (там даже видео версия есть!).
  • Скачать архив с проектом напрямую, или с GitHub (кнопки чуть выше)
  • Установить библиотеки (папка Libraries) в
    C:\Program Files (x86)\Arduino\libraries\ (Windows x64)
    C:\Program Files\Arduino\libraries\ (Windows x86)

  • Подключить Ардуино к компьютеру при помощи Data-кабеля
  • Открыть файл прошивки желаемой версии (файлы прошивок .ino лежат в одноимённых папках)
  • Настроить Arduino IDE (COM порт, куда подключена плата; подключенная модель Arduino, как в статье из первого пункта)
  • Настроить что нужно в прошивке, нажать загрузить
  • Если происходит ошибка компиляции или ошибка загрузки, читать 5-ый пункт в ЭТОЙ СТАТЬЕ

Настройки в прошивке

// матрица
#define WIDTH 16          // ширина матрицы (число диодов)
#define HEIGHT 16         // высота матрицы (число диодов)
#define BRIGHTNESS 20     // яркость (0 - 255)

// цвета высоты полос спектра. Длины полос задаются примерно в строке 95
#define COLOR1 CRGB::Green
#define COLOR2 CRGB::Yellow
#define COLOR3 CRGB::Orange
#define COLOR4 CRGB::Red

// сигнал
#define INPUT_GAIN 1.5    // коэффициент усиления входного сигнала
#define LOW_PASS 35       // нижний порог чувствительности шумов (нет скачков при отсутствии звука)
#define MAX_COEF 1.2      // коэффициент, который делает "максимальные" пики чуть меньше максимума, для более приятного восприятия
#define NORMALIZE 0       // нормализовать пики (столбики низких и высоких частот будут одинаковой длины при одинаковой громкости) (1 вкл, 0 выкл)

// анимация
#define SMOOTH 0.3        // плавность движения столбиков (0 - 1)
#define DELAY 4           // задержка между обновлениями матрицы (периодичность основного цикла), миллиисекунды

// громкость
#define DEF_GAIN 70       // максимальный порог по умолчанию (при MANUAL_GAIN или AUTO_GAIN игнорируется)
#define MANUAL_GAIN 0     // ручная настройка потенциометром на громкость (1 вкл, 0 выкл)
#define AUTO_GAIN 1       // автонастройка по громкости (экспериментальная функция) (1 вкл, 0 выкл)

// точки максимума
#define MAX_DOTS 1        // включить/выключить отрисовку точек максимума (1 вкл, 0 выкл)
#define MAX_COLOR CRGB::Red // цвет точек максимума
#define FALL_DELAY 50     // скорость падения точек максимума (задержка, миллисекунды)
#define FALL_PAUSE 700    // пауза перед падением точек максимума, миллисекунды

АЛГОРИТМ РАБОТЫ

  • Анализ спектра, на выходе имеем массив величин полос спектра (128 полос)
  • Фильтрация по нижним значениям для каждой полосы (128 полос)
  • Переход от 128 полос к 16 полосам с сохранением межполосных значений по линейной зависимости
  • Поиск максимумов для коррекции высоты столбиков на матрице
  • Перевод чистого “веса” полосы к высоте матрицы
  • Отправка полос на матрицу
  • Расчёт позиций точек максимума и отправка их на мтарицу
  • Мимоходом фильтрация верхних пиков, коррекция высоты столбиков от громкости и прочее

2018-02-21T00:38:44+00:00