.. note:: ¡Hola, bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook! Sumérgete más en Raspberry Pi, Arduino y ESP32 con otros entusiastas. **¿Por qué unirse?** - **Soporte experto**: Resuelve problemas post-venta y desafíos técnicos con la ayuda de nuestra comunidad y equipo. - **Aprende y comparte**: Intercambia consejos y tutoriales para mejorar tus habilidades. - **Previews 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 y sorteos festivos**: Participa en sorteos y promociones festivas. 👉 ¿Listo para explorar y crear con nosotros? ¡Haz clic en [|link_sf_facebook|] y únete hoy! .. _2.1.5_py: 2.1.5 Interruptor de Inclinación ====================================== Introducción ---------------- Este es un interruptor de inclinación de bola con una bola metálica en su interior. Se utiliza para detectar inclinaciones de un pequeño ángulo. Componentes Necesarios ------------------------------ En este proyecto, necesitamos los siguientes componentes. .. image:: ../img/list_2.1.3_tilt_switch.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_tilt_switch` - \- Diagrama Esquemático ------------------------- .. image:: ../img/image307.png .. image:: ../img/image308.png Procedimientos Experimentales ----------------------------------- **Paso 1:** Construir el circuito. .. image:: ../img/image169.png **Paso 2:** Cambiar el directorio. .. raw:: html .. code-block:: cd ~/raphael-kit/python/ **Paso 3:** Ejecutar. .. raw:: html .. code-block:: sudo python3 2.1.5_Tilt.py Coloca el interruptor de inclinación verticalmente y el LED verde se encenderá. Si lo inclinas, se imprimirá "¡Inclinación!" en la pantalla y el LED rojo se encenderá. Vuelve a colocarlo verticalmente y el LED verde se encenderá de nuevo. **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``. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto. .. raw:: html .. code-block:: python import RPi.GPIO as GPIO TiltPin = 17 Gpin = 27 Rpin = 22 def setup(): GPIO.setmode(GPIO.BCM) # Numerar GPIOs por ubicación física GPIO.setup(Gpin, GPIO.OUT) # Establecer el modo del pin del LED verde como salida GPIO.setup(Rpin, GPIO.OUT) # Establecer el modo del pin del LED rojo como salida GPIO.setup(TiltPin, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Establecer el modo del pin de inclinación como entrada y activar resistencia pull-up GPIO.add_event_detect(TiltPin, GPIO.BOTH, callback=detect, bouncetime=200) def Led(x): if x == 0: GPIO.output(Rpin, 1) GPIO.output(Gpin, 0) if x == 1: GPIO.output(Rpin, 0) GPIO.output(Gpin, 1) def Print(x): if x == 0: print (' *************') print (' * Tilt! *') print (' *************') def detect(chn): Led(GPIO.input(TiltPin)) Print(GPIO.input(TiltPin)) def loop(): while True: pass def destroy(): GPIO.output(Gpin, GPIO.HIGH) # Apagar LED verde GPIO.output(Rpin, GPIO.HIGH) # Apagar LED rojo GPIO.cleanup() # Liberar recursos if __name__ == '__main__': # El programa empieza aquí setup() try: loop() except KeyboardInterrupt: # Cuando se presiona 'Ctrl+C', se ejecutará la función destroy() destroy() **Explicación del Código** .. code-block:: python GPIO.add_event_detect(TiltPin, GPIO.BOTH, callback=detect, bouncetime=200) Configurar la detección en TiltPin, y la función de callback detect. .. code-block:: python def Led(x): if x == 0: GPIO.output(Rpin, 1) GPIO.output(Gpin, 0) if x == 1: GPIO.output(Rpin, 0) GPIO.output(Gpin, 1) Definir una función Led() para encender o apagar los dos LEDs. Si x=0, el LED rojo se enciende; de lo contrario, el LED verde se encenderá. .. code-block:: python def Print(x): if x == 0: print (' *************') print (' * Tilt! *') print (' *************') Crear una función Print() para imprimir los caracteres en la pantalla. .. code-block:: python def detect(chn): Led(GPIO.input(TiltPin)) Print(GPIO.input(TiltPin)) Definir una función de callback para la inclinación. Obtener el valor leído del interruptor de inclinación, luego la función Led() controla el encendido o apagado de los dos LEDs dependiendo del valor leído del interruptor de inclinación. Imagen del Fenómeno ---------------------- .. image:: ../img/image170.jpeg