Nota

¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook. Profundiza 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.

  • Aprender y Compartir: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Avances Exclusivos: Accede anticipadamente a anuncios de nuevos productos y adelantos exclusivos.

  • Descuentos Especiales: Disfruta de descuentos exclusivos en nuestros productos más nuevos.

  • Promociones Festivas y Sorteos: Participa en sorteos y promociones festivas.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy mismo!

2.1.5 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 de un pequeño ángulo.

Componentes Necesarios

En este proyecto, necesitamos los siguientes componentes.

../_images/2.1.5_tilt_switch_list.png

Es definitivamente conveniente comprar un kit completo, aquí está el enlace:

Nombre

ARTÍCULOS EN ESTE KIT

ENLACE

Kit Raphael

337

Raphael Kit

También puedes comprarlos por separado desde los enlaces a continuación.

INTRODUCCIÓN DE COMPONENTES

ENLACE DE COMPRA

Placa de Extensión GPIO

COMPRAR

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Resistor

COMPRAR

LED

COMPRAR

Interruptor de Inclinación

-

Diagrama Esquemático

../_images/2.1.5_tilt_switch_schematic_1.png ../_images/2.1.5_tilt_switch_schematic_2.png

Procedimientos Experimentales

Paso 1: Construir el circuito.

../_images/2.1.5_tilt_switch_circuit.png

Paso 2: Cambiar directorio.

cd ~/raphael-kit/python-pi5

Paso 3: Ejecutar.

sudo python3 2.1.5_Tilt_zero.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á. Colócalo nuevamente en posición vertical, y el LED verde se encenderá.

Advertencia

Si recibe el mensaje de error RuntimeError: Cannot determine SOC peripheral base address, consulte Si «gpiozero» no funciona.

Código

Nota

Puedes Modificar/Restablecer/Copiar/Ejecutar/Detener el código a continuación. Pero antes de eso, debes 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.

#!/usr/bin/env python3
from gpiozero import LED, Button

# Inicializar el botón para 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, resistor pull-up deshabilitado
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:  # Verificar si el sensor está inclinado
        print('    *************')
        print('    *   Tilt!   *')
        print('    *************')
        red_led.on()   # Encender LED rojo
        green_led.off()  # Apagar LED verde
    else:  # Si el sensor no está inclinado
        red_led.off()  # Apagar LED rojo
        green_led.on()  # Encender LED verde

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

except KeyboardInterrupt:
    # Manejar KeyboardInterrupt (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 de gpiozero para controlar dispositivos GPIO.

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

    # Inicializar el botón para 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, resistor pull-up deshabilitado
    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():
        """
        Detectar el estado del sensor de inclinación y controlar los LEDs.
        Enciende el LED rojo y apaga el LED verde cuando está inclinado.
        Apaga el LED rojo y enciende el LED verde cuando no está inclinado.
        """
        if TiltPin.is_pressed:  # Verificar si el sensor está inclinado
            print('    *************')
            print('    *   ¡Inclinación!   *')
            print('    *************')
            red_led.on()   # Encender LED rojo
            green_led.off()  # Apagar LED verde
        else:  # Si el sensor no está inclinado
            red_led.off()  # Apagar LED rojo
            green_led.on()  # Encender LED verde
    
  4. El bucle principal asigna la función detect a los eventos when_pressed y when_released del sensor de inclinación. El bloque try-except maneja un KeyboardInterrupt para una terminación ordenada.

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