Note

Bonjour et bienvenue dans la Communauté Facebook des passionnés de Raspberry Pi, Arduino et ESP32 de SunFounder ! Plongez plus profondément dans l’univers des Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.

Pourquoi rejoindre ?

  • Support d’experts : Résolvez les problèmes après-vente et les défis techniques avec l’aide de notre communauté et de notre équipe.

  • Apprendre et partager : Échangez des astuces et des tutoriels pour améliorer vos compétences.

  • Aperçus exclusifs : Accédez en avant-première aux annonces de nouveaux produits et aux aperçus.

  • Réductions spéciales : Profitez de réductions exclusives sur nos produits les plus récents.

  • Promotions festives et cadeaux : Participez à des cadeaux et des promotions de vacances.

👉 Prêt à explorer et à créer avec nous ? Cliquez [Ici] et rejoignez-nous aujourd’hui !

1.2.2 Buzzer Passif

Introduction

Dans ce projet, nous allons apprendre à faire jouer de la musique à un buzzer passif.

Composants Nécessaires

Pour ce projet, nous avons besoin des composants suivants.

../_images/1.2.2_passive_buzzer_list.png

Il est vraiment pratique d’acheter un kit complet, voici le lien :

Nom

ARTICLES DANS CE KIT

LIEN

Kit Raphael

337

Raphael Kit

Vous pouvez également les acheter séparément via les liens ci-dessous.

INTRODUCTION DU COMPOSANT

LIEN D’ACHAT

Carte d’extension GPIO

ACHETER

Plaque d’expérimentation (Breadboard)

ACHETER

Fils de Liaison

ACHETER

Résistance

ACHETER

Buzzer

ACHETER

Transistor

ACHETER

Schéma

Dans cette expérience, un buzzer passif, un transistor NPN et une résistance de 1k sont utilisés entre la base du transistor et le GPIO pour protéger le transistor.

Lorsque GPIO17 reçoit différentes fréquences, le buzzer passif émet différents sons ; ainsi, le buzzer joue de la musique.

Nom T-Board

Physique

wiringPi

BCM

GPIO17

Pin 11

0

17

../_images/1.2.2_passive_buzzer_schematic.png

Procédures Expérimentales

Étape 1 : Construisez le circuit. (Le buzzer passif avec une carte de circuit imprimé verte au dos.)

../_images/1.2.2_PassiveBuzzer_circuit.png

Étape 2 : Changez de répertoire.

cd ~/raphael-kit/python-pi5

Étape 3 : Exécutez le code.

sudo python3 1.2.2_PassiveBuzzer_zero.py

Lorsque le code s’exécute, le buzzer joue un morceau de musique.

Avertissement

Si vous recevez le message d’erreur RuntimeError: Cannot determine SOC peripheral base address, veuillez consulter Si « gpiozero » ne fonctionne pas.

Code

Note

You can Modify/Reset/Copy/Run/Stop the code below. But before that, you need to go to the source code path like raphael-kit/python-pi5. After modifying the code, you can run it directly to see the effect.

#!/usr/bin/env python3
from gpiozero import TonalBuzzer
from time import sleep

# Initialize a TonalBuzzer connected to GPIO pin 17
tb = TonalBuzzer(17)  # Update this pin number based on your setup

def play(tune):
    """
    Play a musical tune using the buzzer.
    :param tune: List of tuples (note, duration), where each tuple represents a note and its duration.
    """
    for note, duration in tune:
        print(note)  # Output the current note being played
        tb.play(note)  # Play the note on the buzzer
        sleep(float(duration))  # Delay for the duration of the note
    tb.stop()  # Stop playing after the tune is complete

# Define a musical tune as a sequence of notes and durations
tune = [('C#4', 0.2), ('D4', 0.2), (None, 0.2),
    ('Eb4', 0.2), ('E4', 0.2), (None, 0.6),
    ('F#4', 0.2), ('G4', 0.2), (None, 0.6),
    ('Eb4', 0.2), ('E4', 0.2), (None, 0.2),
    ('F#4', 0.2), ('G4', 0.2), (None, 0.2),
    ('C4', 0.2), ('B4', 0.2), (None, 0.2),
    ('F#4', 0.2), ('G4', 0.2), (None, 0.2),
    ('B4', 0.2), ('Bb4', 0.5), (None, 0.6),
    ('A4', 0.2), ('G4', 0.2), ('E4', 0.2),
    ('D4', 0.2), ('E4', 0.2)]

try:
    play(tune)  # Execute the play function to start playing the tune

except KeyboardInterrupt:
    # Handle KeyboardInterrupt for graceful termination
    pass

Code Explanation

  1. Ces lignes importent la classe TonalBuzzer de la bibliothèque gpiozero pour contrôler le buzzer et la fonction sleep du module time pour créer des délais.

    #!/usr/bin/env python3
    from gpiozero import TonalBuzzer
    from time import sleep
    
  2. Cette ligne initialise un objet TonalBuzzer sur le port GPIO 17.

    # Initialize a TonalBuzzer connected to GPIO pin 17
    tb = TonalBuzzer(17)  # Update this pin number based on your setup
    
  3. La fonction play parcourt une liste de tuples représentant des notes musicales et leurs durées. Chaque note est jouée pendant sa durée spécifiée, et le buzzer s’arrête après avoir joué la mélodie.

    def play(tune):
        """
        Play a musical tune using the buzzer.
        :param tune: List of tuples (note, duration), where each tuple represents a note and its duration.
        """
        for note, duration in tune:
            print(note)  # Output the current note being played
            tb.play(note)  # Play the note on the buzzer
            sleep(float(duration))  # Delay for the duration of the note
        tb.stop()  # Stop playing after the tune is complete
    
  4. La mélodie est définie comme une séquence de notes (fréquence) et de durées (secondes).

    # Define a musical tune as a sequence of notes and durations
    tune = [('C#4', 0.2), ('D4', 0.2), (None, 0.2),
        ('Eb4', 0.2), ('E4', 0.2), (None, 0.6),
        ('F#4', 0.2), ('G4', 0.2), (None, 0.6),
        ('Eb4', 0.2), ('E4', 0.2), (None, 0.2),
        ('F#4', 0.2), ('G4', 0.2), (None, 0.2),
        ('C4', 0.2), ('B4', 0.2), (None, 0.2),
        ('F#4', 0.2), ('G4', 0.2), (None, 0.2),
        ('B4', 0.2), ('Bb4', 0.5), (None, 0.6),
        ('A4', 0.2), ('G4', 0.2), ('E4', 0.2),
        ('D4', 0.2), ('E4', 0.2)]
    
  5. La fonction play(tune) est appelée à l’intérieur d’un bloc try. Une interruption clavier (comme Ctrl+C) arrêtera le programme proprement.

    try:
        play(tune)  # Execute the play function to start playing the tune
    
    except KeyboardInterrupt:
        # Handle KeyboardInterrupt for graceful termination
        pass