0

私はコードを実行していますが、すべてうまく機能していますが、結合方法は機能しません。

すべてのスレッドが 90 度回転するのを待つ必要があります

ev3ロボットとは関係のない別のコードでjoinメソッドを使用しようとしましたが、ev3で動作しない理由がわかりません。

エラー: AttributeError: 'Thread' オブジェクトに属性 'join' がありません

#!/usr/bin/env pybricks-micropython
from pybricks.hubs import EV3Brick
from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor,
                                 InfraredSensor, UltrasonicSensor, GyroSensor)
from pybricks.parameters import Port, Stop, Direction, Button, Color
from pybricks.tools import wait, StopWatch, DataLog
from pybricks.robotics import DriveBase
from pybricks.media.ev3dev import SoundFile, ImageFile
import threading

# This program requires LEGO EV3 MicroPython v2.0 or higher.
# Click "Open user guide" on the EV3 extension tab for more information.


# Create your objects here.
ev3 = EV3Brick()


left_motor = Motor(Port.B)
right_motor = Motor(Port.C)


robot = DriveBase(left_motor, right_motor, wheel_diameter=55.5, axle_track=104)

obstacle_sensor  = UltrasonicSensor(Port.S4)

obstacle_sensor_gyro = GyroSensor(Port.S3)
################################

def check_for_75_angle():
    while True:
        angle = obstacle_sensor_gyro.angle()
        print(angle)
        if angle > 75:
            robot.drive(0, 15)
            break
            


def check_for_90_angle():
    while True:
        angle = obstacle_sensor_gyro.angle()
        if angle == 90:
            break
            

def turn():
    robot.drive(0,80)
    


def main():
    t1 = threading.Thread(target=check_for_75_angle)
    t2 = threading.Thread(target=check_for_90_angle)
    t3 = threading.Thread(target=turn)

    t1.start()
    t2.start()
    t3.start()

    t1.join()
    t2.join()
    t3.join()




while True:
    cm = obstacle_sensor.distance() * 0.1

    if cm < 20:
        obstacle_sensor_gyro.reset_angle(0)

        main()
        print("Finished: 90 angle")

    else:
        robot.drive(20, 0)
    ```
4

0 に答える 0