def main(self, speed: float = 1000):
        self.medium_motor.run_time(
            speed=-200,  # deg/s
            time=1000,  # ms
            then=Stop.HOLD,
            wait=True)

        run_parallel(self.keep_driving_by_ir_beacon, self.hammer_by_ir_beacon)
Exemplo n.º 2
0
 def main(self):
     self.screen.load_image(ImageFile.EVIL)
     
     run_parallel(
         self.be_noisy_to_people,
         self.sting_by_ir_beacon,
         self.pinch_if_touched,
         self.keep_driving_by_ir_beacon)
Exemplo n.º 3
0
    def main(
            self,
            driving_speed: float = 1000  # mm/s
    ):
        self.screen.load_image(ImageFile.TARGET)

        run_parallel(self.keep_driving_by_ir_beacon,
                     self.blast_bazooka_whenever_touched)
Exemplo n.º 4
0
    def main(self, speed: float = 1000):
        self.grip_motor.run_time(speed=-500,
                                 time=1000,
                                 then=Stop.BRAKE,
                                 wait=True)

        run_parallel(self.grip_or_release_by_ir_beacon,
                     self.keep_driving_by_ir_beacon)
    def main(
            self,
            driving_speed: float = 1000  # mm/s
    ):
        self.screen.load_image(ImageFile.TARGET)

        run_parallel(
            self.keep_driving_by_ir_beacon,

            # FIXME: following thread seems to fail to run
            self.dance_whenever_ir_beacon_pressed,

            # DON'T use IR Sensor in 2 different modes in the same program / loop
            # - https://github.com/pybricks/support/issues/62
            # - https://github.com/ev3dev/ev3dev/issues/1401
            # self.keep_detecting_objects_by_ir_sensor,
            self.blast_bazooka_whenever_touched)
 def main(self, speed: float = 1000):
     run_parallel(
         self.say_when_touched,
         self.spin_fan,
         self.keep_driving_by_ir_beacon)
Exemplo n.º 7
0
TOUCH_SENSOR = TouchSensor(port=Port.S1)
IR_SENSOR = InfraredSensor(port=Port.S4)
MOTOR = Motor(port=Port.A)


def touch_to_turn_motor_clockwise():
    while True:
        if TOUCH_SENSOR.pressed():
            MOTOR.run_time(
                speed=1000,  # deg/s
                time=1000,  # ms
                then=Stop.HOLD,
                wait=True)


def press_any_ir_remote_button_to_turn_motor_counterclockwise():
    while True:
        if IR_SENSOR.buttons(channel=1):
            MOTOR.run_time(
                speed=-1000,  # deg/s
                time=1000,  # ms
                then=Stop.HOLD,
                wait=True)


run_parallel(touch_to_turn_motor_clockwise,
             press_any_ir_remote_button_to_turn_motor_counterclockwise)

# observation: both threads run successfully WITH mutual blocking
# i.e. 1 thread CANNOT interrupt/reverse the other thread's Motor movement mid-stream
Exemplo n.º 8
0
    def main(self):
        self.speaker.play_file(file=SoundFile.YES)

        run_parallel(self.scan_colors, self.make_noise_when_touched,
                     self.throw_by_ir_beacon, self.keep_driving_by_ir_beacon)
Exemplo n.º 9
0
#!/usr/bin/env pybricks-micropython

from pybricks.experimental import run_parallel

from dinor3x_pybricks import Dinor3x

DINOR3X = Dinor3x()

DINOR3X.calibrate_legs()

DINOR3X.close_mouth()

while True:
    # recalibrate legs so that the legs don't get too tired
    DINOR3X.calibrate_legs()

    DINOR3X.walk_until_blocked()

    # FIXME: TypeError: unsupported type for __hash__: 'bound_method'
    run_parallel(DINOR3X.roar, DINOR3X.run_away)
Exemplo n.º 10
0
 def main(self):
     run_parallel(self.keep_driving_by_ir_beacon,
                  self.back_whenever_touched)
    def main(self, speed: float = 1000):
        self.screen.load_image(ImageFile.PINCHED_MIDDLE)

        run_parallel(self.keep_driving_by_ir_beacon, self.move_when_touched,
                     self.move_when_see_smothing, self.drill)
def task2():
    wait(500)
    return "OK2"


def task3():
    # Unhandled Exception should interrupt all other tasks
    raise Exception("oops")


def task4():
    # Unhandled BaseException does not interrupt other tasks
    raise SystemExit


result = run_parallel(task1, task2)
print(repr(result[task1]))
print(repr(result[task2]))

try:
    run_parallel(task1, task2, task3)
except RuntimeError as ex:
    print(ex.args[0])  # message
    print(repr(ex.args[1][task1]))
    # sometimes task2 finishes before being interrupted
    # print(repr(ex.args[1][task2]))
    print(repr(ex.args[1][task3]))

