print("Hello, ESP32!")
from machine import ADC, Pin, PWM
import time
# Configuración del primer sensor LDR y servomotor para la primera puerta
ldr1 = ADC(Pin(34)) # Conectar el LDR al pin ADC del ESP32
servo1 = PWM(Pin(12), freq=50)
led1 = Pin(14, Pin.OUT) # Conectar el LED1 al pin GPIO 14 con una resistencia limitadora
# Configuración del segundo sensor LDR y servomotor para la segunda puerta
ldr2 = ADC(Pin(35)) # Conectar el LDR al pin ADC del ESP32
servo2 = PWM(Pin(16), freq=50)
led2 = Pin(13, Pin.OUT) # Conectar el LED2 al pin GPIO 13 con una resistencia limitadora
# Configuración del tercer servomotor y el potenciómetro asociado
servo3 = PWM(Pin(18), freq=50) # Utiliza el pin 18 para PWM con una frecuencia de 50Hz
pot_servo3 = ADC(Pin(39)) # Utiliza el pin ADC 39 para el potenciómetro del tercer servomotor
pot_servo3.atten(ADC.ATTN_11DB) # Configura el ADC para un rango de voltaje más amplio (0-3.6V)
pot_servo3.width(ADC.WIDTH_10BIT) # Configura el ADC para una resolución de 10 bits
# Configuración del potenciómetro y el LED para control de intensidad lumínica
pot_led = ADC(Pin(36)) # Utiliza el pin ADC 36 para el potenciómetro del LED
pot_led.atten(ADC.ATTN_11DB) # Configura el ADC para un rango de voltaje más amplio (0-3.6V)
pot_led.width(ADC.WIDTH_10BIT) # Configura el ADC para una resolución de 10 bits
led_intensity = PWM(Pin(25), freq=5000) # Utiliza el pin 25 para PWM con una frecuencia de 5kHz
# Función para mover la primera puerta y encender/apagar la luz
def move_door_and_control_light1(position):
if position == "open":
servo1.duty(40) # Valor de PWM para abrir la puerta (ajustar según el servo)
led1.on() # Encender la luz
elif position == "close":
servo1.duty(115) # Valor de PWM para cerrar la puerta (ajustar según el servo)
led1.off() # Apagar la luz
# Función para mover la segunda puerta y encender/apagar la luz
def move_door_and_control_light2(position):
if position == "open":
servo2.duty(40) # Valor de PWM para abrir la puerta (ajustar según el servo)
led2.on() # Encender la luz
elif position == "close":
servo2.duty(115) # Valor de PWM para cerrar la puerta (ajustar según el servo)
led2.off() # Apagar la luz
# Función para controlar el tercer servomotor con el potenciómetro
def control_servo3_with_pot():
pot_value_servo3 = pot_servo3.read() # Lee el valor del potenciómetro para el tercer servo (0-1023)
angle = int(pot_value_servo3 / 1023 * 180) # Calcula el ángulo del servo (0-180 grados)
servo3.duty(angle) # Aplica el ángulo al servo
# Función para controlar la intensidad lumínica del LED con el potenciómetro
def control_led_intensity_with_pot():
pot_value_led = pot_led.read() # Lee el valor del potenciómetro para el LED (0-1023)
duty_cycle = int(pot_value_led / 1023 * 1023) # Calcula el ciclo de trabajo (0-1023)
led_intensity.duty(duty_cycle) # Ajusta el ciclo de trabajo del PWM del LED para controlar la intensidad
while True:
# Lectura del primer LDR y control de la primera puerta
light_value1 = ldr1.read()
print("Light value 1:", light_value1)
if light_value1 < 1000: # Ajustar el umbral según el entorno y sensibilidad del LDR
move_door_and_control_light1("open")
else:
move_door_and_control_light1("close")
# Lectura del segundo LDR y control de la segunda puerta
light_value2 = ldr2.read()
print("Light value 2:", light_value2)
if light_value2 < 1000: # Ajustar el umbral según el entorno y sensibilidad del LDR
move_door_and_control_light2("open")
else:
move_door_and_control_light2("close")
# Control del tercer servomotor con el potenciómetro
control_servo3_with_pot()
# Control de la intensidad lumínica del LED con el potenciómetro
control_led_intensity_with_pot()
time.sleep(0.1)