HCSR04传感器不断产生超时错误。希望循环运行没有超时

问题描述 投票:0回答:1

我有一个目前在pyboard上运行的代码,正在使用电机屏蔽adafruit Motorshield v2.3。我知道大多数超声波传感器在长时间未检测到周围环境后会超时。我希望我的代码能够不断搜索周围环境,而不是超时。机器人意味着在大范围内行驶,直到它到达周围并重定向。我的代码下面附有。 (忽略代码中的注释。就像交换机一样。这些是在我测试的时候使用的)

谢谢!!

i2c = machine.I2C(scl=machine.Pin('Y9'), sda=machine.Pin('Y10'))
motors = motor.DCMotors(i2c)
MOTOR1 = 2
MOTOR2 = 3
#Initiate Trigger and Echo Pin from Ultrasonic sensor
TRIGGER_PIN =pyb.Pin.board.X9
ECHO_PIN = pyb.Pin.board.X10
#Initiate Communication from Sonar sensor
sensor = Ultrasonic (TRIGGER_PIN, ECHO_PIN)
#Create minimum distance For Ultrasonic sensor
min_distance = sensor.distance_in_cm()
print("min_distance= ",min_distance)
#button = pyb.switch()
#def autonomy()
#no_problem = True
try:
    while (True):
    #if (button()):
        min_distance = sensor.distance_in_cm()
        #sensor_front = sensor.distance_in_cm(15)
        if min_distance >= 70:
            print(min_distance)
            motors.speed(MOTOR1, -3500)
            motors.speed(MOTOR2, -3500)
            # motors.speed(MOTOR1, 3500)
            # motors.speed(MOTOR2,-3500)

            #if something is in the way
        else:
            print(min_distance)
            motors.speed(MOTOR1, 0)
            motors.speed(MOTOR2, 0)
            time.sleep_us(10)
            #Turn around
            print("Do the pivot shuffle.")

            motors.speed(MOTOR1, 3500)
            motors.speed(MOTOR2, -3500)
            time.sleep_us(10)
        print(min_distance)
        time.sleep_us(10)

except KeyboardInterrupt:
    pass
python arduino robotics micropython
1个回答
0
投票

如果您正在抽出时间,则距离可能高于传感器可以测量的距离。您可以阅读您正在使用的超声波库:默认超时比HC-SR04最大距离(400 cm)略大

资料来源:https://github.com/skgsergio/MicropythonLibs/blob/master/Ultrasonic/ultrasonic.py

© www.soinside.com 2019 - 2024. All rights reserved.