from machine import Pin
import utime
trigger = Pin(3, Pin.OUT)
# Define the Trigger pin
echo = Pin(2, Pin.IN)
# Define the Echo pin
buzzer_pin = Pin(13, Pin.OUT)
# Define the buzzer pin
# Define stepper motor control pins
stepper_pin1 = Pin(4, Pin.OUT)
stepper_pin2 = Pin(5, Pin.OUT)
stepper_pin3 = Pin(6, Pin.OUT)
stepper_pin4 = Pin(7, Pin.OUT)
# Define stepper motor sequence
stepper_sequence = [
[1, 0, 0, 1],
[1, 0, 0, 0],
[1, 1, 0, 0],
[0, 1, 0, 0],
[0, 1, 1, 0],
[0, 0, 1, 0],
[0, 0, 1, 1],
[0, 0, 0, 1]
]
def set_stepper_step(step):
stepper_pin1.value(step[0])
stepper_pin2.value(step[1])
stepper_pin3.value(step[2])
stepper_pin4.value(step[3])
def rotate_stepper(steps, direction):
for _ in range(steps):
if direction == "clockwise":
for step in stepper_sequence[::-1]:
set_stepper_step(step)
utime.sleep_ms(10)
elif direction == "anticlockwise":
for step in stepper_sequence:
set_stepper_step(step)
utime.sleep_ms(10)
def ultra():
trigger.low()
utime.sleep_us(2)
trigger.high()
utime.sleep_us(5)
trigger.low()
while echo.value() == 0:
signaloff = utime.ticks_us()
while echo.value() == 1:
signalon = utime.ticks_us()
timpassed = signalon - signaloff
distance = (timpassed * 0.0330) / 2
if distance < 20:
print("Obstacle detected! Distance:", distance, "cm")
print("Vehicle is changing path...")
rotate_stepper(50, "anticlockwise")
# Rotate anticlockwise for 50 steps
buzzer_pin.on() # Turn on the buzzer
utime.sleep(2) # Delay before changing direction
buzzer_pin.off() # Turn off the buzzer
else:
print("No obstacle detected. Distance:", distance, "cm")
print("Car is moving forward...")
rotate_stepper(50, "clockwise")
# Rotate clockwise for 50 steps
utime.sleep(2) # Delay before changing direction
while True:
ultra()
utime.sleep(1)