LED VU FFT com Arduíno

Um impressionante efeito visual usando Arduíno para processar áudio.

Daniel O. Basconcello Filho

Eu adoro música. Tem sempre uma tocando enquanto trabalho. Já faz um tempo, um amigo (Ricardo Tamaoki) me pediu um orçamento para um efeito especial e acabei não fazendo porque um outra pessoa já tinha o equipamento pronto e como os prazos geralmente são curtos, principalmente os dele, não rolou o P&D (pesquisa e desenvolvimento).

O efeito tratava-se de uma parede com vários VU, acho que 8 ou 10, semelhantes aos da foto acima, mas cada um deles medindo um metro de altura por 30cm de largura.

Esses VUs são medidores de intensidade de sinais elétricos, convertem uma tensão em um sinal luminoso. Os mais antigos usavam ponteiros.

Abaixo a nossa releitura de um VU de Leds de 7 segmentos que você aprende a fazer neste artigo:

Na época, eu desenvolveria usando um integrado chamado LM3914, um chip indicador linear de tensão, tem como principal aplicação a monitoração linear de sinais aplicados à sua entrada, ou seja, mostrar o áudio numa telinha de LEDs

Esse chip é barato e fácil de usar, mas para construir algo mais avançado como um analizador de espectro complica, pois além de ser necessário um chip para cada frequência, um circuito adicional deve ser construido para filtrar somente a faixa de frequência desejada para cada faixa.

A matemática facilitando o trabalho

Camiseta rodando a Transformada

A questão é que o filtro para cada faixa de frequência é fixo, ou seja, você precisa construir um circuito tipo RC e calcular o valor correto. Nem sempre a faixa de frequência calculada correspondia visualmente ao efeito desejado, sendo necessário ajustes chatos.

Já na era dos microcontroladores, pensei em usar um truque que aprendi em alguma aula de cálculo onde sempre pentelhava o professor perguntando para quê serviria tal matemática. O cálculo estudado era a Transformada de Fourier.

Alguns professores de cálculo (alguns?) não gostam ou não sabem para quê determinado cálculo serve. Mas aquele professor sabia! Ele me explicou que a transformada de fourier é tipicamente utilizada para decompor um sinal nas suas componentes em frequência e suas amplitudes.

Imediatamente lembrei do caso do VU e depois da aula ele confirmou que a transformada serviria para fazer o trabalho. Hoje existe até camiseta rodando a transformada de fourier discreta!

Arduíno na jogada

Então, um belo dia, pesquisando na internet sobre técnicas matemáticas em C, encontrei uma página no forum do Arduíno onde um sujeito (suspeito que seja o David Keller) comentou que portou para 8 bits uma função FFT (transformada rápida de Fourier).

Fechou! A idéia para um projeto estava completa! Ainda não materializada, mas completa. Isso aconteceu em meados de 2012. Prometi que até o final do ano eu implementaria alguma coisa com a biblioteca.

Já que o mundo não acabou, e para cumprir a promessa, resolvi fazer o VU de LEDs com FFT dia 29/12/2012

Antes de continuar preciso dizer uma coisa: Abordar o assunto com Arduíno parece matar uma mosca com um canhão, e é, mas esse é o primeiro projeto de uma sequência de estudos que estou fazendo com captura e geração de sinais, aplicações e possibilidades, portanto antes de comentar a respeito da "ignorância" de resolver com arduíno ao invés de um chip bobo, veja para onde esse estudo nos leva: (usem como referência também)

O motivo d'eu escrever esse artigo foi um teste que fiz usando o codigo do AnalogIsrLogger do link acima. Olha o que saiu:

Precisei alterar o código original do AnalogIsrLogger porque na estrutura de dados coletados existe originalmente um cabeçalho que "mela" o áudio na hora que tocamos ele no PC. O firmware é complexo, nem entendi ele 100% ainda, e por esse motivo, preferi publicar algum material partindo de um projeto mais simples.

O projeto do VU de LEDs é bem parecido com o do vídeo acima, a única coisa que muda é o firmware e a forma de saída dos dados, que ao invez de ser um cartão de memória, é uma barra de leds.

Na próxima página, faremos um estudo do circuito desenvolvido e todo material para que você possa reproduzir o VU de LEDS.

Comente este artigo você também!

Licensa Creative Commons Esta obra foi licenciada sob uma Licença Creative Commons Atribuição-NãoComercial-Compartilha 3.0 Não Adaptada.