ГРАФИЧЕСКИЙ АНАЛИЗАТОР АУДИО СПЕКТРА НА ARDUINO
Графоанализатор спектра с кучей настроек и возможностей
- Вывод спектра на:
- Дисплей 1602
- Матрица из 4х блоков 8х8 (MAX7219)
- Матрица адресных WS2812
- Настройка яркости
- Настройка цветовой гаммы (для WS2812)
- Настройка усиления и подавления шумов
- Настройка плавности анимации
- Настройка громкости:
- Фиксированная
- С потенциометра
- Автоматическая
- Точки максимума
- Вкл выкл
- Время зависания
- Скорость падения
- Ручная выборка по частотам
ПОДРОБНОЕ ВИДЕО ПО ПРОЕКТУ
- В данном видео показан полный и максимально подробный процесс разработки и изготовления устройства, а также обзор его возможностей и функций, всё это с приятным монтажиком, музычкой и комментариями. В общем, приятного просмотра!
МАТЕРИАЛЫ И КОМПОНЕНТЫ
Ссылки на магазины, с которых я закупаюсь уже не один год
Вам скорее всего пригодится:
- Arduino NANO 328p – искать
- Макетная плата и провода https://ali.ski/w8AFTm
- Дисплей 1602
- Матрица MAX7219 – искать
- Матрица 16×16 – искать
ПРОШИВКА И НАСТРОЙКА
Содержимое папок в архиве
- libraries – библиотеки проекта. Заменить имеющиеся версии
- Firmware – прошивка для Arduino, файлы в папках открыть в Arduino IDE (инструкция)
- spektrumFHT – “голая” прошивка для вывода спектра
- spertrum1602 – анализатор с дисплеем 1602
- spertrumMatrix_MAX7219 – анализатор с матрицей 8х32
- spertrumWS2812_16x16_full – анализатор с цветной матрицей 16х16
- schemes – схемы
Как прошить?
- ЕСЛИ ЭТО ПЕРВЫЙ ОПЫТ РАБОТЫ С 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 полосам с сохранением межполосных значений по линейной зависимости
- Поиск максимумов для коррекции высоты столбиков на матрице
- Перевод чистого “веса” полосы к высоте матрицы
- Отправка полос на матрицу
- Расчёт позиций точек максимума и отправка их на мтарицу
- Мимоходом фильтрация верхних пиков, коррекция высоты столбиков от громкости и прочее