# Importación de las bibliotecas necesarias
from machine import Pin, time_pulse_us, ADC # Importa funciones relacionadas con GPIO, medición de pulsos de tiempo y ADC
import time # Importa funciones relacionadas con el tiempo
from math import pow # Importa la función de potencia
# Definición de pines para cada sensor y LED
sensor1_trigger = 13 # Pin de activación del primer sensor ultrasónico
sensor1_echo = 12 # Pin de eco del primer sensor ultrasónico
sensor1_led = 2 # Pin del LED asociado al primer sensor
sensor2_trigger = 15 # Pin de activación del segundo sensor ultrasónico
sensor2_echo = 14 # Pin de eco del segundo sensor ultrasónico
sensor2_led = 4 # Pin del LED asociado al segundo sensor
sensor3_trigger = 27 # Pin de activación del tercer sensor ultrasónico
sensor3_echo = 26 # Pin de eco del tercer sensor ultrasónico
sensor3_led = 16 # Pin del LED asociado al tercer sensor
sensor4_LDR = 32 # Pin del sensor de luz (LDR)
sensor4_led = 17 # Pin del LED asociado al sensor de luz
sensor5_LDR = 34 # Pin del segundo sensor de luz (LDR)
sensor5_led = 5 # Pin del LED asociado al segundo sensor de luz
sensor6_LDR = 26 # Pin del tercer sensor de luz (LDR)
sensor6_led = 18 # Pin del LED asociado al tercer sensor de luz
GAMMA = 0.7 # Valor gamma para cálculos de luz
RL10 = 50 # Valor de resistencia para cálculos de luz
sensor_movimiento = 35
movimiento_led = 21
# Función para medir la distancia con el sensor ultrasónico
def leerDistanciaUltrasonido(triggerPin, echoPin):
trigger = Pin(triggerPin, Pin.OUT) # Configura el pin de activación como salida
trigger.off() # Pone el pin de activación en bajo
time.sleep_us(5) # Espera un corto tiempo
trigger.on() # Pone el pin de activación en alto
time.sleep_us(10) # Espera un corto tiempo
trigger.off() # Pone el pin de activación en bajo
echo = Pin(echoPin, Pin.IN) # Configura el pin de eco como entrada
return time_pulse_us(echo, 1) # Mide la duración del pulso de eco y devuelve el tiempo en microsegundos
# Configuración inicial de los LEDs
led1 = Pin(sensor1_led, Pin.OUT) # Configura el pin del primer LED como salida
led2 = Pin(sensor2_led, Pin.OUT) # Configura el pin del segundo LED como salida
led3 = Pin(sensor3_led, Pin.OUT) # Configura el pin del tercer LED como salida
led4 = Pin(sensor4_led, Pin.OUT) # Configura el pin del cuarto LED como salida
led5 = Pin(sensor5_led, Pin.OUT) # Configura el pin del quinto LED como salida
led6 = Pin(sensor6_led, Pin.OUT) # Configura el pin del sexto LED como salida
sensor = ADC(Pin(sensor4_LDR)) # Configura el pin del sensor de luz como entrada analógica
sensor.width(ADC.WIDTH_12BIT) # Establece la precisión del ADC en 12 bits
sensor.atten(ADC.ATTN_11DB) # Establece la atenuación del ADC en 11dB
sensor2 = ADC(Pin(sensor5_LDR)) # Configura el pin del segundo sensor de luz como entrada analógica
sensor2.width(ADC.WIDTH_12BIT) # Establece la precisión del ADC en 12 bits
sensor2.atten(ADC.ATTN_11DB) # Establece la atenuación del ADC en 11dB
sensor3 = ADC(Pin(sensor6_LDR)) # Configura el pin del tercer sensor de luz como entrada analógica
sensor3.width(ADC.WIDTH_12BIT) # Establece la precisión del ADC en 12 bits
sensor3.atten(ADC.ATTN_11DB) # Establece la atenuación del ADC en 11dB
sensor_m = Pin(sensor_movimiento, Pin.IN)
led_m = Pin(movimiento_led, Pin.OUT)
while True: # Bucle principal infinito
# Sensor 1
distancia_sensor1 = 0.01723 * leerDistanciaUltrasonido(sensor1_trigger, sensor1_echo) # Mide la distancia con el primer sensor ultrasónico
print("Distancia Sensor 1:", distancia_sensor1, "cm") # Imprime la distancia medida por el primer sensor
if distancia_sensor1 > 10: # Si la distancia es mayor que 10 cm
led1.value(1) # Enciende el primer LED
else:
led1.value(0) # Apaga el primer LED
# Sensor 2
distancia_sensor2 = 0.01723 * leerDistanciaUltrasonido(sensor2_trigger, sensor2_echo) # Mide la distancia con el segundo sensor ultrasónico
print("Distancia Sensor 2:", distancia_sensor2, "cm") # Imprime la distancia medida por el segundo sensor
if distancia_sensor2 > 10: # Si la distancia es mayor que 10 cm
led2.value(1) # Enciende el segundo LED
else:
led2.value(0) # Apaga el segundo LED
# Sensor 3
distancia_sensor3 = 0.01723 * leerDistanciaUltrasonido(sensor3_trigger, sensor3_echo) # Mide la distancia con el tercer sensor ultrasónico
print("Distancia Sensor 3:", distancia_sensor3, "cm") # Imprime la distancia medida por el tercer sensor
if distancia_sensor3 > 10: # Si la distancia es mayor que 10 cm
led3.value(1) # Enciende el tercer LED
else:
led3.value(0) # Apaga el tercer LED
# Sensor de fotoresistencia (LDR)
VALOR = sensor.read() # Lee el valor analógico del sensor de luz
voltage = VALOR / 4095 * 5 # Calcula el voltaje basado en el valor leído
resistencia = 2000 * voltage / (1 - voltage / 5) # Calcula la resistencia en el LDR
luz = pow(RL10 * 1e3 * pow(10, GAMMA) / resistencia, (1 / GAMMA)) # Calcula la luz ambiente
if luz < 30: # Si la luz es menor que 30
led4.value(1) # Enciende el cuarto LED
else:
led4.value(0) # Apaga el cuarto LED
# Sensor de fotoresistencia 2 (LDR)
VALOR2 = sensor2.read() # Lee el valor analógico del segundo sensor de luz
voltage2 = VALOR2 / 4095 * 5 # Calcula el voltaje basado en el valor leído
resistencia2 = 2000 * voltage2 / (1 - voltage2 / 5) # Calcula la resistencia en el LDR
luz2 = pow(RL10 * 1e3 * pow(10, GAMMA) / resistencia2, (1 / GAMMA)) # Calcula la luz ambiente
if luz2 < 30: # Si la luz es menor que 30
led5.value(1) # Enciende el quinto LED
else:
led5.value(0) # Apaga el quinto LED
# Sensor de fotoresistencia 3 (LDR)
VALOR3 = sensor3.read() # Lee el valor analógico del tercer sensor de luz
voltage3 = VALOR3 / 4095 * 5 # Calcula el voltaje basado en el valor leído
resistencia3 = 2000 * voltage3 / (1 - voltage3 / 5) # Calcula la resistencia en el LDR
luz3 = pow(RL10 * 1e3 * pow(10, GAMMA) / resistencia3, (1 / GAMMA)) # Calcula la luz ambiente
if luz3 < 30: # Si la luz es menor que 30
led6.value(1) # Enciende el sexto LED
else:
led6.value(0) # Apaga el sexto LED
#sensor movimiento
if sensor_m.value() == 1:
led_m.value(1)
print("Movimiento detectado")
else:
led_m.value(0)
print("no se detecto movimiento")
time.sleep(1) # Espera 1 segundo antes de repetir el bucle