############################
# E031_SENSOR_MOVIMIENTO.PY: Sensor de movimiento HC-SR501©
# ENTRADAS: Movimiento detectado por sensor
# SALIDAS: LED y mensajes en pantalla
############################
from machine import Pin, Timer
import time
# Configuración de pines
pin_sensor = 14 # Pin conectado al sensor de movimiento
pin_led = 25 # Pin conectado al LED rojo
tiempo = 2000 # Tiempo timer en m segundos
cuenta = 0 # Contador de activación
# Configura sensor en entrada y LED salida
sensor_movimiento = Pin(pin_sensor, Pin.IN)
led_rojo = Pin(pin_led, Pin.OUT)
led_rojo.off() # Apaga LED inicialmente
# Función para apagar el LED
def apagar_led(_): # Debe incluir un argumento
global cuenta
led_rojo.off() # Apaga LED rojo
print('LED apagado...')
cuenta = 0 # Inicio contador de activación
# Función para detectar movimiento
def detectar_movimiento():
global cuenta
if sensor_movimiento.value() == 1: # Si se detecta movimiento
cuenta+=1 # Incrementa contador de activación
print(f'[{cuenta}] ¡Movimiento detectado!')
led_rojo.on() # Enciende LED
# Configura temporizador para apagar LED en [tiempo] m segundos
Timer(0).init(period=tiempo, mode=Timer.ONE_SHOT, callback=apagar_led)
print('SENSOR DE MOVIMIENTO HC-SR501©')
print('Aproxímate al sensor...')
# Bucle principal para escanear el estado del sensor
try:
while True:
detectar_movimiento()
time.sleep(.5) # Esperar .5 segundos antes de volver a escanear
except KeyboardInterrupt:
print('Programa terminado...')
led_rojo.off() # Apaga LED
Timer(0).deinit() # Detiene timer