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.2 Interruptor Deslizante
Introducción
En este proyecto, aprenderemos a utilizar un interruptor deslizante. Normalmente, el interruptor deslizante se suelda en una PCB como interruptor de encendido, pero aquí lo insertamos en la protoboard para mostrar su funcionamiento, aunque puede que no quede ajustado.
Componentes Necesarios
En este proyecto, necesitamos los siguientes componentes.

Diagrama de Conexión
Conecta el pin central del interruptor deslizante al GPIO17, y dos LEDs a los pines GPIO22 y GPIO27 respectivamente. Cuando deslizas el interruptor, podrás ver que los dos LEDs se encienden alternadamente.


Procedimientos del Experimento
Paso 1: Monta el circuito.

Paso 2: Ingresa al directorio del código.
cd ~/davinci-kit-for-raspberry-pi/python-pi5
Paso 3: Ejecuta el código.
sudo python3 2.1.2_Slider.py
Mientras el código se está ejecutando, si conectas el interruptor hacia la izquierda, el LED amarillo se encenderá; hacia la derecha, se encenderá el LED rojo.
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 para el control de GPIO
from time import sleep # Importa la función sleep para añadir retardos
# Inicializa el microinterruptor en el pin GPIO 17 con la resistencia de pull-up deshabilitada
micro_switch = Button(17, pull_up=False)
# Inicializa LED1 en el pin GPIO 22
led1 = LED(22)
# Inicializa LED2 en el pin GPIO 27
led2 = LED(27)
try:
# Bucle principal para controlar el estado de los LEDs basado en el estado del microinterruptor
while True:
if micro_switch.is_pressed: # Verifica si el microinterruptor está presionado
print(' LED1 ON ') # Muestra un mensaje de estado
led1.on() # Enciende LED1
led2.off() # Apaga LED2
else: # Si el microinterruptor no está presionado
print(' LED2 ON ') # Muestra un mensaje de estado
led1.off() # Apaga LED1
led2.on() # Enciende LED2
sleep(0.5) # Espera 0.5 segundos antes de volver a verificar el estado del interruptor
except KeyboardInterrupt:
# Maneja una interrupción de teclado (Ctrl+C) para una salida limpia del bucle
pass
Explicación del Código
Esta línea configura el script para ejecutarse con Python 3. Importa las clases
LED
yButton
de la libreríagpiozero
para el control de dispositivos GPIO, ysleep
detime
para añadir retardos.#!/usr/bin/env python3 from gpiozero import LED, Button # Importa las clases LED y Button para el control de GPIO from time import sleep # Importa la función sleep para añadir retardos
Inicializa un microinterruptor conectado al pin GPIO 17 con la resistencia de pull-up deshabilitada, y dos LEDs conectados a los pines GPIO 22 y 27.
# Inicializa el microinterruptor en el pin GPIO 17 con la resistencia de pull-up deshabilitada micro_switch = Button(17, pull_up=False) # Inicializa LED1 en el pin GPIO 22 led1 = LED(22) # Inicializa LED2 en el pin GPIO 27 led2 = LED(27)
El bucle principal verifica el estado del microinterruptor. Si está presionado, se enciende LED1 y se apaga LED2; si no está presionado, se apaga LED1 y se enciende LED2. El bucle se repite cada 0.5 segundos. Captura una interrupción de teclado (como Ctrl+C) para permitir una terminación ordenada del script.
try: # Bucle principal para controlar el estado de los LEDs basado en el estado del microinterruptor while True: if micro_switch.is_pressed: # Verifica si el microinterruptor está presionado print(' LED1 ON ') # Muestra un mensaje de estado led1.on() # Enciende LED1 led2.off() # Apaga LED2 else: # Si el microinterruptor no está presionado print(' LED2 ON ') # Muestra un mensaje de estado led1.off() # Apaga LED1 led2.on() # Enciende LED2 sleep(0.5) # Espera 0.5 segundos antes de volver a verificar el estado del interruptor except KeyboardInterrupt: # Maneja una interrupción de teclado (Ctrl+C) para una salida limpia del bucle pass