.. note:: ¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 junto a otros entusiastas. **¿Por qué unirse?** - **Soporte Experto**: Resuelve problemas postventa y desafíos técnicos con ayuda de nuestra comunidad y equipo. - **Aprende y Comparte**: Intercambia consejos y tutoriales para mejorar tus habilidades. - **Avances Exclusivos**: Accede anticipadamente a anuncios de nuevos productos y adelantos exclusivos. - **Descuentos Especiales**: Aprovecha descuentos exclusivos en nuestros productos más recientes. - **Promociones Festivas y Sorteos**: Participa en sorteos y promociones especiales. 👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo. .. _2.1.1_py_pi5: 2.1.1 Botón ============== Introducción -------------- En este proyecto, aprenderemos a encender o apagar el LED usando un botón. Componentes Necesarios ------------------------- En este proyecto, necesitamos los siguientes componentes. .. image:: ../python_pi5/img/2.1.1_Button_list.png .. raw:: html
Diagrama de Conexión ----------------------- Utiliza un botón normalmente abierto como entrada para la Raspberry Pi; la conexión se muestra en el diagrama de abajo. Cuando se presiona el botón, el GPIO18 se elevará a un nivel alto (3.3V). Podemos detectar el estado del GPIO18 mediante programación. Es decir, si el GPIO18 cambia a un nivel alto, significa que el botón ha sido presionado. Al detectar esta señal, se puede ejecutar el código correspondiente para encender el LED. .. note:: La pata más larga del LED es el ánodo y la más corta es el cátodo. .. image:: ../python_pi5/img/2.1.1_Button_schematic_1.png .. image:: ../python_pi5/img/2.1.1_Button_schematic_2.png Procedimientos del Experimento ----------------------------------- **Paso 1**: Monta el circuito. .. image:: ../python_pi5/img/2.1.1_Button_circuit.png **Paso 2**: Abre el archivo de código. .. raw:: html .. code-block:: cd ~/davinci-kit-for-raspberry-pi/python-pi5 **Paso 3**: Ejecuta el código. .. raw:: html .. code-block:: sudo python3 2.1.1_Button.py Ahora, presiona el botón y el LED se encenderá; suelta el botón y el LED se apagará. .. warning:: Si aparece el mensaje de error ``RuntimeError: Cannot determine SOC peripheral base address``, consulta :ref:`faq_soc` **Código** .. note:: Puedes **Modificar/Restablecer/Copiar/Ejecutar/Detener** el código a continuación. Antes de eso, asegúrate de estar en la ruta del código fuente, como ``davinci-kit-for-raspberry-pi/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 LED, Button # Importa las clases LED y Button de gpiozero from signal import pause # Importa la función pause del módulo signal # Inicializa un objeto LED en el pin GPIO 17 led = LED(17) # Inicializa un objeto Button en el pin GPIO 18 button = Button(18) # Asocia el evento "when_pressed" del botón con el método on() del LED button.when_pressed = led.on # Asocia el evento "when_released" del botón con el método off() del LED button.when_released = led.off # Ejecuta un bucle de eventos que espera acciones del botón y mantiene el script en ejecución pause() **Explicación del Código** #. El script está escrito en Python3 e importa las clases ``LED`` y ``Button`` de la librería ``gpiozero``, y ``pause`` del módulo ``signal``. .. code-block:: python #!/usr/bin/env python3 from gpiozero import LED, Button # Importa las clases LED y Button de gpiozero from signal import pause # Importa la función pause del módulo signal #. Inicializa un objeto ``LED`` en el pin GPIO 17 y un objeto ``Button`` en el pin GPIO 18. .. code-block:: python # Inicializa un objeto LED en el pin GPIO 17 led = LED(17) # Inicializa un objeto Button en el pin GPIO 18 button = Button(18) #. Configura manejadores de eventos para que el LED se encienda cuando el botón se presione y se apague cuando el botón se suelte. .. code-block:: python # Asocia el evento "when_pressed" del botón con el método on() del LED button.when_pressed = led.on # Asocia el evento "when_released" del botón con el método off() del LED button.when_released = led.off #. Mantiene el script en un bucle de eventos, esperando que se presione o suelte el botón. .. code-block:: python # Ejecuta un bucle de eventos que espera acciones del botón y mantiene el script en ejecución pause()