Nota

¡Hola! Bienvenido a la comunidad de entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete más en Raspberry Pi, Arduino y ESP32 con otros entusiastas.

¿Por qué unirse?

  • Soporte experto: Resuelve problemas post-venta y desafíos técnicos con la ayuda de nuestra comunidad y equipo.

  • Aprender y compartir: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Avances exclusivos: Obtén acceso anticipado a nuevos anuncios de productos y adelantos.

  • Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más nuevos.

  • Promociones y sorteos festivos: Participa en sorteos y promociones de temporada.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy.

2.2.4 Módulo de Interruptor de Láminas

Introducción

En este proyecto, aprenderemos sobre el interruptor de láminas, que es un interruptor eléctrico que opera mediante un campo magnético aplicado.

Componentes Necesarios

En este proyecto, necesitamos los siguientes componentes.

../_images/2.2.4_reed_switch_list.png

Es definitivamente conveniente comprar un kit completo, aquí está el enlace:

Nombre

ARTÍCULOS EN ESTE KIT

ENLACE

Kit Raphael

337

Raphael Kit

También puedes comprarlos por separado en los enlaces a continuación.

INTRODUCCIÓN AL COMPONENTE

ENLACE DE COMPRA

Placa de Extensión GPIO

COMPRAR

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Resistor

COMPRAR

LED

COMPRAR

Módulo de Interruptor Reed

COMPRAR

Diagrama Esquemático

Nombre T-Board

física

wiringPi

BCM

GPIO17

Pin 11

0

17

GPIO27

Pin 13

2

27

GPIO22

Pin 15

3

22

../_images/2.2.4_reed_switch_schematic_1.png ../_images/2.2.4_reed_switch_schematic_2.png

Procedimientos Experimentales

Paso 1: Construye el circuito.

../_images/2.2.4_reed_switch_circuit.png

Paso 2: Cambia de directorio.

cd ~/raphael-kit/python-pi5

Paso 3: Ejecuta.

sudo python3 2.2.4_ReedSwitch_zero.py

El LED verde se encenderá cuando se ejecute el código. Si se coloca un imán cerca del módulo del interruptor de láminas, el LED rojo se encenderá; al retirar el imán, el LED verde se encenderá nuevamente.

Advertencia

Si recibe el mensaje de error RuntimeError: Cannot determine SOC peripheral base address, consulte Si «gpiozero» no funciona.

Código

Nota

Puedes Modificar/Restablecer/Copiar/Ejecutar/Detener el código a continuación. Pero antes de eso, debes 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.

#!/usr/bin/env python3
from gpiozero import LED, Button

# Inicializa el interruptor de láminas y los LEDs usando GPIO Zero
reed_switch = Button(17, pull_up=True)  # Interruptor de láminas en GPIO 17, usando una resistencia pull-up interna
green_led = LED(27)                     # LED verde conectado al pin GPIO 27
red_led = LED(22)                       # LED rojo conectado al pin GPIO 22

def update_leds():
    """
    Update the state of the LEDs based on the reed switch.
    Turns the red LED on and green LED off when the reed switch is pressed, and vice versa.
    """
    if reed_switch.is_pressed:
        green_led.off()          # Apaga el LED verde
        red_led.on()             # Enciende el LED rojo
    else:
        green_led.on()           # Enciende el LED verde
        red_led.off()            # Apaga el LED rojo

try:
    green_led.on()               # Enciende el LED verde al inicio
    while True:
        # Establece las funciones de callback para los cambios de estado del interruptor de láminas
        reed_switch.when_pressed = update_leds   # Callback cuando se presiona el interruptor
        reed_switch.when_released = update_leds  # Callback cuando se suelta el interruptor

except KeyboardInterrupt:
    # Limpia recursos y sale con Ctrl+C
    green_led.off()
    red_led.off()
    pass

Explicación del Código

  1. Esta línea especifica que el script se debe ejecutar usando Python 3. Importa LED y Button (usado para el interruptor de láminas) de la biblioteca gpiozero.

    #!/usr/bin/env python3
    from gpiozero import LED, Button
    
  2. Inicializa el interruptor de láminas en el pin GPIO 17 con una resistencia pull-up interna. También inicializa dos LEDs conectados a los pines GPIO 27 y 22.

    # Inicializa el interruptor de láminas y los LEDs usando GPIO Zero
    reed_switch = Button(17, pull_up=True)  # Interruptor de láminas en GPIO 17, usando una resistencia pull-up interna
    green_led = LED(27)                     # LED verde conectado al pin GPIO 27
    red_led = LED(22)                       # LED rojo conectado al pin GPIO 22
    
  3. Define la función update_leds, que actualiza los estados de los LEDs basándose en el estado del interruptor de láminas. El LED rojo se enciende y el LED verde se apaga cuando se presiona el interruptor, y lo contrario cuando se suelta.

    def update_leds():
        if reed_switch.is_pressed:
            green_led.off()          # Apaga el LED verde
            red_led.on()             # Enciende el LED rojo
        else:
            green_led.on()           # Enciende el LED verde
            red_led.off()            # Apaga el LED rojo
    
  4. Establece el estado inicial del LED verde a encendido. El bucle principal asigna la función update_leds como callbacks para los eventos when_pressed y when_released del interruptor de láminas. Incluye manejo de excepciones para KeyboardInterrupt para limpiar y salir del programa de manera ordenada.

    try:
        green_led.on()               # Enciende el LED verde al inicio
        while True:
            # Establece las funciones de callback para los cambios de estado del interruptor de láminas
            reed_switch.when_pressed = update_leds   # Callback cuando se presiona el interruptor
            reed_switch.when_released = update_leds  # Callback cuando se suelta el interruptor
    
    except KeyboardInterrupt:
        # Limpia recursos y sale con Ctrl+C
        green_led.off()
        red_led.off()
        pass