.. note:: ¡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 con otros entusiastas. **¿Por qué unirse?** - **Soporte experto**: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo. - **Aprender y compartir**: Intercambia consejos y tutoriales para mejorar tus habilidades. - **Preestrenos exclusivos**: Obtén acceso anticipado a nuevos anuncios de productos y adelantos. - **Descuentos especiales**: Disfruta de descuentos exclusivos en nuestros productos más recientes. - **Promociones festivas y sorteos**: Participa en sorteos y promociones de temporada. 👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo! .. _2.1.2_py_pi5: 2.1.2 Microinterruptor ========================== Introducción ------------------------ En este proyecto, aprenderemos cómo usar un microinterruptor. Un microinterruptor es un pequeño interruptor muy sensible que requiere una compresión mínima para activarse. Debido a que son fiables y sensibles, los microinterruptores se utilizan a menudo como dispositivos de seguridad. Se utilizan para evitar que las puertas se cierren si algo o alguien está en el camino y en otras aplicaciones similares. Componentes Necesarios --------------------------------- En este proyecto, necesitamos los siguientes componentes. .. image:: ../python_pi5/img/2.1.2_micro_switch_list.png Es definitivamente conveniente comprar un kit completo, aquí está el enlace: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nombre - ELEMENTOS EN ESTE KIT - ENLACE * - Kit Raphael - 337 - |link_Raphael_kit| También puedes comprarlos por separado en los enlaces a continuación. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUCCIÓN AL COMPONENTE - ENLACE DE COMPRA * - :ref:`cpn_gpio_board` - |link_gpio_board_buy| * - :ref:`cpn_breadboard` - |link_breadboard_buy| * - :ref:`cpn_wires` - |link_wires_buy| * - :ref:`cpn_resistor` - |link_resistor_buy| * - :ref:`cpn_led` - |link_led_buy| * - :ref:`cpn_micro_switch` - \- * - :ref:`cpn_capacitor` - |link_capacitor_buy| Diagrama Esquemático -------------------------- Conecta el pin izquierdo del microinterruptor a GPIO17, y dos LEDs a los pines GPIO22 y GPIO27 respectivamente. Luego, cuando presionas y sueltas el brazo móvil del microinterruptor, puedes ver los dos LEDs encenderse alternativamente. .. image:: ../python_pi5/img/2.1.2_micro_switch_schematic_1.png .. image:: ../python_pi5/img/2.1.2_micro_switch_schematic_2.png Procedimientos Experimentales --------------------------------- **Paso 1:** Monta el circuito. .. image:: ../python_pi5/img/2.1.2_micro_switch_circuit.png **Paso 2**: Accede a la carpeta del código. .. raw:: html .. code-block:: cd ~/raphael-kit/python-pi5 **Paso 3**: Ejecuta. .. raw:: html .. code-block:: sudo python3 2.1.2_MicroSwitch_zero.py Mientras el código se está ejecutando, presiona el brazo móvil, entonces el LED amarillo se enciende; suelta el brazo móvil, el LED rojo se enciende. .. warning:: Si recibe el mensaje de error ``RuntimeError: Cannot determine SOC peripheral base address``, consulte :ref:`faq_soc` **Código** .. note:: Puedes **Modificar/Restablecer/Copiar/Ejecutar/Detener** el código a continuación. Pero antes de eso, necesitas 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. .. raw:: html .. code-block:: python #!/usr/bin/env python3 from gpiozero import LED, Button # Importar clases LED y Button de gpiozero from time import sleep # Importar función sleep para retrasos # Inicializar el microinterruptor en el pin GPIO 17 sin activar el resistor pull-up micro_switch = Button(17, pull_up=False) # Inicializar LED1 conectado al pin GPIO 22 led1 = LED(22) # Inicializar LED2 conectado al pin GPIO 27 led2 = LED(27) try: # Comprobar continuamente el estado del microinterruptor y controlar los LEDs en consecuencia while True: if micro_switch.is_pressed: # If the micro switch is pressed print('LED1 ON') # Print a message to the console led1.on() # Turn on LED1 led2.off() # Turn off LED2 else: # If the micro switch is not pressed print(' LED2 ON') # Print a message to the console led1.off() # Turn off LED1 led2.on() # Turn on LED2 sleep(0.5) # Pausar 0.5 segundos antes de comprobar el interruptor nuevamente except KeyboardInterrupt: # Manejar KeyboardInterrupt (Ctrl+C) para salir del bucle de forma segura pass **Explicación del Código** #. Esta línea configura el script para ejecutarse con Python 3. Importa ``LED`` y ``Button`` de ``gpiozero`` para controlar dispositivos GPIO, y ``sleep`` de ``time`` para retrasos. .. code-block:: python #!/usr/bin/env python3 from gpiozero import LED, Button # Importar las clases LED y Button de gpiozero from time import sleep # Importar la función sleep para retrasos #. Inicializa un microinterruptor conectado al pin GPIO 17 con la resistencia pull-up deshabilitada, y dos LEDs conectados a los pines GPIO 22 y 27. .. code-block:: python # Inicializar el microinterruptor en el pin GPIO 17 sin activar la resistencia pull-up micro_switch = Button(17, pull_up=False) # Inicializar LED1 conectado al pin GPIO 22 led1 = LED(22) # Inicializar LED2 conectado al pin GPIO 27 led2 = LED(27) #. En el bucle principal, se verifica el estado del microinterruptor. Si está presionado, el LED1 se enciende y el LED2 se apaga. Si no está presionado, el LED1 se apaga y el LED2 se enciende. El bucle se repite cada 0.5 segundos. Captura un KeyboardInterrupt (como Ctrl+C) para permitir la terminación segura del script. .. code-block:: python try: # Comprobar continuamente el estado del microinterruptor y controlar los LEDs en consecuencia while True: if micro_switch.is_pressed: # If the micro switch is pressed print('LED1 ON') # Print a message to the console led1.on() # Turn on LED1 led2.off() # Turn off LED2 else: # If the micro switch is not pressed print(' LED2 ON') # Print a message to the console led1.off() # Turn off LED1 led2.on() # Turn on LED2 sleep(0.5) # Pausar por 0.5 segundos antes de verificar el interruptor nuevamente except KeyboardInterrupt: # Manejar KeyboardInterrupt (Ctrl+C) para salir del bucle de forma segura pass