Add ultrasonic sensor support

This commit is contained in:
Lauri Võsandi 2022-03-18 14:18:48 +02:00 committed by Lauri Võsandi
parent dc7b625ab0
commit 0acff886bb
1 changed files with 29 additions and 10 deletions

View File

@ -1,5 +1,5 @@
from utime import sleep_ms from utime import sleep_us, sleep_ms
from machine import Pin, PWM from machine import Pin, PWM, ADC, time_pulse_us
class ServoMotor(): class ServoMotor():
def __init__(self, pin): def __init__(self, pin):
@ -14,16 +14,35 @@ class ServoMotor():
if speed == 0: if speed == 0:
self.pwm.duty(0) self.pwm.duty(0)
else: else:
self.pwm.duty(int(33 + speed * 66 / 100)) self.pwm.duty(int(77 + speed * 8 / 100))
print(self.pwm, 33 + speed * 66 / 100) print(self.pwm, 77 + speed * 8 / 100)
class Ultrasonic():
def __init__(self, echo=14, trigger=12):
self.echo = Pin(pin_echo, Pin.IN)
self.trigger = Pin(pin_trigger, Pin.OUT)
def get(self):
self.trigger.value(0)
sleep_us(5)
self.trigger.value(1)
sleep_us(10)
self.trigger.value(0)
return (time_pulse_us(self.echo, 1, 30000) / 2) / 29.1
# Servo motors
left_motor = ServoMotor(13) left_motor = ServoMotor(13)
right_motor = ServoMotor(15) right_motor = ServoMotor(15)
opponent = Ultrasonic()
sleep_ms(2000)
while True: while True:
left_motor.set(100) if opponent.get() < 30:
right_motor.set(0) left_motor.set(100)
sleep_ms(500) right_motor.set(-100)
left_motor.set(0) else:
right_motor.set(100) left_motor.set(100)
sleep_ms(500) right_motor.set(100)
sleep_ms(250)