#modulos
from machine import Pin, PWM
from machine import Pin, I2C
import utime
from pico_i2c_lcd import I2cLcd
#Display
i2c = I2C(id=1,scl=Pin(27),sda=Pin(26),freq=100000)
lcd = I2cLcd(i2c, 0x27, 2, 16)
#Sensor de distancia
led25 = Pin(25, Pin.OUT)
trig = Pin(16, Pin.OUT)
echo = Pin(17, Pin.IN)
#motor giro
pinE=Pin(5,Pin.OUT, value=0)
pinD=Pin(0,Pin.OUT)
pwm=PWM(Pin(4))
pwm.duty_u16(32768) #32768
pwm.freq(100)
speed=100
#stepsPerRevolution = 1
#-------
def movx1(timet1,speed1):
pinE.on() #real pinEnabled.on()
pinD.off() #off()=giro a derecha, on()=giro a izquierda
for i in range(0,timet1):
pwm.freq(speed1)
utime.sleep(.1)
pinE.off() #real pinEnabled.off()
#-------
while 1:
movx1(1,speed)
utime.sleep_ms(5000)
# Código condicionales
while True:
trig.value(0)
utime.sleep_us(5)
trig.value(1)
utime.sleep_us(10)
trig.value(0)
while echo.value() == 0:
pass
Tmrinicio = utime.ticks_us()
while echo.value() == 1:
pass
Tmrfin = utime.ticks_us()
Duration = utime.ticks_diff(Tmrfin, Tmrinicio)
distancecm = Duration * 0.0171
lcd.clear()
lcd.move_to(1,0)
lcd.putstr('Dist= '+str(distancecm)[:6]+" cm")
print(distancecm)
if 20 <= distancecm <= 50:
pinE.on()
utime.sleep(1)
else:
pinD.off()
utime.sleep(0.1)
utime.sleep(0.5) # Pausa entre mediciones