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.3 Interruptor de Inclinación

Introducción

Este es un interruptor de inclinación de bola con una bola de metal en su interior. Se utiliza para detectar inclinaciones en ángulos pequeños.

Componentes Necesarios

En este proyecto, necesitamos los siguientes componentes.

../_images/2.1.3_tilt_switch_list.png

Diagrama de Conexión

../_images/2.1.3_tilt_switch_schematic_1.png ../_images/2.1.3_tilt_switch_schematic_2.png

Procedimientos del Experimento

Paso 1: Monta el circuito.

../_images/2.1.3_tilt_switch_circuit.png

Paso 2: Cambia al directorio.

cd ~/davinci-kit-for-raspberry-pi/python-pi5

Paso 3: Ejecuta el código.

sudo python3 2.1.3_Tilt.py

Coloca el sensor de inclinación en posición vertical, y el LED verde se encenderá. Si lo inclinas, aparecerá «Tilt!» en la pantalla y el LED rojo se encenderá. Al volver a ponerlo en posición vertical, el LED verde se encenderá de nuevo.

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

# Inicializa el sensor de inclinación y los LEDs usando GPIO Zero
TiltPin = Button(17, pull_up=False)  # Sensor de inclinación conectado al pin GPIO 17, con resistencia de pull-up desactivada
green_led = LED(27)  # LED verde conectado al pin GPIO 27
red_led = LED(22)    # LED rojo conectado al pin GPIO 22

def detect():
    """
    Detect the tilt sensor state and control the LEDs.
    Turns on the red LED and turns off the green LED when tilted.
    Turns off the red LED and turns on the green LED when not tilted.
    """
    if TiltPin.is_pressed:  # Verifica si el sensor está inclinado
        print('    *************')
        print('    *   Tilt!   *')
        print('    *************')
        red_led.on()   # Enciende el LED rojo
        green_led.off()  # Apaga el LED verde
    else:  # Si el sensor no está inclinado
        red_led.off()  # Apaga el LED rojo
        green_led.on()  # Enciende el LED verde

try:
    while True:
        # Verifica continuamente el estado del sensor de inclinación y actualiza los LEDs
        TiltPin.when_pressed = detect
        TiltPin.when_released = detect

except KeyboardInterrupt:
    # Maneja una interrupción de teclado (Ctrl+C) para salir del bucle de manera ordenada
    pass

Explicación del Código

  1. Esta línea configura el script para ejecutarse con Python 3 e importa LED y Button desde gpiozero para controlar los dispositivos GPIO.

    #!/usr/bin/env python3
    from gpiozero import LED, Button
    
  2. Inicializa el sensor de inclinación conectado al pin GPIO 17 (con resistencia de pull-up desactivada) y dos LEDs conectados a los pines GPIO 27 y 22.

    # Inicializa el sensor de inclinación y los LEDs usando GPIO Zero
    TiltPin = Button(17, pull_up=False)  # Sensor de inclinación conectado al pin GPIO 17, con resistencia de pull-up desactivada
    green_led = LED(27)  # LED verde conectado al pin GPIO 27
    red_led = LED(22)   # LED rojo conectado al pin GPIO 22
    
  3. Define la función detect, que verifica el estado del sensor de inclinación. Si está inclinado, enciende el LED rojo y apaga el LED verde. Si no está inclinado, hace lo contrario.

    def detect():
        """
        Detect the tilt sensor state and control the LEDs.
        Turns on the red LED and turns off the green LED when tilted.
        Turns off the red LED and turns on the green LED when not tilted.
        """
        if TiltPin.is_pressed:  # Verifica si el sensor está inclinado
            print('    *************')
            print('    *   Tilt!   *')
            print('    *************')
            red_led.on()   # Enciende el LED rojo
            green_led.off()  # Apaga el LED verde
        else:  # Si el sensor no está inclinado
            red_led.off()  # Apaga el LED rojo
            green_led.on()  # Enciende el LED verde
    
  4. El bucle principal asigna la función detect tanto a los eventos when_pressed como when_released del sensor de inclinación. El bloque try-except maneja una interrupción de teclado para una terminación ordenada.

    try:
        while True:
            # Verifica continuamente el estado del sensor de inclinación y actualiza los LEDs
            TiltPin.when_pressed = detect
            TiltPin.when_released = detect
    
    except KeyboardInterrupt:
        # Maneja una interrupción de teclado (Ctrl+C) para salir del bucle de manera ordenada
        pass