.. note::
¡Hola! Bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook. Profundiza en Raspberry Pi, Arduino y ESP32 con otros entusiastas.
**¿Por qué unirse?**
- **Soporte experto**: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
- **Aprende y comparte**: Intercambia consejos y tutoriales para mejorar tus habilidades.
- **Previsualizaciones exclusivas**: Obtén acceso anticipado a nuevos anuncios de productos y adelantos.
- **Descuentos especiales**: Disfruta de descuentos exclusivos en nuestros productos más recientes.
- **Promociones festivas y sorteos**: Participa en sorteos y promociones de temporada.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo.
.. _1.2.1_py_pi5:
1.2.1 Zumbador Activo
=========================
Introducción
----------------
En este proyecto, aprenderemos a hacer sonar un zumbador activo con un transistor NPN.
Componentes Necesarios
---------------------------
En este proyecto, necesitaremos los siguientes componentes.
.. image:: ../python_pi5/img/1.2.1_active_buzzer_list.png
Es definitivamente conveniente comprar un kit completo, aquí está el enlace:
.. list-table::
:widths: 20 20 20
:header-rows: 1
* - Nombre
- COMPONENTES EN ESTE KIT
- ENLACE
* - Kit Raphael
- 337
- |link_Raphael_kit|
También puedes comprarlos por separado desde los enlaces a continuación.
.. list-table::
:widths: 30 20
:header-rows: 1
* - INTRODUCCIÓN AL COMPONENTE
- ENLACE DE COMPRA
* - :ref:`cpn_gpio_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|
Diagrama Esquemático
------------------------
En este experimento se utilizan un zumbador activo, un transistor NPN y una resistencia de 1 kΩ. La resistencia se conecta entre el pin GPIO y la base del transistor para limitar la corriente de base y proteger el transistor. Cuando el GPIO17 de la Raspberry Pi emite un nivel alto (3,3 V), el transistor entra en saturación, permitiendo el paso de corriente a través del zumbador, que emite sonido. Cuando el GPIO17 emite un nivel bajo (0 V), el transistor se apaga y el zumbador permanece en silencio.
============ ======== ======== ===
T-Board Name physical wiringPi BCM
GPIO17 Pin 11 0 17
============ ======== ======== ===
.. image:: ../python_pi5/img/1.2.1_active_buzzer_schematic.png
Procedimientos Experimentales
--------------------------------
**Paso 1:** Construye el circuito. (El zumbador activo tiene una etiqueta blanca en la superficie y un respaldo negro).
.. image:: ../python_pi5/img/1.2.1_ActiveBuzzer_circuit.png
**Paso 2:** Abre el archivo de código.
.. raw:: html
.. code-block::
cd ~/raphael-kit/python-pi5
**Paso 3:** Ejecuta el archivo.
.. raw:: html
.. code-block::
sudo python3 1.2.1_ActiveBuzzer_zero.py
Al ejecutar el código, el zumbador sonará.
.. warning::
Si recibe el mensaje de error ``RuntimeError: Cannot determine SOC peripheral base address``, consulte :ref:`faq_soc`
**Código**
.. note::
Puedes **Modificar/Restablecer/Copiar/Ejecutar/Detener** el código a continuación. Pero antes de eso, necesitas ir a la ruta del código fuente como ``raphael-kit/python-pi5``. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto.
.. raw:: html
.. code-block:: python
#!/usr/bin/env python3
from gpiozero import Buzzer
from time import sleep
# Initialize a Buzzer object on GPIO pin 17
buzzer = Buzzer(17)
try:
while True:
# Turn on the buzzer
print('Buzzer On')
buzzer.on()
sleep(0.1) # Keep the buzzer on for 0.1 seconds
# Turn off the buzzer
print('Buzzer Off')
buzzer.off()
sleep(0.1) # Keep the buzzer off for 0.1 seconds
except KeyboardInterrupt:
# Handle KeyboardInterrupt (Ctrl+C) for clean script termination
pass
**Explicación del Código**
#. Estas sentencias importan la clase ``Buzzer`` de la biblioteca ``gpiozero`` y la función ``sleep`` del módulo ``time``.
.. code-block:: python
#!/usr/bin/env python3
from gpiozero import Buzzer
from time import sleep
#. Esta línea crea un objeto ``Buzzer`` conectado al pin GPIO 17 de la Raspberry Pi.
.. code-block:: python
# Initialize a Buzzer object on GPIO pin 17
buzzer = Buzzer(17)
#. En un bucle infinito (``while True``), el zumbador se enciende y se apaga cada 0.1 segundos. Las declaraciones ``print`` proporcionan una salida en la consola para cada acción.
.. code-block:: python
try:
while True:
# Turn on the buzzer
print('Buzzer On')
buzzer.on()
sleep(0.1) # Keep the buzzer on for 0.1 seconds
# Turn off the buzzer
print('Buzzer Off')
buzzer.off()
sleep(0.1) # Keep the buzzer off for 0.1 seconds
#. Este segmento asegura que el programa pueda ser terminado de manera segura usando una interrupción del teclado (Ctrl+C) sin arrojar un error.
.. code-block:: python
except KeyboardInterrupt:
# Handle KeyboardInterrupt (Ctrl+C) for clean script termination
pass