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.
Es definitivamente conveniente comprar un kit completo, aquí está el enlace:
Nombre |
ARTÍCULOS EN ESTE KIT |
ENLACE |
|---|---|---|
Kit Raphael |
337 |
También puedes comprarlos por separado en los enlaces a continuación.
INTRODUCCIÓN AL COMPONENTE |
ENLACE DE COMPRA |
|---|---|
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 |
Procedimientos Experimentales
Paso 1: Construye el circuito.
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
Esta línea especifica que el script se debe ejecutar usando Python 3. Importa
LEDyButton(usado para el interruptor de láminas) de la biblioteca gpiozero.#!/usr/bin/env python3 from gpiozero import LED, Button
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
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
Establece el estado inicial del LED verde a encendido. El bucle principal asigna la función
update_ledscomo callbacks para los eventoswhen_pressedywhen_releaseddel 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