.. note:: Ciao e benvenuto nella Community di Appassionati di SunFounder per Raspberry Pi, Arduino ed ESP32 su Facebook! Immergiti nel mondo di Raspberry Pi, Arduino ed ESP32 insieme a tanti altri appassionati. **Perché Unirsi?** - **Supporto da Esperti**: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra community e del nostro team. - **Impara e Condividi**: Scambia consigli e tutorial per migliorare le tue competenze. - **Anteprime Esclusive**: Ottieni accesso anticipato agli annunci dei nuovi prodotti e a contenuti inediti. - **Sconti Speciali**: Approfitta di sconti esclusivi sui nostri prodotti più recenti. - **Promozioni Festive e Giveaway**: Partecipa a concorsi e promozioni festive. 👉 Pronto a esplorare e creare con noi? Clicca su [|link_sf_facebook|] e unisciti oggi stesso! .. _1.2.2_py_pi5: 1.2.2 Buzzer Passivo ======================== Introduzione --------------- In questo progetto, impareremo a far suonare un buzzer passivo per riprodurre musica. Componenti Necessari ------------------------------ In questo progetto, abbiamo bisogno dei seguenti componenti. .. image:: ../python_pi5/img/1.2.2_passive_buzzer_list.png .. raw:: html
Schema Elettrico ------------------- In questo esperimento vengono utilizzati un buzzer passivo, un transistor NPN e una resistenza da 1k tra la base del transistor e il GPIO per proteggere il transistor. Quando al GPIO17 vengono assegnate frequenze diverse, il buzzer passivo emetterà suoni differenti; in questo modo, il buzzer riproduce musica. ============ ======== ======== === T-Board Name physical wiringPi BCM GPIO17 Pin 11 0 17 ============ ======== ======== === .. image:: ../python_pi5/img/1.2.2_passive_buzzer_schematic.png Procedure Sperimentali --------------------------- **Passo 1**: Costruisci il circuito. (Il buzzer passivo ha una scheda verde sul retro.) .. image:: ../python_pi5/img/1.2.1_ActiveBuzzer_circuit.png **Passo 2: Cambia directory.** .. raw:: html .. code-block:: cd ~/davinci-kit-for-raspberry-pi/python-pi5 **Passo 3: Esegui.** .. raw:: html .. code-block:: sudo python3 1.2.2_PassiveBuzzer.py Eseguendo il codice, il buzzer riproduce un brano musicale. .. warning:: Se compare l'errore ``RuntimeError: Cannot determine SOC peripheral base address``, consulta :ref:`faq_soc` **Codice** .. note:: Puoi **Modificare/Reimpostare/Copiare/Eseguire/Interrompere** il codice qui sotto. Prima di farlo, però, vai al percorso del codice sorgente, come ``davinci-kit-for-raspberry-pi/python-pi5``. Dopo aver modificato il codice, potrai eseguirlo direttamente per vedere il risultato. .. raw:: html .. code-block:: python #!/usr/bin/env python3 from gpiozero import TonalBuzzer from time import sleep # Inizializza un TonalBuzzer collegato al pin GPIO 17 tb = TonalBuzzer(17) # Aggiorna il numero di pin in base alla tua configurazione 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) # Mostra in console la nota in riproduzione tb.play(note) # Riproduce la nota con il buzzer sleep(float(duration)) # Ritarda per la durata della nota tb.stop() # Interrompe la riproduzione al termine della melodia # Definisce una melodia come sequenza di note e durate 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) # Esegui la funzione play per avviare la melodia except KeyboardInterrupt: # Gestisce l'interruzione da tastiera per terminare il programma in modo sicuro pass **Spiegazione del Codice** #. Queste righe importano la classe ``TonalBuzzer`` dalla libreria ``gpiozero`` per controllare il buzzer e la funzione ``sleep`` dal modulo ``time`` per creare ritardi. .. code-block:: python #!/usr/bin/env python3 from gpiozero import TonalBuzzer from time import sleep #. Questa riga inizializza un oggetto ``TonalBuzzer`` sul pin GPIO 17. .. code-block:: python # Inizializza un TonalBuzzer collegato al pin GPIO 17 tb = TonalBuzzer(17) # Aggiorna il numero di pin in base alla tua configurazione #. La funzione ``play`` itera su una lista di tuple rappresentanti note musicali e le loro durate. Ogni nota viene riprodotta per la durata specificata e il buzzer si ferma al termine della melodia. .. code-block:: python 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) # Mostra in console la nota in riproduzione tb.play(note) # Riproduce la nota con il buzzer sleep(float(duration)) # Ritarda per la durata della nota tb.stop() # Interrompe la riproduzione al termine della melodia #. La melodia è definita come sequenza di note (frequenza) e durate (secondi). .. code-block:: python # Definisce una melodia come sequenza di note e durate 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)] #. La funzione ``play(tune)`` è chiamata all'interno di un blocco ``try``. Un'interruzione da tastiera (Ctrl+C) interromperà il programma in modo sicuro. .. code-block:: python try: play(tune) # Esegui la funzione play per avviare la melodia except KeyboardInterrupt: # Gestisce l'interruzione da tastiera per terminare il programma in modo sicuro pass