Ако правилно те разбирам искаш да постигнеш ефекта на цветомузиката, само че реализиран с Arduino.
За мен също е много интересно ако успеете да го реализирате.
Това което си спомням от ТС (Теория на сигналите) е, че са необходими няколко неща:
1. входния сигнал да постъпи в Arduino само положителен. По принцип от аудио изход излиза двуполярен.
2. да можем да четем стойностите на аналоговия вход на точно определен интервал. И четенията да са поне 3 пъти по-бързо от най-високата честота, която искаме да регистрираме.
3. подава получената поредица от стойности на цифрови филтри.
4. Ако имаме три цифрови филтъра нискочестотен, средно и високо-честотен, от стойностите които ще връщат цифровите филтри, можеш да определиш дали да запалиш съответния светодиод.
Ето какво намерих по темата:
по т.1. ще трябва малко електроника за преобразуване на нивото. Обикновено то е <2V.
Ардуино може да се пренастрои, така че аналоговите входове да работят от 0 до 1.1V, без допълнителни елементи. Стандартно е 0-5V. С външен стабилизатор може и на произволно напрежение между 0-5V, което се подава на AREF входа.
Още нещо задължително при цветомузиките е така нарчения компресор на динамика. Без него стойностите се изменят твърде бързо и мигането е по-скоро трептене. Мисля, че може да се реализира и програмно.
по т.2. не съм много запознат с Ардуино, но по принцип може да се програмира да чете автоматично една след друга стойностите на аналоговия вход. Което мисля че ще свърши работа за четене на точно определен интервал.
Относно скоростта на четене. Ардуино чете за около 100uSec една стойност (еквивалент на 10kHz). Kоето ще рече, че най-много до около 3-5kHz ще могат да се засекат от цифровите филтри.
Има възможност да се преконфигурира, така че да чете до около 80000 стойности/сек с по-ниска точност, което би трябвало да свърши работа.
по т.3. вместо цифрови филтри, хората са дали направо библиотека за разлагане на сигнала до съставните му честоти. Нарича се Бързо преобразуване на Фурие.
Ето линка
http://didier.longueville.free.fr/arduinoos/?p=1022Изхода от тази функция ти показва всяка честота с каква амплитуда участва във входния сигнал.
Като сумираш стойностите например <500Hz и ако резултата надвишава зададена стойност, диода светва.
Това е мноооого накратко описано :shock: . Ако тръгнеш да го правиш ще помагаме и по-детайлно.