.. 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