Nota

¡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 [Aquí] y únete hoy!

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.

../_images/list_2.1.3_tilt_switch.png

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

Nombre

ELEMENTOS EN ESTE KIT

ENLACE

Kit Raphael

337

Raphael Kit

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

INTRODUCCIÓN AL COMPONENTE

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/image307.png ../_images/image308.png

Procedimientos Experimentales

Paso 1: Construir el circuito.

../_images/image169.png

Paso 2: Cambiar el directorio.

cd ~/raphael-kit/python/

Paso 3: Ejecutar.

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

Nota

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.

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

GPIO.add_event_detect(TiltPin, GPIO.BOTH, callback=detect, bouncetime=200)

Configurar la detección en TiltPin, y la función de callback detect.

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

def Print(x):
    if x == 0:
        print ('    *************')
        print ('    *   Tilt!   *')
        print ('    *************')

Crear una función Print() para imprimir los caracteres en la pantalla.

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

../_images/image170.jpeg