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.

Diagrama de Conexión


Procedimientos del Experimento
Paso 1: Monta el circuito.

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
Esta línea configura el script para ejecutarse con Python 3 e importa
LED
yButton
desdegpiozero
para controlar los dispositivos GPIO.#!/usr/bin/env python3 from gpiozero import LED, Button
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
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
El bucle principal asigna la función
detect
tanto a los eventoswhen_pressed
comowhen_released
del sensor de inclinación. El bloquetry-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