#5 How to code Encoders - MIDI Programming for the Arduino
Entenda como um encoder rotativo funciona, por que interrupções ajudam na leitura e como transformar seu movimento em mensagens MIDI com Arduino.

Um encoder rotativo dá ao controlador MIDI um knob que pode girar continuamente nos dois sentidos. Para aproveitar esse movimento, o Arduino precisa detectar a mudança e a direção, e então transformar o resultado em MIDI. Este tutorial acompanha as etapas principais do vídeo: entender o encoder, fazer sua leitura com interrupções, conectá-lo a um Arduino Pro Micro e enviar MIDI por USB.
Assista ao vídeo original no YouTube.
Por que usar um encoder rotativo?
Um potenciômetro tem um curso limitado entre as duas extremidades. Já um encoder pode girar sem parar, por isso funciona bem para percorrer presets, navegar por faixas ou mover um parâmetro em etapas. O aplicativo determina o que essas etapas fazem; o encoder informa a rotação, não um valor absoluto fixo do parâmetro.
Essa diferença ajuda a escolher o controle para um projeto MIDI. O potenciômetro é útil quando a posição do knob deve corresponder a um valor. O encoder serve quando cada giro deve aumentar ou diminuir um valor, sem um ponto inicial e final fixos.
Como o encoder informa a direção
O encoder mostrado no tutorial tem duas saídas de sinal. Quando o eixo gira, essas saídas mudam em sequência. A ordem das mudanças informa ao programa em que direção o knob está girando. O Arduino precisa ler essas transições de forma confiável para contar os passos e decidir quando enviar uma mensagem MIDI.
Encoders mecânicos podem produzir transições rápidas extras enquanto os contatos comutam. O código precisa interpretar as mudanças como passos de rotação, em vez de tratar cada transição elétrica como um giro intencional separado. O vídeo explica essa lógica; o método exato de decodificação e seus ajustes dependem do encoder e do sketch.
Por que usar interrupções?
Uma interrupção permite que o microcontrolador reaja quando um sinal monitorado muda, em vez de verificar a entrada apenas quando o loop principal chega até ela. Isso pode ajudar a acompanhar movimentos rápidos do encoder enquanto o programa executa outras tarefas.
O funcionamento das interrupções depende da placa e dos pinos disponíveis para essa finalidade. O vídeo demonstra a abordagem com um Arduino Pro Micro. Confira os recursos dos pinos da sua placa e o sketch antes de ligar outro modelo de Arduino; a numeração e o suporte a interrupções não são iguais em todas as placas.
Da rotação ao MIDI por USB
Depois que o código reconhece um passo e sua direção, ele pode transformar esse evento em uma mensagem MIDI. O vídeo usa a biblioteca MIDIUSB e um Arduino Pro Micro configurado para se apresentar como dispositivo MIDI USB. Uma DAW ou instrumento que receba essas mensagens pode usá-las para controlar um parâmetro, navegar ou executar outra função atribuída.
O tipo de mensagem, o canal e a atribuição do controlador dependem do sketch e do software receptor. A descrição do vídeo identifica a biblioteca MIDIUSB, mas este artigo não reproduz o código completo nem define um mapeamento para todos os setups. Consulte o vídeo e o sketch disponibilizado para ver a implementação exata.
O que acompanhar no vídeo
Os capítulos passam da motivação para usar um encoder ao comportamento dos sinais, às interrupções, à ligação, ao código e à saída MIDI. Seguir essa ordem conecta cada parte: primeiro entenda o que significam as duas saídas, depois veja como a placa as lê e, por fim, como um giro reconhecido vira uma mensagem que o software musical pode usar.
A descrição do vídeo oferece o sketch Arduino pela página de downloads do Nerd Musician. Confirme que selecionou o sketch da aula de Programação para Arduino e verifique os requisitos de placa e bibliotecas antes de fazer o upload. Este artigo apresenta os conceitos; ele não substitui o código nem a ligação mostrada no vídeo.
Um controle contínuo para mudanças em etapas
Um encoder rotativo combina com tarefas em que o controle gira continuamente e move um parâmetro em etapas. Entender a sequência dos sinais, a leitura por interrupção e a saída MIDI ajuda a decidir quando esse tipo de controle faz sentido em um projeto MIDI.
