.. note::
¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Profundiza en 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.
- **Aprende y Comparte**: Intercambia consejos y tutoriales para mejorar tus habilidades.
- **Avances Exclusivos**: Obtén acceso anticipado a anuncios de nuevos productos y adelantos.
- **Descuentos Especiales**: Disfruta de descuentos exclusivos en nuestros productos más recientes.
- **Promociones y Sorteos Festivos**: Participa en sorteos y promociones navideñas.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo.
.. _2.1.3_py_pi5:
2.1.3 Módulo de Interruptor Táctil
======================================
Introducción
-------------------
En este proyecto, aprenderás sobre el módulo de interruptor táctil. Puede reemplazar los tipos tradicionales de interruptores con estas ventajas: operación conveniente, agradable sensación al tacto, control preciso y mínimo desgaste mecánico.
Componentes Necesarios
------------------------------
En este proyecto, necesitaremos los siguientes componentes.
.. image:: ../python_pi5/img/2.1.3_touch_switch_list.png
:width: 700
:align: center
Es definitivamente conveniente comprar un kit completo, aquí está el enlace:
.. list-table::
:widths: 20 20 20
:header-rows: 1
* - Nombre
- ARTÍCULOS 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 DEL 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_touch_switch`
- |link_touch_buy|
Diagrama Esquemático
-----------------------
.. image:: ../python_pi5/img/2.1.3_touch_switch_schematic.png
:width: 500
:align: center
Procedimientos Experimentales
------------------------------
**Paso 1:** Construir el circuito.
.. image:: ../python_pi5/img/2.1.3_touch_switch_circuit.png
:width: 700
:align: center
**Paso 2:** Cambiar directorio.
.. raw:: html
.. code-block::
cd ~/raphael-kit/python-pi5
**Paso 3:** Ejecutar.
.. raw:: html
.. code-block::
sudo python3 2.1.3_TouchSwitch_zero.py
Mientras el código se está ejecutando, el LED rojo se enciende; cuando tocas el módulo de interruptor táctil, el LED amarillo 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 # Importa las clases LED y Button de gpiozero
from time import sleep # Importa sleep para retrasos
# Inicializa el sensor táctil (Button) en el pin GPIO 17, con la resistencia pull-up deshabilitada
touch_sensor = Button(17, pull_up=False) # Adecuado para sensores que llevan el pin a bajo cuando se presionan
# Inicializa LED1 y LED2 conectados a los pines GPIO 22 y 27 respectivamente
led1 = LED(22) # LED1 conectado al pin GPIO 22
led2 = LED(27) # LED2 conectado al pin GPIO 27
try:
# Monitorea continuamente el estado del sensor táctil y controla los LEDs en consecuencia
while True:
if touch_sensor.is_pressed: # Check if the touch sensor is pressed
print('You touch it!') # Output message indicating sensor activation
led1.off() # Turn off LED1
led2.on() # Turn on LED2
else: # If the sensor is not pressed
led1.on() # Turn on LED1
led2.off() # Turn off LED2
sleep(0.5) # Pausa de 0.5 segundos antes de verificar nuevamente el estado del sensor
except KeyboardInterrupt:
# Maneja una interrupción de teclado (Ctrl+C) para salir del bucle limpiamente
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 # Importa las clases LED y Button de gpiozero
from time import sleep # Importa sleep para retrasos
#. Inicializa un sensor táctil (como un Button) en el pin GPIO 17 con pull-up deshabilitado, y dos LEDs en los pines GPIO 22 y 27.
.. code-block:: python
# Inicializa el sensor táctil (Button) en el pin GPIO 17, con la resistencia pull-up deshabilitada
touch_sensor = Button(17, pull_up=False) # Adecuado para sensores que llevan el pin a bajo cuando se presionan
# Inicializa LED1 y LED2 conectados a los pines GPIO 22 y 27 respectivamente
led1 = LED(22) # LED1 conectado al pin GPIO 22
led2 = LED(27) # LED2 conectado al pin GPIO 27
#. El bucle principal verifica el estado del sensor táctil. Cuando se toca, LED2 se enciende y LED1 se apaga; cuando no se toca, LED1 está encendido y LED2 apagado. El bucle se repite cada 0.5 segundos. Captura un KeyboardInterrupt (como Ctrl+C) para permitir la terminación limpia del script.
.. code-block:: python
try:
# Monitorea continuamente el estado del sensor táctil y controla los LEDs en consecuencia
while True:
if touch_sensor.is_pressed: # Check if the touch sensor is pressed
print('You touch it!') # Output message indicating sensor activation
led1.off() # Turn off LED1
led2.on() # Turn on LED2
else: # If the sensor is not pressed
led1.on() # Turn on LED1
led2.off() # Turn off LED2
sleep(0.5) # Pausa de 0.5 segundos antes de verificar nuevamente el estado del sensor
except KeyboardInterrupt:
# Maneja una interrupción de teclado (Ctrl+C) para salir del bucle limpiamente
pass