Make a Raspberry Pi Pico MIDI Fidget Spinner
Monte um controlador MIDI com Raspberry Pi Pico, LDR e fidget spinner: Arduino IDE, TinyUSB, circuito de 3,3 V, calibração de 0–127 e mapeamento musical.

Um fidget spinner pode virar uma fonte de modulação. Coloque um sensor de luz embaixo dele, gire o objeto sob uma luz e as sombras em movimento produzirão um sinal variável. Neste projeto, uma Raspberry Pi Pico W transforma esse sinal em valores MIDI para controlar um parâmetro no software de música.
O resultado é um controlador MIDI com Raspberry Pi Pico que tem um ritmo físico próprio. Formatos diferentes interrompem a luz de maneiras diferentes, e a velocidade muda conforme o spinner perde impulso. Em vez de desenhar um LFO perfeitamente regular, você trabalha com o movimento de um objeto real.
A Elecrow forneceu o Pico Advanced Kit usado na demonstração. A montagem utiliza a Pico W e componentes básicos, sem precisar de toda a coleção de sensores do kit.
Por que usar uma Pico como controlador MIDI?
A Pico W é uma placa de microcontrolador com RP2040. Ela é diferente de um computador Raspberry Pi rodando Linux: você carrega um firmware que lê o sensor e envia MIDI. A versão W tem Wi-Fi, embora este projeto se comunique por USB.
A Pro Micro continua sendo uma opção útil para muitos projetos MIDI com Arduino, com uma comunidade consolidada e capacidade suficiente para controles comuns. A Pico oferece mais processamento e também pode ser programada pelo Arduino IDE. A quantidade limitada de entradas analógicas importa se você quiser transformar o experimento em um painel grande de potenciômetros.
A comparação útil envolve entradas, suporte de software e conexão. Não é necessário escolher a placa mais rápida para ler um único sensor de luz.
Configure a Pico W no Arduino IDE
A demonstração usa o pacote Arduino-Pico mantido por Earle F. Philhower. Adicione sua URL de gerenciamento de placas nas configurações do Arduino IDE, instale o pacote pelo gerenciador e selecione a Pico W utilizada na montagem. Consulte as instruções do pacote para obter a URL e os nomes atuais dos menus.
No primeiro upload, conecte a placa mantendo o botão de boot pressionado para que o destino USB bootloader/UF2 apareça. A porta serial comum e o bootloader têm funções diferentes. Carregue primeiro o exemplo Blink e confira o LED da placa. Isso separa a configuração básica do experimento MIDI: se Blink falhar, resolva a seleção da placa e o upload antes de acrescentar sensor e bibliotecas.
A gravação também demonstra uma sequência de botão e upload para as gravações seguintes. O comportamento do bootloader pode depender do core instalado e do firmware presente na placa; siga o procedimento documentado para essa combinação.
Instale a biblioteca MIDI e teste as mensagens USB
Durante o desenvolvimento, encontrei mensagens inválidas em parte das funções MIDI que queria usar com a combinação inicial de bibliotecas. Adaptei o código TinyUSB na biblioteca Adafruit_TinyUSB_MIDI. O repositório é a referência técnica da biblioteca apresentada no vídeo.
Instale essa biblioteca e sua dependência Adafruit TinyUSB. No Arduino IDE, selecione Adafruit TinyUSB como USB Stack da Pico. Essa opção faz parte da configuração MIDI demonstrada; selecionar apenas a placa não completa a configuração USB.
Comece pelo exemplo MIDI Write. Ele demonstra Note On/Off, Control Change, Program Change, pitch bend e mensagens de pressão. O exemplo MIDI Read apresenta o recebimento de mensagens. O código inicializa o objeto MIDI e chama begin() antes de usar os métodos de envio.
Faça o upload de MIDI Write e abra um monitor MIDI. Confira se a Pico aparece como entrada e se chegam mensagens com tipos, canais e valores reconhecíveis. Esse primeiro teste usa mensagens geradas automaticamente para verificar a comunicação USB antes de envolver o sensor.
Ligue o LDR como divisor de tensão
O LDR muda de resistência conforme a luz. Como a Pico lê uma tensão, combinamos o sensor com um resistor fixo:
- Ligue uma perna do LDR à alimentação de 3,3 V usada para o sensor.
- Ligue a outra perna ao ADC0, pino físico 31 no pinout apresentado.
- Nessa mesma junção entre LDR e ADC0, conecte um resistor de 10 kΩ ao terra.
- Utilize a conexão de terra analógico mostrada no pino físico 33.
O número 31 identifica uma posição física do conector nesta explicação. Não significa escrever 31 em qualquer função de leitura analógica: confira o identificador de ADC0 usado pelo código e pelo pacote da placa. O circuito do sensor funciona em 3,3 V; não transplante um esquema de Arduino de 5 V para essa entrada.
A montagem também tem um botão de calibração. Ele informa ao firmware quando medir a faixa útil do sensor. Confira o pino desse botão no sketch utilizado, sem confundi-lo com a entrada analógica.
Suavize a leitura e calibre a faixa MIDI
Instale ResponsiveAnalogRead para a versão com sensor. A leitura da luz oscila, e a suavização ajuda a evitar que toda pequena variação vire um salto audível no parâmetro.
O mapeamento relaciona duas faixas. A primeira é a faixa bruta de luz: os valores mínimo e máximo encontrados naquela iluminação. A segunda é a faixa MIDI de 0 a 127. O firmware converte o intervalo calibrado do sensor nesse intervalo MIDI.
Pressione o botão de calibração e mova o objeto ou a mão pelas condições de luz que serão usadas. Com o spinner, inclua tanto as aberturas quanto as partes que fazem sombra. Depois, variar a luz deve produzir uma faixa útil de valores MIDI, em vez de concentrar tudo em uma pequena região.
Calibre novamente ao mudar a posição do controlador ou a iluminação. A relação depende da luz, do sensor e do objeto; uma calibração feita em uma posição pode não servir para outra.
Mapeie o spinner para um parâmetro musical
Abra novamente o monitor MIDI após carregar o firmware do sensor. Agora, confirme que os valores respondem à luz, em vez de repetir as mensagens automáticas do exemplo MIDI Write. Em seguida, habilite a entrada MIDI da Pico no software musical e associe a mensagem ao parâmetro desejado.
Na demonstração, coordeno a calibração com a entrada no modo de mapeamento para que o sensor, que varia continuamente, não selecione uma atribuição indesejada. Escolha o destino, conclua o mapeamento e confira a resposta antes de tocar.
Gire o objeto sobre o sensor e escute o resultado. A quantidade e o formato das aberturas criam padrões diferentes de sombra. A redução da velocidade modifica naturalmente a frequência da modulação. O interesse musical vem desse padrão físico variável; o USB MIDI faz a ligação com o controle no software.
Confira o sistema por etapas
Se o resultado estiver estranho, volte pelos mesmos pontos: mensagens no monitor MIDI, faixa calibrada do sensor, junção do LDR e terra, USB Stack selecionada e upload básico da placa. Separar essas verificações facilita diagnosticar o controlador MIDI DIY sem mudar hardware e firmware ao mesmo tempo.
Esse também é um ponto de partida para outros experimentos com luz e movimento. A cadeia continua clara: um evento físico modifica a tensão do sensor, o firmware converte a leitura em MIDI e o instrumento receptor transforma esses dados em uma mudança musical.
