Étape 1: Concept et théorie
Avant de commencer un projet, vous devriez faire un concept brut qu’il devrait être capable de faire. L’idée de base est simple : un signal stéréo audio est lu par un contrôleur, qui a ensuite fait quelques calculs et affiche un motif sur une matrice de LED. En outre il faut un écran de rétroaction une certaine façon pour contrôler le système.
Concept matériel
Le contrôleur de ce projet doit être capable de lire les valeurs analogiques 2 une fois, ce qui signifie que le contrôleur a besoin de 2 unités de ADC. Elle devrait également soutenir les DMA, pour faire l’acquisition de données indépendantes de l’unité centrale. Le DMA contribuerait également à afficher les données pour les pilotes de LED. Alors qu’un contrôleur de Cortex M4 donnerait plus de puissance de calcul, j’ai décidé d’utiliser un contrôleur d’atxmega128A3U, parce que le sont moins cher et plus facile à obtenir (ils sont vendus avec un bootloader préprogrammé sur la page ebay allemand pour les personnes qui n’ont pas un programmeur) tout en offrant des fonctionnalités requises.
Le signal audio doit être amplifié et portées sur un niveau pour être lu correctement par le contrôleur. En outre, le signal doit être filtré afin d’éliminer les erreurs de calcul de la FFT. Quoique non absolument nécessaire un AGC a été ajouté. Ce serveurs comme protection des audio d’entrée stade et lisse extrême changements dans le niveau du signal.
Comme les LED, j’ai choisi WS2812 LED, surtout parce que j’avais encore certains d'entre eux, mais aussi parce qu’ils sont pratiques à utiliser. Le LED sont placés derrière les balles de ping-pong, qui servent de diffuseur pour la lumière. Les LED sont disposées comme une matrice 7 x 6.
Enfin, j’ai ajouté un écran OLED I2C-basé et un bouton rotatif avec bouton comme interface d’entrée-sortie pour l’utilisateur. Cela permet de déboguer le programme facilement et de mettre en place un menu simple pour contrôler le projet fini.
Cette configuration nous permet d’échantillonner les données audio, traitez-la un faire une animation sympa sur la matrice de LED.
Sur la photo, vous pouvez aussi voir un amplificateur audio avec haut-parleur. C’est l’habitude d’entendre le signal qui est échantillonné par le contrôleur. Pour la version finale du projet il ne sera pas utilisé.
L’idée de base de fonctionnalité
Analyse audio en temps réel utilise beaucoup de ressources, ce qui n’est pas le contrôleur utilisé. Avec le système actuel, il est possible d’échantillonner les données et effectuer tous les calculs 20 fois par seconde. Bien que cela soit suffisant pour faire certaines réactions regarder assez bonne, plus complexe animations ressemblera peu soignées, si vous il présenterait avec 20 images par seconde.
Le contrôleur rafraîchit l’écran à une fréquence de 60 images par seconde. Cela fait des animations regarder très lisse, surtout si vous s’estomper la couleur. Le système d’animation obtient nourris avec les nouvelles données 20 fois par seconde et utilise ces données en tant que modèle pour l’animation. Bien que cette approche est loin d’être une réaction en temps réel à la musique, il suffit d’amener la perception humaine dans une réaction immédiate.