실#
소개#
스레드를 사용하면 로봇이 동일한 프로그램 내에서 여러 작업을 동시에 실행할 수 있습니다. 이를 통해 멀티태스킹이 가능해지며, 로봇이 동시에 독립적인 동작을 수행할 수 있습니다.
Note: You must first define a function to use it with a thread.
생성자 – 새 스레드를 생성하고 시작합니다.
Thread– 지정된 함수를 메인 프로그램과 병렬로 실행하는 새 스레드를 시작합니다.
작업 – 실행 중인 스레드를 제어합니다.
stop– 스레드를 수동으로 중지합니다. 백그라운드 동작을 중지하는 데 유용합니다.
건설자#
Thread#
Thread 스레드를 생성하고 시작합니다. 스레드를 생성할 때 이름을 지정하여 더 이상 필요하지 않을 때 중지할 수 있습니다.
용법:
my_thread = Thread(my_function)
매개변수 |
설명 |
|---|---|
|
(선택 사항) 새 게시글의 이름입니다. |
|
이전에 정의된 함수의 이름입니다. |
참고: 함수는 호출되기 전에 반드시 정의되어 있어야 합니다.
def move_square():
# Move in a square path
while True:
arm.move_inc(100, 0, 0)
arm.move_inc(0, 100, 0)
arm.move_inc(-100, 0, 0)
arm.move_inc(0, 100, 0)
move_square_thread = Thread(move_square)
signal_tower.set_color(SignalTower.BLUE, SignalTower.BLINK)
# Run multiple threads simultaneously
def move_square():
# Move in a square path
while True:
arm.move_inc(100, 0, 0)
arm.move_inc(0, 100, 0)
arm.move_inc(-100, 0, 0)
arm.move_inc(0, 100, 0)
def lights():
while True:
# Turn on all LEDs
signal_tower.set_colors(SignalTower.ON, SignalTower.ON, SignalTower.ON, SignalTower.ON, SignalTower.ON)
wait(0.25, SECONDS)
# Turn on just the red LED
signal_tower.set_colors(SignalTower.ON, SignalTower.OFF, SignalTower.OFF, SignalTower.OFF, SignalTower.OFF)
wait(0.25, SECONDS)
move_square_thread = Thread(move_square)
lights_thread = Thread(lights)
행동#
stop#
stop 스레드를 수동으로 중지합니다. 이는 작업이 더 이상 필요하지 않거나 프로그램에서 스레드를 재설정해야 할 때 유용합니다. 스레드가 중지되면 다시 시작할 수 없습니다. 다시 실행하려면 Thread를 사용하여 새 스레드를 생성해야 합니다.
용법:
my_thread.stop()
매개변수 |
설명 |
|---|---|
|
이전에 시작된 스레드 객체입니다. 이는 |
"""
Run multiple threads simultaneously
Move the end effector, flash lights and display the x position at once
Stop blinking after 2 seconds
"""
def lights():
while True:
# Turn on all LEDs
signal_tower.set_colors(SignalTower.ON, SignalTower.ON, SignalTower.ON, SignalTower.ON, SignalTower.ON)
wait(0.25, SECONDS)
# Turn on just the red LED
signal_tower.set_colors(SignalTower.ON, SignalTower.OFF, SignalTower.OFF, SignalTower.OFF, SignalTower.OFF)
wait(0.25, SECONDS)
def display_x():
while True:
brain.clear_row()
brain.set_cursor(1, 1)
brain.print("X Position: {}".format(arm.get_x()))
wait(50, MSEC)
lights_thread = Thread(lights)
display_x_thread = Thread(display_x)
arm.move_to(200, 140, 210)
wait(2, SECONDS)
lights_thread.stop()