from machine import Pin, ADC, time_pulse_us, PWM, SoftI2C
import dht, time
from utime import sleep
from lcd_api import LcdApi
from i2c_lcd import I2cLcd
#LCD
I2C_ADDR = 0x27
Filas = 2
Columnas = 16
i2c = SoftI2C(scl=Pin(21), sda=Pin(22), freq=10000)
lcd = I2cLcd(i2c, I2C_ADDR, Filas, Columnas)
#LEDS
led1 = Pin(13, Pin.OUT)
led2 = Pin(12, Pin.OUT)
led3 = Pin(26, Pin.OUT)
#DHT22
sensor=dht.DHT22(Pin(15))
#Potenciometro
pot = ADC(Pin (4))
#PIR
pir = ADC(Pin(2))
#LDR
ldr = ADC(Pin(34))
#Buzzer
buz = Pin(23, Pin.OUT)
#Servos
servo1 = Pin(14, Pin.OUT)
servo2 = Pin(25, Pin.OUT)
servo3 = Pin(27, Pin.OUT)
pwm1 = PWM(servo1)
pwm2 = PWM(servo2)
pwm3 = PWM(servo3)
pwm1.duty(0)
pwm1.freq(50)
pwm1.duty(20)
#Sensor Ultrasónico
Velocidad_del_Sonido=340
tiempo_pulso_trig=10
trig_pin=Pin(33, Pin.OUT)
echo_pin=Pin(32, Pin.IN)
while True:
sensor.measure()
t= sensor.temperature()
t= str(t)
h= sensor.humidity()
h= str(h)
print("")
print("Temperatura: ", t)
print("Humedad: ", h)
sleep(0.1)
valorpot=pot.read()
valor=((valorpot/4095)*100)
print("Potenciometro: ",valor)
lumi = ldr.read_u16()
print("Luminocidad: ", lumi)
trig_pin.value(0)
time.sleep_us(2)
trig_pin.value(0)
time.sleep_us(2)
# Crea impulso de 10 µs
trig_pin.value(1)
time.sleep_us(tiempo_pulso_trig)
trig_pin.value(0)
ultrason_duration = time_pulse_us(echo_pin, 1, 30000)
distance_cm = Velocidad_del_Sonido * ultrason_duration / 20000
print(f"Distancia : {distance_cm} cm")
time.sleep_ms(50)
pirval=pir.read()
if pirval > 0:
print("PIR: ", "movimiento")
print("")
sleep(0.25)
buz.on()
else:
print("PIR: ", "nada")
print("")
buz.off()
if distance_cm < 10:
print("Abre Puerta 1")
pwm1.duty(120)
else:
print("Cierra Puerta 1")
pwm1.duty(70)
if lumi < 5000: #Basarse en el valor que es enviado por comunicación serial
print("Día!")
if valor > 50: #El potenciometro cambia del estado natural debido a la luminosidad, a el opuesto
print("Encender")
led1.on()
led2.on()
led3.on()
sleep(0.01)
else:
led1.off()
led2.off()
led3.off()
sleep(0.01)
sleep(0.01)
if lumi > 5000:
print("Noche!")
if valor > 50:
print("Apagar")
led1.off()
led2.off()
led3.off()
sleep(0.01)
else:
led1.on()
led2.on()
led3.on()
sleep(0.01)
sleep(0.01)
lcd.putstr("Temperat.: ")
lcd.putstr(t)
sleep(1)
lcd.clear()
sleep(1)
lcd.putstr("Humedad: ")
lcd.putstr(h)
sleep(1)
lcd.clear()
sleep(1)