result = run_parallel(task1, task2, task4)
print(repr(result[task1]))
print(repr(result[task2]))
Exemplo n.º 13
0
#!/usr/bin/env pybricks-micropython

from pybricks.ev3devices import TouchSensor, Motor
from pybricks.parameters import Port, Stop

from pybricks.experimental import run_parallel

TOUCH_SENSOR = TouchSensor(port=Port.S1)
MOTOR = Motor(port=Port.A)


def motor_on_when_touched():
    while True:
        if TOUCH_SENSOR.pressed():
            MOTOR.run_time(
                speed=1000,  # deg/s
                time=1000,  # ms
                then=Stop.COAST,
                wait=True)


def do_nothing():
    while True:
        pass


run_parallel(motor_on_when_touched, do_nothing)
Exemplo n.º 14
0
#!/usr/bin/env pybricks-micropython
from pybricks.hubs import EV3Brick
from pybricks.parameters import Color
from pybricks.tools import wait, StopWatch
from pybricks.experimental import run_parallel

# This program requires LEGO EV3 MicroPython v2.0 or higher.

ev3 = EV3Brick()
ev3.speaker.set_volume(30, 'PCM')
watch = StopWatch()

def task_screen():
    idx = 0
    while True:
        ev3.screen.load_image('pic/frame%d.png' % idx)
        curms = watch.time()
        nidx = int(curms * 15 / 1000)
        idx = nidx + 1
        waitms = int(idx * 1000 / 15 - curms)
        wait(waitms)
        if idx >= 3284:
            break
    return

def task_speaker():
    ev3.speaker.play_file('BadApple.wav')
    return

run_parallel(task_screen, task_speaker)
 def main(self, speed: float = 1000):
     run_parallel(
        self.bite_by_ir_beacon,
        self.bite_if_touched,
        self.run_away_if_chased,
        self.keep_driving_by_ir_beacon)
 def main(self):
     run_parallel(self.keep_driving_by_ir_beacon,
                  self.grip_or_release_claw_by_ir_beacon)
Exemplo n.º 17
0
 def main(self, speed: float = 1000):
     run_parallel(
         self.spin_blade_by_ir_beacon,
         self.keep_driving_by_ir_beacon)        
Exemplo n.º 18
0
        MEDIUM_MOTOR.run_time(
            speed=-100,
            time=1000,
            then=Stop.COAST,
            wait=True)

        sleep(1)


def scare_people():
    while True:
        if IR_SENSOR.distance() < 30:
            LARGE_MOTOR.run_time(
                speed=1000,
                time=1000,
                then=Stop.COAST,
                wait=True)

        else:
            LARGE_MOTOR.run_time(
                speed=-300,
                time=1000,
                then=Stop.COAST,
                wait=True)


run_parallel(
    scare_people,
    rattle)
Exemplo n.º 19
0
        else:
            if time() % 3 < 1.5:
                DRIVE_BASE.drive(
                    speed=100,  # degrees per second
                    turn_rate=-30  # degrees per second
                )

            else:
                DRIVE_BASE.drive(
                    speed=100,  # degrees per second
                    turn_rate=30  # degrees per second
                )

            BRICK.screen.load_image(ImageFile.AWAKE)


def laugh_whenever_touched():
    while True:
        if TOUCH_SENSOR.pressed():
            BRICK.speaker.play_file(file=SoundFile.LAUGHING_2)

            MEDIUM_MOTOR.run_angle(
                speed=1000,  # degrees per second
                rotation_angle=6 * 360,  # degrees
                then=Stop.HOLD,
                wait=True)


run_parallel(run_away_whenever_dark, laugh_whenever_touched)
Exemplo n.º 20
0
#!/usr/bin/env pybricks-micropython

from pybricks.experimental import run_parallel

from kraz3 import Kraz3

kraz3 = Kraz3()

run_parallel(kraz3.keep_driving_by_ir_beacon,
             kraz3.kungfu_manoeuvre_whenever_touched_or_remote_controlled,
             kraz3.keep_reacting_to_colors)
    def main(self):
        self.screen.load_image(ImageFile.PINCHED_MIDDLE)

        run_parallel(self.keep_driving_by_ir_beacon,
                     self.blast_bazooka_by_ir_beacon)
Exemplo n.º 22
0
#!/usr/bin/env pybricks-micropython

from bobb3e import Bobb3e

from pybricks.experimental import run_parallel

bobb3e = Bobb3e()

bobb3e.ev3_brick.screen.print('BOBB3E')

run_parallel(bobb3e.drive_or_operate_forks_by_ir_beacon,
             bobb3e.sound_alarm_whenever_reversing)