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.

../_images/2.1.2_slide_switch_list.png

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.

../_images/2.1.2_slide_switch_schematic_1.png ../_images/2.1.2_slide_switch_schematic_2.png

Procedimientos del Experimento

Paso 1: Monta el circuito.

../_images/2.1.2_slide_switch_circuit.png

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

  1. Esta línea configura el script para ejecutarse con Python 3. Importa las clases LED y Button de la librería gpiozero para el control de dispositivos GPIO, y sleep de time 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
    
  2. 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)
    
  3. 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