banner
Centro de notícias
Escolha entre nossa ampla gama de produtos e serviços de classe mundial para uma experiência verdadeiramente notável.

Como usar uma campainha para tocar música com Raspberry Pi Pico

Jul 13, 2023

Com uma campainha piezoelétrica barata, você pode definir alarmes ou tocar músicas inteiras.

Esteja você construindo um jogo que emite um sinal sonoro quando você perde uma jogada, um despertador que o acorda ou apenas um display bonito que toca música de 8 bits, uma campainha piezoelétrica de baixo custo pode ser uma grande parte do seu Raspberry Pi Pico projeto. As campainhas extremamente baratas - muitas vezes você pode encontrá-las por menos de US$ 1 cada - são extremamente simples de programar no MicroPython e podem até variar a frequência para produzir notas musicais.

Existem dois tipos de campainhas piezoelétricas: ativas e passivas. As campainhas ativas farão barulho se estiverem apenas conectadas à energia, sem nenhum microcontrolador envolvido, enquanto as passivas não. Campainhas passivas são preferidas para esse tipo de projeto porque oferecem uma melhor gama de sons, embora em nossos testes ambas tenham funcionado.

Abaixo, mostraremos como conectar o Raspberry Pi Pico a uma campainha piezo e programá-lo em MicroPython para tocar uma música curta.

Isto não poderia ser mais simples. Você conecta o pino terra da campainha a um pino GND no Pico e o pino positivo da campainha a um pino GPIO padrão no pico, no nosso caso GP15. Nossa campainha passiva não tinha rótulos negativos ou positivos em seus pinos e funcionava com qualquer um deles conectado a qualquer pino do Pico.

1. Comece importando Pin e PWM da biblioteca da máquina e durma da biblioteca utime.

2.Inicializar PWM(também conhecida como modulação por largura de pulso) no pino 15 e atribua-o à campainha variável.

3. Atribua uma propriedade de frequência à campainha. Você deve escolher um número que varia entre 10 e 12.000. Quanto maior o número, mais agudo será o som. Vamos tentar 500.

4.Defina a propriedade duty_u16do objeto da campainhapara 1000 . Isso torna a campainha o mais alta possível. Um valor mais baixo é mais silencioso e 0 não significa nenhum som. Considerando o quão silenciosas essas campainhas são, o volume máximo não é muito alto.

5.Defina um atraso de 1 segundoe entãodefinir dever para 0 para que o som pare. Se você não fizer isso, o zumbido continuará, mesmo depois que o programa terminar de ser executado.

Seu código final para este teste simples deve ficar assim.

Como você pode usar frequências diferentes, poderá criar uma gama completa de notas musicais. Existem algumas listas de frequências de notas musicais online e muitas delas remontam à biblioteca de tons Arduino de Brett Hagman no Github. Usaremos esses valores para criar uma lista que podemos usar para tocar qualquer música no início do nosso código.

1.Importe as bibliotecas necessáriaseinicialize o PWM no pino 15.

2.Crie um dicionário chamado notascom os seguintes valores.

3.Crie uma lista (também conhecido como matriz) de notas para sua música. Use a letra P para representar pausas na música. Cada nota deve estar entre aspas.

Gorjeta para o pessoal deste tópico por compartilhar as notas desse famoso riff.

4.Crie uma função chamada playtoneque pegará qualquer frequência e tocará no volume máximo.

5.Crie uma função chamada bequietisso silenciará a campainha alterando duty_u16 para 0.

6.Crie uma função chamada playongque você usará para percorrer a matriz de notas e tocar cada uma ou pausar quando vir P.

Aqui está o que está acontecendo aqui. Primeiro, criamos um loop for que percorre todos os valores do array mysong. Se o valor for igual a P, aciona o silêncio e, caso contrário, aciona o playtone. Observe que o playtone requer um valor numérico de frequência, portanto, precisamos obter o número de cada nota na lista de tons. Se apenas tocarmos playtone(mysong[i]), ele falhará porque tentará tocar a string “E5”, em vez da frequência 659, que é o número inteiro necessário.

Para cada tom ou pausa, o sistema mantém o estado durante 0,3 segundos de suspensão. Se quiser um andamento mais rápido, você pode diminuir esse tempo. Se você quiser um andamento mais lento, aumente-o.