banner
Centre d'Information
Choisissez parmi notre large gamme de produits et services de classe mondiale pour une expérience vraiment remarquable.

Comment utiliser un buzzer pour écouter de la musique avec Raspberry Pi Pico

Jul 13, 2023

Avec un buzzer piézo bon marché, vous pouvez régler des alarmes ou jouer des morceaux entiers.

Que vous construisiez un jeu qui émet un bip lorsque vous perdez un tour, un réveil qui vous réveille ou simplement un joli écran qui joue de la musique 8 bits, un buzzer piézo-électrique à faible coût peut être un élément important de votre Raspberry Pi Pico. projet. Les buzzers extrêmement bon marché – vous pouvez souvent les trouver pour moins de 1 $ pièce – sont extrêmement simples à programmer en MicroPython et peuvent même faire varier la fréquence pour produire des notes de musique.

Il existe deux types de buzzers piézo : actifs et passifs. Les buzzers actifs feront du bruit s'ils sont simplement connectés à l'alimentation sans microcontrôleur impliqué, alors que les buzzers passifs ne le feront pas. Les buzzers passifs sont préférés pour ce type de projet car ils offrent une meilleure gamme de sons, même si lors de nos tests, les deux ont fonctionné.

Ci-dessous, nous allons vous montrer comment connecter le Raspberry Pi Pico à un buzzer piézo-électrique et le programmer en MicroPython pour jouer une courte mélodie.

Cela ne pourrait pas être plus simple. Vous connectez la broche de masse du buzzer à une broche GND du Pico et la broche positive du buzzer à une broche GPIO standard du pico, dans notre cas GP15. Notre buzzer passif n'avait pas d'étiquettes négatives ou positives sur ses broches et fonctionnait avec l'une ou l'autre branchée sur l'une ou l'autre des broches Pico.

1. Commencez par importer Pin et PWM depuis la bibliothèque machine et dormez depuis la bibliothèque utime.

2.Initialiser PWM(alias modulation de largeur d'impulsion) sur la broche 15 et attribuez-la au buzzer variable.

3. Attribuez une propriété de fréquence au buzzer. Vous devez choisir un nombre compris entre 10 et 12 000. Plus le chiffre est élevé, plus le son est aigu. Essayons 500.

4.Définir la propriété duty_u16de l'objet buzzerà 1000 . Cela rend le buzzer aussi fort que possible. Une valeur inférieure est plus silencieuse et 0 signifie aucun son. Compte tenu du silence de ces buzzers, le volume maximum n’est pas très fort du tout.

5.Définir un délai d'une secondeet puismettre le devoir à 0 pour que le son s'arrête. Si vous ne le faites pas, le buzz continuera, même une fois l'exécution du programme terminée.

Votre code final pour ce test simple devrait ressembler à ceci.

Comme vous pouvez utiliser différentes fréquences, vous pouvez créer une gamme complète de notes de musique. Il existe quelques listes de fréquences de notes musicales en ligne et beaucoup d'entre elles remontent à la bibliothèque de sons Arduino de Brett Hagman sur Github. Nous utiliserons ces valeurs pour créer une liste que nous pouvons utiliser pour lire n'importe quelle chanson au début de notre code.

1.Importez les bibliothèques nécessairesetinitialiser PWM sur la broche 15.

2.Créez un dictionnaire appelé notesavec les valeurs suivantes.

3.Créer une liste (alias tableau) de notes pour ta chanson. Utilisez la lettre P pour représenter les pauses dans la musique. Chaque note doit être entre guillemets.

Chapeau aux gens de ce fil pour avoir partagé les notes de ce célèbre riff.

4.Créez une fonction appelée playtonecela prendra n'importe quelle fréquence et la jouera à plein volume.

5.Créez une fonction appelée bequietcela fera taire le buzzer en changeant duty_u16 en 0.

6.Créez une fonction appelée playongque vous utiliserez pour parcourir le tableau de notes et jouer chacune d'elles ou faire une pause lorsqu'il verra P.

Voici ce qui se passe ici. Tout d’abord, nous créons une boucle for qui parcourt toutes les valeurs du tableau mysong. Si la valeur est égale à P, cela déclenche be quiet et, sinon, cela déclenche playtone. Notez que Playtone nécessite une valeur de fréquence numérique, nous devons donc obtenir le numéro de chaque note dans la liste des tonalités. Si nous jouons simplementtone(mysong[i]), il échouera car il essaiera de jouer la chaîne « E5 » au lieu de la fréquence 659, qui est l'entier dont il a besoin.

Pour chaque tonalité ou pause, le système maintient l'état pendant 0,3 seconde de sommeil. Si vous souhaitez un tempo plus rapide, vous pouvez réduire ce temps. Si vous souhaitez un tempo plus lent, augmentez-le.