from machine import Pin, ADC, PWM
import time
#
# Configuración del Potenciómetro
#
# Potenciómetro conectado al pin GP26
pot = ADC(Pin(26))
#
# Configuración del Servo
#
# Servo conectado al pin GP0
servo = PWM(Pin(0))
servo.freq(50) # Frecuencia típica de un servo: 50 Hz
# Valores mínimos y máximos del pulso del servo en nanosegundos
MIN = 500000 # Pulso mínimo
MAX = 2400000 # Pulso máximo
#
# Configuración del Sensor Ultrasónico
#
# TRIG conectado al pin GP3
trig = Pin(3, Pin.OUT)
# ECHO conectado al pin GP2
echo = Pin(2, Pin.IN)
# Velocidad del sonido en cm/us
vel_sonido = 0.034
while True:
#
# Leer el valor del Potenciómetro
#
valor = pot.read_u16() # Valor entre 0 y 65535
print("Potenciómetro:", valor)
#
# Control del Servo
#
# Convertir el valor del potenciómetro a un pulso para el servo
duty = MIN + (valor * (MAX - MIN) // 65535)
# Mover el servo
servo.duty_ns(duty)
#
# Medición con el Sensor Ultrasónico
#
trig.value(0) # Asegurarse que TRIG esté en 0
time.sleep_us(2)
trig.value(1) # Enviar un pulso de 10us
time.sleep_us(10)
trig.value(0)
# Esperar a que ECHO se ponga en alto
while echo.value() == 0:
t1 = time.ticks_us()
# Esperar a que ECHO se ponga en bajo
while echo.value() == 1:
t2 = time.ticks_us()
# Calcular el tiempo de ida y vuelta del sonido
t = t2 - t1
# Calcular distancia en centímetros
d = (t * vel_sonido) / 2
#
# Mostrar la distancia
#
print("Objeto detectado a:", d, "cm")
# Pequeña pausa para estabilizar lecturas
time.sleep(0.2)
# Con este reto aprendí a identificar posibles errores en el código y los circuitos
# y a relacionar componentes entre sí.
#Tuve dificultades con la tabulacion pero las pude resolver al identificarlas.
# Se podria usar en una puerta automática.