from machine import Pin, time_pulse_us
import time
import neopixel
import machine
NUM_LEDS = 16
pin_neopixel = 2
np = neopixel.NeoPixel(machine.Pin(pin_neopixel), NUM_LEDS)
ROJO = (255, 0, 0)
AMARILLO = (255, 255, 0)
VERDE = (0, 255, 0)
# Definir los pines Trig y Echo
TRIG_PIN = 23 # Pin 18 en ESP32
ECHO_PIN = 22 # Pin 5 en ESP32
# Configurar los pines
trig = Pin(TRIG_PIN, Pin.OUT)
echo = Pin(ECHO_PIN, Pin.IN)
sonido_pin=4 #pin 4 para el zumbador
sonido = Pin(sonido_pin, Pin.OUT)
# Función para medir la distancia
def measure_distance():
# Generar un pulso de 10 microsegundos en el pin TRIG
trig.value(1)
time.sleep_us(10)
trig.value(0)
# Medir la duración del pulso en el pin ECHO
duration_us = time_pulse_us(echo, 1, 30000) # 30ms timeout
# Calcular la distancia en centímetros
distance_cm = duration_us * 0.017
return distance_cm
def emitir_tono(frecuencia, duracion):
zumbador = machine.PWM(sonido_pin)
zumbador.freq(frecuencia) # Establecer la frecuencia del tono
zumbador.duty(512) # Establecer el ciclo de trabajo al 50% (rango: 0-1023)
time.sleep(duracion) # Esperar la duración del tono
zumbador.duty(0) # Apagar el zumbador
zumbador.deinit() # Liberar el zumbador
while True:
# Medir la distancia
distance = measure_distance()
if distance > 0 and distance <5:
emitir_tono(600,0.2)
print ("Cuidado")
for i in range (0,16):
np[i]= ROJO
np.write()
time.sleep(0.2)
if distance >=5 and distance <10:
emitir_tono(400,0.4)
print ("Cuidado")
for i in range (0,16):
np[i]= AMARILLO
np.write()
time.sleep(0.4)
if distance >=10:
emitir_tono(200,0.6)
print ("Tranquilo")
for i in range (0,16):
np[i]= VERDE
np.write()
time.sleep(0.6)