Nota

¡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 [Aquí] y únete hoy mismo.

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.

../_images/2.1.1_Button_list.png

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.

Nota

La pata más larga del LED es el ánodo y la más corta es el cátodo.

../_images/2.1.1_Button_schematic_1.png ../_images/2.1.1_Button_schematic_2.png

Procedimientos del Experimento

Paso 1: Monta el circuito.

../_images/2.1.1_Button_circuit.png

Paso 2: Abre el archivo de código.

cd ~/davinci-kit-for-raspberry-pi/python-pi5

Paso 3: Ejecuta el código.

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á.

Advertencia

Si aparece el mensaje de error RuntimeError: Cannot determine SOC peripheral base address, consulta Si gpiozero no funciona.

Código

Nota

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.

#!/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

  1. El script está escrito en Python3 e importa las clases LED y Button de la librería gpiozero, y pause del módulo signal.

    #!/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
    
  2. Inicializa un objeto LED en el pin GPIO 17 y un objeto Button en el pin GPIO 18.

    # Inicializa un objeto LED en el pin GPIO 17
    led = LED(17)
    # Inicializa un objeto Button en el pin GPIO 18
    button = Button(18)
    
  3. 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.

    # 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
    
  4. Mantiene el script en un bucle de eventos, esperando que se presione o suelte el botón.

    # Ejecuta un bucle de eventos que espera acciones del botón y mantiene el script en ejecución
    pause()