.. note:: Ciao, benvenuto nella Community di SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts su Facebook! Approfondisci il mondo di Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati. **Perché unirti a noi?** - **Supporto tecnico esperto**: Risolvi problemi post-vendita e sfide tecniche con l'aiuto della nostra comunità e del nostro team. - **Impara e condividi**: Scambia consigli e tutorial per migliorare le tue competenze. - **Anteprime esclusive**: Ottieni accesso anticipato agli annunci di nuovi prodotti e alle anteprime. - **Sconti speciali**: Approfitta di sconti esclusivi sui nostri prodotti più recenti. - **Promozioni festive e giveaway**: Partecipa a giveaway e promozioni durante le festività. 👉 Sei pronto a esplorare e creare con noi? Clicca [|link_sf_facebook|] e unisciti oggi stesso! .. _1.2.1_py_pi5: 1.2.1 Buzzer Attivo ====================== Introduzione --------------- In questo progetto, impareremo a far suonare un buzzer attivo con l'aiuto di un transistor NPN. Componenti Necessari -------------------------------- Per questo progetto, avremo bisogno dei seguenti componenti. .. image:: ../python_pi5/img/1.2.1_active_buzzer_list.png È decisamente conveniente acquistare un kit completo, ecco il link: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nome - COMPONENTI NEL KIT - LINK * - Raphael Kit - 337 - |link_Raphael_kit| Puoi anche acquistarli separatamente dai link sottostanti. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUZIONE AI COMPONENTI - LINK D'ACQUISTO * - :ref:`cpn_gpio_extension_board` - |link_gpio_board_buy| * - :ref:`cpn_breadboard` - |link_breadboard_buy| * - :ref:`cpn_wires` - |link_wires_buy| * - :ref:`cpn_resistor` - |link_resistor_buy| * - :ref:`cpn_buzzer` - \- * - :ref:`cpn_transistor` - |link_transistor_buy| Schema Elettrico -------------------- In questo esperimento vengono utilizzati un buzzer attivo, un transistor NPN e una resistenza da 1 kΩ. La resistenza è collegata tra il pin GPIO e la base del transistor per limitare la corrente di base e proteggere il transistor. Quando il GPIO17 del Raspberry Pi fornisce un livello alto (3,3 V), il transistor va in saturazione, permettendo alla corrente di fluire attraverso il buzzer, che emette un suono. Quando il GPIO17 fornisce un livello basso (0 V), il transistor è spento e il buzzer rimane silenzioso. ============ ======== ======== === T-Board Name physical wiringPi BCM GPIO17 Pin 11 0 17 ============ ======== ======== === .. image:: ../python_pi5/img/1.2.1_active_buzzer_schematic.png Procedure Sperimentali ---------------------------- **Passo 1:** Costruisci il circuito. (Il buzzer attivo ha un adesivo bianco sulla superficie e un retro nero.) .. image:: ../python_pi5/img/1.2.1_ActiveBuzzer_circuit.png **Passo 2**: Apri il file del codice. .. raw:: html .. code-block:: cd ~/raphael-kit/python-pi5 **Passo 3**: Esegui. .. raw:: html .. code-block:: sudo python3 1.2.1_ActiveBuzzer_zero.py Il codice viene eseguito e il buzzer suona. .. warning:: Se viene visualizzato l'errore ``RuntimeError: Cannot determine SOC peripheral base address``, fare riferimento a :ref:`faq_soc`. **Code** .. note:: Puoi **Modificare/Resettare/Copiare/Eseguire/Fermare** il codice qui sotto. Ma prima, devi andare nella directory del codice come ``raphael-kit/python-pi5``. Dopo aver modificato il codice, puoi eseguirlo direttamente per vedere l'effetto. .. raw:: html .. code-block:: python #!/usr/bin/env python3 from gpiozero import Buzzer from time import sleep # Inizializza un oggetto Buzzer sul pin GPIO 17 buzzer = Buzzer(17) try: while True: # Accendi il buzzer print('Buzzer On') buzzer.on() sleep(0.1) # Mantieni il buzzer acceso per 0.1 secondi # Spegni il buzzer print('Buzzer Off') buzzer.off() sleep(0.1) # Mantieni il buzzer spento per 0.1 secondi except KeyboardInterrupt: # Gestisce l'interruzione da tastiera (Ctrl+C) per terminare correttamente lo script pass **Spiegazione del Codice** #. Queste righe importano la classe ``Buzzer`` dalla libreria ``gpiozero`` e la funzione ``sleep`` dal modulo ``time``. .. code-block:: python #!/usr/bin/env python3 from gpiozero import Buzzer from time import sleep #. Questa riga crea un oggetto ``Buzzer`` collegato al pin GPIO 17 del Raspberry Pi. .. code-block:: python # Inizializza un oggetto Buzzer sul pin GPIO 17 buzzer = Buzzer(17) #. In un ciclo infinito (``while True``), il buzzer si accende e si spegne ogni 0.1 secondi. Le istruzioni ``print`` forniscono un'uscita sulla console per ogni azione. .. code-block:: python try: while True: # Accendi il buzzer print('Buzzer On') buzzer.on() sleep(0.1) # Mantieni il buzzer acceso per 0.1 secondi # Spegni il buzzer print('Buzzer Off') buzzer.off() sleep(0.1) # Mantieni il buzzer spento per 0.1 secondi #. Questa parte garantisce che il programma possa essere terminato in modo sicuro utilizzando un'interruzione da tastiera (Ctrl+C) senza generare errori. .. code-block:: python except KeyboardInterrupt: # Gestisce l'interruzione da tastiera (Ctrl+C) per terminare correttamente lo script pass