import time
from machine import Pin
from time import sleep_us,sleep,ticks_us
class Steppper_Motor:
def _init_(self,dir_pin,step_pin,trig_pin,echo_pin,rled_pin,yled_pin,gled_pin):
self.dire=Pin(dir_pin,Pin.OUT)
self.step=Pin(step_pin,Pin.OUT)
self.trig=Pin(trig_pin,Pin.OUT)
self.echo=Pin(echo_pin,Pin.IN)
self.rled=Pin(rled_pin,Pin.OUT)
self.yled=Pin(yled_pin,Pin.OUT)
self.gled=Pin(gled_pin,Pin.OUT)
def start_stepper(self,direction,step,delay):
self.dire.value(direction)
steps=abs(step)
for i in range (steps):
self.step.value(1)
sleep_us(delay)
self.step.value(0)
sleep_us(delay)
def distance(self):
self.trig.value(0)
sleep_us(2)
self.trig.value(1)
sleep_us(5)
self.trig.value(0)
signalon=0
signaloff=0
while self.echo.value()==0:
signaloff=ticks_us()
while self.echo.value()==1:
signalon=ticks_us()
time=signalon-signaloff
dist=(time*0.03405)/2
print(dist)
return dist
def led_on(self,red,yellow,green):
self.rled.value(red)
self.gled.value(green)
self.yled.value(yellow)
# max 400
while True:
stepper=Steppper_Motor(dir_pin=5,step_pin=18,trig_pin=26,echo_pin=25,rled_pin=12,yled_pin=14,gled_pin=27)
stepper.distance()
if(stepper.distance()>=350):
stepper.led_on(1,0,0)
stepper.start_stepper(1,200,1000)
if(stepper.distance()<300 and stepper.distance()>100):
stepper.led_on(0,1,0)
stepper.start_stepper(1,200,1000)
if(stepper.distance()<=50):
stepper.led_on(0,0,1)
stepper.start_stepper(1,0,1000)
else:
stepper.led_on(0,0,0)