from machine import Pin, time_pulse_us, PWM
from time import sleep
import time
import neopixel
import machine
import dht
TRIG_PIN = 23
ECHO_PIN = 22
led1 = Pin(14,Pin.OUT)
led2 = Pin(27,Pin.OUT)
trig = Pin(TRIG_PIN, Pin.OUT)
echo = Pin(ECHO_PIN, Pin.IN)
led3 = Pin(32,Pin.OUT)
pin_pulsador = Pin(4, Pin.IN, Pin.PULL_UP)
estado = 0
NUM_LEDS = 16
pin_neopixel = 2
np = neopixel.NeoPixel(machine.Pin(pin_neopixel), NUM_LEDS)
sensorh = dht.DHT22(Pin(13))
pwm = PWM(Pin(25), freq=50, duty=0)
boton1 = machine.Pin(19, machine.Pin.IN, machine.Pin.PULL_UP)
buzzer = machine.PWM(machine.Pin(21))
def measure_distance():
trig.value(1)
time.sleep_us(10)
trig.value(0)
duration_us = time_pulse_us(echo, 1, 30000)
distance_cm = duration_us * 0.017
return distance_cm
def intermitentes():
led1.value(1)
led2.value(1)
sleep(0.5)
led1.value(0)
led2.value(0)
sleep(0.5)
def sonar_buzzer(frecuencia):
buzzer.freq(frecuencia)
buzzer.duty_u16(1000)
def intermitente2():
enciende = 0
if (estado == 0):
enciende = 1
time.sleep(0.01)
if (enciende == 1):
led3.value(1)
time.sleep(0.5)
led3.value(0)
time.sleep(0.5)
led3.value(1)
time.sleep(0.5)
led3.value(0)
time.sleep(0.5)
led3.value(1)
time.sleep(0.5)
led3.value(0)
time.sleep(0.5)
led3.value(1)
time.sleep(0.5)
led3.value(0)
enciende= 0
def Servo(servo, angle):
pwm.duty(int(((angle)/180 *2 + 0.5) / 20 * 1023))
while True:
estado = pin_pulsador.value()
intermitente2()
intermitentes()
distance = measure_distance()
intermitente2()
sensorh.measure()
h= sensorh.humidity()
if distance > 0 and distance <5:
for i in range (0,16):
np[i] = (255,0,0)
np.write()
if distance > 5 and distance <10:
for i in range (0,16):
np[i] = (255,255,0)
np.write()
if distance > 10:
for i in range (0,16):
np[i] = (0,255,0)
np.write()
if h >50:
Servo(2,180)
time.sleep(1)
Servo(2,10)
if not boton1.value():
sonar_buzzer(440)
else:
buzzer.duty_u16(0)
time.sleep(0.1)