class Gripp3r(IRBeaconRemoteControlledTank):
    def __init__(self,
                 left_motor_port: str = OUTPUT_B,
                 right_motor_port: str = OUTPUT_C,
                 grip_motor_port: str = OUTPUT_A,
                 touch_sensor_port: str = INPUT_1,
                 ir_sensor_port: str = INPUT_4,
                 ir_beacon_channel: int = 1):
        super().__init__(left_motor_port=left_motor_port,
                         right_motor_port=right_motor_port,
                         ir_sensor_port=ir_sensor_port,
                         ir_beacon_channel=ir_beacon_channel)

        self.grip_motor = MediumMotor(address=grip_motor_port)

        self.touch_sensor = TouchSensor(address=touch_sensor_port)

        self.ir_sensor = InfraredSensor(address=ir_sensor_port)
        self.ir_beacon_channel = ir_beacon_channel

        self.speaker = Sound()

    def grip_or_release_by_ir_beacon(self, speed: float = 50):
        if self.ir_sensor.beacon(channel=self.ir_beacon_channel):
            if self.touch_sensor.is_pressed:
                self.speaker.play_file(
                    wav_file='/home/robot/sound/Air release.wav',
                    volume=100,
                    play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)

                self.grip_motor.on_for_seconds(speed=speed,
                                               seconds=1,
                                               brake=True,
                                               block=True)

            else:
                self.speaker.play_file(
                    wav_file='/home/robot/sound/Airbrake.wav',
                    volume=100,
                    play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)

                self.grip_motor.on(speed=-speed, brake=False, block=False)

                self.touch_sensor.wait_for_pressed()

                self.grip_motor.off(brake=True)

            while self.ir_sensor.beacon(channel=self.ir_beacon_channel):
                pass

    def main(self, speed: float = 100):
        self.grip_motor.on_for_seconds(speed=-50,
                                       seconds=1,
                                       brake=True,
                                       block=True)

        while True:
            self.drive_once_by_ir_beacon(speed=speed)

            self.grip_or_release_by_ir_beacon()
class CuriosityRov3r(IRBeaconRemoteControlledTank):
    def __init__(
            self,
            left_motor_port: str = OUTPUT_B, right_motor_port: str = OUTPUT_C,
            medium_motor_port: str = OUTPUT_A,
            touch_sensor_port: str = INPUT_1, color_sensor_port: str = INPUT_3,
            ir_sensor_port: str = INPUT_4, ir_beacon_channel: int = 1):
        super().__init__(
            left_motor_port=left_motor_port, right_motor_port=right_motor_port,
            ir_sensor_port=ir_sensor_port, ir_beacon_channel=ir_beacon_channel)
            
        self.medium_motor = MediumMotor(address=medium_motor_port)

        self.touch_sensor = TouchSensor(address=touch_sensor_port)
        self.color_sensor = ColorSensor(address=color_sensor_port)

        self.ir_sensor = InfraredSensor(address=ir_sensor_port)
        self.ir_beacon_channel = ir_beacon_channel

        self.dis = Display()
        self.noise = Sound()

    
    def spin_fan(self, speed: float = 100):
        if self.color_sensor.reflected_light_intensity > 20:
            self.medium_motor.on(
                speed=speed,
                brake=False,
                block=False)

        else:
            self.medium_motor.off(brake=True)
            

    def say_when_touched(self):
        if self.touch_sensor.is_pressed:
            self.dis.image_filename(
                filename='/home/robot/image/Angry.bmp',
                clear_screen=True)
            self.dis.update()

            self.noise.play_file(
                wav_file='/home/robot/sound/No.wav',
                volume=100,
                play_type=Sound.PLAY_WAIT_FOR_COMPLETE)

            self.medium_motor.on_for_seconds(
                speed=-50,
                seconds=3,
                brake=True,
                block=True)


    def main(self, speed: float = 100):
        while True:
            self.drive_once_by_ir_beacon(speed=speed)

            self.say_when_touched()

            self.spin_fan(speed=speed)
class El3ctricGuitar:
    NOTES = [1318, 1174, 987, 880, 783, 659, 587, 493, 440, 392, 329, 293]
    N_NOTES = len(NOTES)

    def __init__(
            self, lever_motor_port: str = OUTPUT_D,
            touch_sensor_port: str = INPUT_1, ir_sensor_port: str = INPUT_4):
        self.lever_motor = MediumMotor(address=lever_motor_port)

        self.touch_sensor = TouchSensor(address=touch_sensor_port)

        self.ir_sensor = InfraredSensor(address=ir_sensor_port)
        
        self.leds = Leds()

        self.speaker = Sound()

    def start_up(self):
        self.leds.animate_flash(
            color='ORANGE',
            groups=('LEFT', 'RIGHT'),
            sleeptime=0.5,
            duration=3,
            block=True)

        self.lever_motor.on_for_seconds(
            speed=5,
            seconds=1,
            brake=False,
            block=True)

        self.lever_motor.on_for_degrees(
            speed=-5,
            degrees=30,
            brake=True,
            block=True)

        sleep(0.1)

        self.lever_motor.reset()

    def play_music(self):
        if self.touch_sensor.is_released:
            raw = sum(self.ir_sensor.proximity for _ in range(4)) / 4

            self.speaker.tone(
                self.NOTES[min(round(raw / 5), self.N_NOTES - 1)]
                - 11 * self.lever_motor.position,
                100,
                play_type=Sound.PLAY_WAIT_FOR_COMPLETE)

    def main(self):
        self.start_up()
        while True:
            self.play_music()
示例#4
0
    def MoveForward(self, steering=0, speed=-20):
        steer_pair = MoveSteering(OUTPUT_A, OUTPUT_B, motor_class=LargeMotor)
        drill = Drill()
        #We make this condition to check if the Robot
        if drill.Drilling() == 1:
            steer_pair.off()
            if self.is_drilled == False:
                self.is_drilled = True
                print("drilling")
                sleep(2)
                mm = MediumMotor(OUTPUT_D)
                sp = 90
                time = 10
                mm.on_for_seconds(speed=SpeedRPM(sp), seconds=time)

                print("Number of rotations =" + str(sp / 6))

        else:
            steer_pair.on_for_seconds(steering=0,
                                      speed=-1 * SpeedRPM(12),
                                      seconds=1,
                                      brake=True,
                                      block=True)
class Gripp3r:
    def __init__(self,
                 left_motor_port: str = OUTPUT_B,
                 right_motor_port: str = OUTPUT_C,
                 grip_motor_port: str = OUTPUT_A,
                 touch_sensor_port: str = INPUT_1,
                 ir_sensor_port: str = INPUT_4,
                 ir_beacon_channel: int = 1):
        self.tank_driver = MoveTank(left_motor_port=left_motor_port,
                                    right_motor_port=right_motor_port,
                                    motor_class=LargeMotor)

        self.grip_motor = MediumMotor(address=grip_motor_port)

        self.touch_sensor = TouchSensor(address=touch_sensor_port)

        self.ir_sensor = InfraredSensor(address=ir_sensor_port)
        self.ir_beacon_channel = ir_beacon_channel

        self.speaker = Sound()

    def drive_once_by_ir_beacon(self, speed: float = 100):
        if self.ir_sensor.top_left(channel=self.ir_beacon_channel) and \
                self.ir_sensor.top_right(channel=self.ir_beacon_channel):
            # go forward
            self.tank_driver.on(left_speed=speed, right_speed=speed)

        elif self.ir_sensor.bottom_left(channel=self.ir_beacon_channel) and \
                self.ir_sensor.bottom_right(channel=self.ir_beacon_channel):
            # go backward
            self.tank_driver.on(left_speed=-speed, right_speed=-speed)

        elif self.ir_sensor.top_left(channel=self.ir_beacon_channel) and \
                self.ir_sensor.bottom_right(channel=self.ir_beacon_channel):
            # turn around left
            self.tank_driver.on(left_speed=-speed, right_speed=speed)

        elif self.ir_sensor.top_right(channel=self.ir_beacon_channel) and \
                self.ir_sensor.bottom_left(channel=self.ir_beacon_channel):
            # turn around right
            self.tank_driver.on(left_speed=speed, right_speed=-speed)

        elif self.ir_sensor.top_left(channel=self.ir_beacon_channel):
            # turn left
            self.tank_driver.on(left_speed=0, right_speed=speed)

        elif self.ir_sensor.top_right(channel=self.ir_beacon_channel):
            # turn right
            self.tank_driver.on(left_speed=speed, right_speed=0)

        elif self.ir_sensor.bottom_left(channel=self.ir_beacon_channel):
            # left backward
            self.tank_driver.on(left_speed=0, right_speed=-speed)

        elif self.ir_sensor.bottom_right(channel=self.ir_beacon_channel):
            # right backward
            self.tank_driver.on(left_speed=-speed, right_speed=0)

        else:
            self.tank_driver.off(brake=False)

    def grip_or_release_by_ir_beacon(self, speed: float = 50):
        if self.ir_sensor.beacon(channel=self.ir_beacon_channel):
            if self.touch_sensor.is_pressed:
                self.speaker.play_file(
                    wav_file='/home/robot/sound/Air release.wav',
                    volume=100,
                    play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)

                self.grip_motor.on_for_seconds(speed=speed,
                                               seconds=1,
                                               brake=True,
                                               block=True)

            else:
                self.speaker.play_file(
                    wav_file='/home/robot/sound/Airbrake.wav',
                    volume=100,
                    play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)

                self.grip_motor.on(speed=-speed, brake=False, block=False)

                self.touch_sensor.wait_for_pressed()

                self.grip_motor.off(brake=True)

            while self.ir_sensor.beacon(channel=self.ir_beacon_channel):
                pass

    def main(self, speed: float = 100):
        self.grip_motor.on_for_seconds(speed=-50,
                                       seconds=1,
                                       brake=True,
                                       block=True)

        while True:
            self.drive_once_by_ir_beacon(speed=speed)

            self.grip_or_release_by_ir_beacon()
示例#6
0
#!/usr/bin/env python3
from ev3dev2.motor import LargeMotor, OUTPUT_A, OUTPUT_D, SpeedPercent, MoveTank, MediumMotor, OUTPUT_B
from ev3dev2.sensor import INPUT_4
from ev3dev2.sensor.lego import UltrasonicSensor
from ev3dev2.led import Leds

# Program to control movement of arm with medium motoR

medium_motor = MediumMotor(OUTPUT_B)
#inversed = POLARITY_INVERSED
#medium_motor.polarity = inversed
#medium_motor.mode = 'COMMAND_RUN_TIMED'

medium_motor.on_for_seconds(20, 5)
class Dinor3x(IRBeaconRemoteControlledTank):
    """
    Challenges:
    - Can you make DINOR3X remote controlled with the IR-Beacon?
    - Can you attach a colorsensor to DINOR3X, and make it behave differently
        depending on which color is in front of the sensor
        (red = walk fast, white = walk slow, etc.)?
    """

    def __init__(
            self,
            left_motor_port: str = OUTPUT_B, right_motor_port: str = OUTPUT_C,
            jaw_motor_port: str = OUTPUT_A,
            touch_sensor_port: str = INPUT_1,
            ir_sensor_port: str = INPUT_4, ir_beacon_channel: int = 1):
        super().__init__(
            left_motor_port=left_motor_port, right_motor_port=right_motor_port,
            ir_sensor_port=ir_sensor_port, ir_beacon_channel=ir_beacon_channel)

        self.jaw_motor = MediumMotor(address=jaw_motor_port)

        self.touch_sensor = TouchSensor(address=touch_sensor_port)

        self.ir_sensor = InfraredSensor(address=ir_sensor_port)
        self.ir_beacon_channel = ir_beacon_channel

        self.button = Button()
        self.speaker = Sound()

    def calibrate_legs(self):
        self.tank_driver.on(
            left_speed=10,
            right_speed=20)

        self.touch_sensor.wait_for_released()

        self.tank_driver.off(brake=True)

        self.left_motor.on(speed=40)

        self.touch_sensor.wait_for_pressed()

        self.left_motor.off(brake=True)

        self.left_motor.on_for_rotations(
            rotations=-0.2,
            speed=50,
            brake=True,
            block=True)

        self.right_motor.on(speed=40)

        self.touch_sensor.wait_for_pressed()

        self.right_motor.off(brake=True)

        self.right_motor.on_for_rotations(
            rotations=-0.2,
            speed=50,
            brake=True,
            block=True)

        self.left_motor.reset()
        self.right_motor.reset()

    def close_mouth(self):
        self.jaw_motor.on(
            speed=20,
            block=False,
            brake=False)
        sleep(1)
        self.jaw_motor.off(brake=True)

    def roar(self):
        self.speaker.play_file(
            wav_file='/home/robot/sound/T-rex roar.wav',
            volume=100,
            play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)

        self.jaw_motor.on_for_degrees(
            speed=40,
            degrees=-60,
            block=True,
            brake=True)

        for i in range(12):
            self.jaw_motor.on_for_seconds(
                speed=-40,
                seconds=0.05,
                block=True,
                brake=True)

            self.jaw_motor.on_for_seconds(
                speed=40,
                seconds=0.05,
                block=True,
                brake=True)

        self.jaw_motor.on(
            speed=20,
            brake=False,
            block=False)

        sleep(0.5)

    def walk_until_blocked(self):
        self.steer_driver.on(
            steering=0,
            speed=-40)

        while self.ir_sensor.proximity >= 25:
            pass

        self.steer_driver.off(brake=True)

    def run_away(self):
        self.steer_driver.on_for_rotations(
            speed=75,
            steering=0,
            rotations=3,
            brake=True,
            block=True)

    def jump(self):
        """
        Dinor3x Mission 02 Challenge: make it jump
        """
        ...

    # TRANSLATED FROM EV3-G MY BLOCKS
    # -------------------------------

    def leg_adjust(
            self,
            cyclic_degrees: float,
            speed: float = 40,
            leg_offset_percent: float = 0,
            mirrored_adjust: bool = False,
            brake: bool = True):
        ...

    def leg_to_pos(
            self,
            speed: float = 40,
            left_position: float = 0,
            right_position: float = 0):
        self.tank_driver.stop(brake=True)

        self.left_motor.on_for_degrees(
            speed=speed,
            degrees=left_position -
                    cyclic_position_offset(
                        rotation_sensor=self.left_motor.position,
                        cyclic_degrees=360),
            brake=True,
            block=True)

        self.right_motor.on_for_degrees(
            speed=speed,
            degrees=right_position -
                    cyclic_position_offset(
                        rotation_sensor=self.right_motor.position,
                        cyclic_degrees=360),
            brake=True,
            block=True)

    def turn(self, speed: float = 40, n_steps: int = 1):
        ...

    def walk(self, speed: float = 40):
        ...

    def walk_steps(self, speed: float = 40, n_steps: int = 1):
        ...
    else:
        m.on(-100, 10)
        while c + target < g.angle:
            pass
    m.off()


def GoStraightForward(rotation):
    GoStraightGyro(-5, g.angle, 10, rotation)


def GoStraightBackward(rotation):
    GoStraightGyro(5, g.angle, -10, rotation)


GoStraightBackward(4.5)
mr.on_for_seconds(10, 2)
GoStraightBackward(1.4)
mr.on_for_seconds(-10, 2)
TurnWithGyro(-80)
GoStraightForward(2.2)
# read color here
TurnWithGyro(60)
GoStraightForward(3)
TurnWithGyro(-90)  # -90 degrees for yellow
GoStraightForward(2.5)
ml.on_for_seconds(-30, 2)
ml.on_for_degrees(30, 30)
GoStraightBackward(7)
TurnWithGyro(-90)
GoStraightBackward(1.5)
示例#9
0
文件: c3.py 项目: Ppaulo03/SEK
# Começo

while waiting:
    if btn.any():
        sound.beep()
        global waiting
        global meeting_area
        waiting = False
        meeting_area = True
    else:
        sleep(0.01)  # Wait 0.01 second

rgbmax_e = definir_rgbmax('esq')
rgbmax_d = definir_rgbmax('dir')
garra_g.on_for_seconds(10, 1.5)
garra_m.on_for_seconds(10, 1)
mapadecores = ['vermelho', 'amarelo', 'azul']

while True:
    while meeting_area:  #começa aleatório, termina virado pro preto
        while cor('esq') == 'branco' and cor('dir') == 'branco':
            log = open('log.txt', 'a')
            log.write('Sensores no branco, indo pra frente\n')
            log.close()
            steering_pair.on(0, 20)
        else:
            log = open('log.txt', 'a')
            log.write('Algum sensor saiu do branco, para.\n')
            log.close()
            steering_pair.off()
        #trocar isso acima por alinhamento()
class MarsRov3r(IRBeaconRemoteControlledTank):
    is_gripping = False

    def __init__(self,
                 left_motor_port: str = OUTPUT_B,
                 right_motor_port: str = OUTPUT_C,
                 grip_motor_port: str = OUTPUT_A,
                 touch_sensor_port: str = INPUT_1,
                 color_sensor_port: str = INPUT_3,
                 ir_sensor_port: str = INPUT_4,
                 ir_beacon_channel: int = 1):
        super().__init__(left_motor_port=left_motor_port,
                         right_motor_port=right_motor_port,
                         ir_sensor_port=ir_sensor_port,
                         ir_beacon_channel=ir_beacon_channel)

        self.grip_motor = MediumMotor(address=grip_motor_port)

        self.touch_sensor = TouchSensor(address=touch_sensor_port)
        self.color_sensor = ColorSensor(address=color_sensor_port)

        self.ir_sensor = InfraredSensor(address=ir_sensor_port)
        self.ir_beacon_channel = ir_beacon_channel

        self.speaker = Sound()

    def grip_or_release_claw_by_ir_beacon(self):
        while True:
            if self.ir_sensor.beacon(channel=self.ir_beacon_channel):
                if self.is_gripping:
                    self.grip_motor.on_for_seconds(speed=100,
                                                   seconds=2,
                                                   brake=True,
                                                   block=True)

                    self.speaker.play_file(
                        wav_file='/home/robot/sound/Air release.wav',
                        volume=100,
                        play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)

                    self.is_gripping = False

                else:
                    self.grip_motor.on_for_seconds(speed=-100,
                                                   seconds=2,
                                                   brake=True,
                                                   block=True)

                    self.speaker.play_file(
                        wav_file='/home/robot/sound/Airbrake.wav',
                        volume=100,
                        play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)

                    self.is_gripping = True

                while self.ir_sensor.beacon(channel=self.ir_beacon_channel):
                    pass

    def main(self):
        self.grip_motor.on_for_seconds(speed=50,
                                       seconds=1,
                                       brake=True,
                                       block=True)

        Process(target=self.grip_or_release_claw_by_ir_beacon,
                daemon=True).start()

        self.keep_driving_by_ir_beacon(speed=100)
class Spik3r:
    def __init__(self,
                 sting_motor_port: str = OUTPUT_D,
                 go_motor_port: str = OUTPUT_B,
                 claw_motor_port: str = OUTPUT_A,
                 touch_sensor_port: str = INPUT_1,
                 color_sensor_port: str = INPUT_3,
                 ir_sensor_port: str = INPUT_4,
                 ir_beacon_channel: int = 1):
        self.sting_motor = LargeMotor(address=sting_motor_port)
        self.go_motor = LargeMotor(address=go_motor_port)
        self.claw_motor = MediumMotor(address=claw_motor_port)

        self.ir_sensor = InfraredSensor(address=ir_sensor_port)
        self.ir_beacon_channel = ir_beacon_channel

        self.touch_sensor = TouchSensor(address=touch_sensor_port)
        self.color_sensor = ColorSensor(address=color_sensor_port)

        self.dis = Display()
        self.speaker = Sound()

    def sting_by_ir_beacon(self):
        while True:
            if self.ir_sensor.beacon(channel=self.ir_beacon_channel):
                self.sting_motor.on_for_degrees(speed=-75,
                                                degrees=220,
                                                brake=True,
                                                block=False)

                self.speaker.play_file(wav_file='/home/robot/sound/Blip 1.wav',
                                       volume=100,
                                       play_type=Sound.PLAY_WAIT_FOR_COMPLETE)

                self.sting_motor.on_for_seconds(speed=-100,
                                                seconds=1,
                                                brake=True,
                                                block=True)

                self.sting_motor.on_for_seconds(speed=100,
                                                seconds=1,
                                                brake=True,
                                                block=True)

            while self.ir_sensor.beacon(channel=self.ir_beacon_channel):
                pass

    def be_noisy_to_people(self):
        while True:
            if self.color_sensor.reflected_light_intensity > 30:
                for i in range(4):
                    self.speaker.play_file(
                        wav_file='/home/robot/sound/Blip 2.wav',
                        volume=100,
                        play_type=Sound.PLAY_WAIT_FOR_COMPLETE)

    def pinch_if_touched(self):
        while True:
            if self.touch_sensor.is_pressed:
                self.claw_motor.on_for_seconds(speed=50,
                                               seconds=1,
                                               brake=True,
                                               block=True)

                self.claw_motor.on_for_seconds(speed=-50,
                                               seconds=0.3,
                                               brake=True,
                                               block=True)

    def keep_driving_by_ir_beacon(self):
        while True:
            if self.ir_sensor.top_left(channel=self.ir_beacon_channel) and \
                    self.ir_sensor.top_right(channel=self.ir_beacon_channel):
                self.go_motor.on(speed=91, block=False, brake=False)

            elif self.ir_sensor.top_right(channel=self.ir_beacon_channel):
                self.go_motor.on(speed=-100, brake=False, block=False)

            else:
                self.go_motor.off(brake=True)

    def main(self):
        self.dis.image_filename(filename='/home/robot/image/Evil.bmp',
                                clear_screen=True)
        self.dis.update()

        # FIXME: .sting_by_ir_beacon stops responding after a while
        Process(target=self.be_noisy_to_people, daemon=True).start()

        Process(target=self.sting_by_ir_beacon, daemon=True).start()

        Process(target=self.pinch_if_touched, daemon=True).start()

        self.keep_driving_by_ir_beacon()
示例#12
0
#!/usr/bin/env python3
from ev3dev2.motor import MediumMotor, OUTPUT_A
from ev3dev2.motor import SpeedDPS, SpeedRPS, SpeedRPM
from time import sleep
medium_motor = MediumMotor(OUTPUT_A)
# We'll make the motor turn 180 degrees
# at speed 50 (780 dps for the medium motor)
medium_motor.on_for_degrees(speed=50, degrees=180)
# then wait one second
sleep(1)
# then – 180 degrees at 500 dps
medium_motor.on_for_degrees(speed=SpeedDPS(500), degrees=-180)
sleep(1)
# then 0.5 rotations at speed 50 (780 dps)
medium_motor.on_for_rotations(speed=50, rotations=0.5)
sleep(1)
# then – 0.5  rotations at 1 rotation per second (360 dps)
medium_motor.on_for_rotations(speed=SpeedRPS(1), rotations=-0.5)
sleep(1)
medium_motor.on_for_seconds(speed=SpeedRPM(60), seconds=5)
sleep(1)
medium_motor.on(speed=60)
sleep(2)
medium_motor.off()
示例#13
0
#!/usr/bin/env python3
from ev3dev2.sensor.lego import TouchSensor, ColorSensor
from time import sleep
from ev3dev2.motor import MoveTank, MediumMotor, LargeMotor, OUTPUT_A, OUTPUT_B, OUTPUT_C  #we're importing the motor function
from ev3dev2.motor import SpeedDPS, SpeedRPM, SpeedRPS, SpeedDPM

cl = ColorSensor()
ts = TouchSensor()
tank_pair = MoveTank(OUTPUT_C, OUTPUT_B)
# Stop program by long-pressing touch sensor button
#his program will make the color sensor display RGB colors together
sm = MediumMotor(OUTPUT_A)
#sm.on_for_seconds(speed = -20, seconds = 8)
#sm.on_for_seconds(speed = -20, seconds = 8)
sm.on_for_seconds(speed=20, seconds=8)
tank_pair.on_for_degrees(10, 10, 726)
tank_pair.on_for_degrees(10, -10, 180)

while not ts.is_pressed:
    # rgb is a tuple containing three integers
    # each 0-255 representing the amount of
    # red, green and blue in the reflected light
    print(cl.rgb)
    red = cl.rgb[0]
    green = cl.rgb[1]
    blue = cl.rgb[2]

    if red > 10 and green > 10 and blue > 10:
        tank_pair.on_for_degrees(3, 3, 45)
        tank_pair.on_for_degrees(-10, 10, 180)
        tank_pair.on_for_degrees(-3, -3, 180)
        TANK_DRIVER.on(left_speed=0, right_speed=-speed)

    elif IR_SENSOR.bottom_right(channel):
        # right backward
        TANK_DRIVER.on(left_speed=-speed, right_speed=0)

    else:
        TANK_DRIVER.off(brake=False)


while True:
    drive_once_by_ir_beacon(channel=1, speed=100)

    if IR_SENSOR.proximity < 30:
        MEDIUM_MOTOR.on_for_seconds(speed=50,
                                    seconds=0.9,
                                    block=True,
                                    brake=True)

    if COLOR_SENSOR.reflected_light_intensity > 30:
        TANK_DRIVER.on(left_speed=50, right_speed=50)
    else:
        TANK_DRIVER.off(brake=False)

    if TOUCH_SENSOR.is_pressed:
        for i in range(3):
            SPEAKER.play_file(wav_file='/home/robot/sound/Okey-dokey.wav',
                              volume=100,
                              play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)

            TANK_DRIVER.on_for_seconds(left_speed=-50,
                                       right_speed=50,
#!/usr/bin/env micropython


from ev3dev2.motor import LargeMotor, MediumMotor, OUTPUT_A, OUTPUT_B


LARGE_MOTOR = LargeMotor(address=OUTPUT_B)
MEDIUM_MOTOR = MediumMotor(address=OUTPUT_A)


LARGE_MOTOR.on(
    speed=100,
    brake=False,
    block=False)

for i in range(3):
    MEDIUM_MOTOR.on_for_seconds(
        speed=10,
        seconds=1,
        brake=False,
        block=True)

    MEDIUM_MOTOR.on_for_seconds(
        speed=-10,
        seconds=1,
        brake=False,
        block=True)
示例#16
0
medMot = MediumMotor(OUTPUT_A)
medMot.stop_action = 'hold'
mySnd = Sound()

medMot.on_to_position(30, 0)

mySnd.speak("looking left and right")
medMot.on_to_position(10, 90)
time.sleep(0.5)
medMot.on_to_position(10, -90)
time.sleep(0.5)
medMot.on_to_position(10, 0)

mySnd.speak("spinning")
medMot.on_for_seconds(80, 1)

medMot.on_to_position(50, 0)
mySnd.speak("fixed turn")
for i in range(12):
    medMot.on_for_degrees(30, 30)
    time.sleep(1.0)
medMot.stop()

bttn = Button()
mySnd.speak("Turns until button pressed")

medMot.on(-20)
while True:
    if bttn.enter == 1:
        break
示例#17
0
display = Display()
screenw = display.xres
screenh = display.yres

# hostMACAddress = '00:17:E9:B2:8A:AF' # The MAC address of a Bluetooth adapter on the server. The server might have multiple Bluetooth adapters.
# Fetch BT MAC address automatically
cmd = "hciconfig"
device_id = "hci0"
sp_result = subprocess.run(cmd, stdout=subprocess.PIPE, universal_newlines=True)
hostMACAddress = sp_result.stdout.split("{}:".format(device_id))[1].split("BD Address: ")[1].split(" ")[0].strip()
debug_print (hostMACAddress)
print (hostMACAddress)

# reset the kick motor to a known good position
kickMotor.on_for_seconds(speed=-10, seconds=0.5)
kickMotor.on_for_seconds(speed=10, seconds=2, brake=False)
kickMotor.reset()
kicking = False
kick_power = 0
max_kick = 1000

port = 3  # port number is arbitrary, but must match between server and client
backlog = 1
size = 1024
s = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
s.bind((hostMACAddress, port))
s.listen(backlog)
while True:
    try:
        reset_console()
from time import sleep


MEDIUM_MOTOR = MediumMotor(address=OUTPUT_A)
GO_MOTOR = LargeMotor(address=OUTPUT_B)
STING_MOTOR = LargeMotor(address=OUTPUT_D)

INFRARED_SENSOR = InfraredSensor(address=INPUT_4)

SPEAKER = Sound()


MEDIUM_MOTOR.on_for_seconds(
    speed=50,
    seconds=1,
    block=True,
    brake=True)

MEDIUM_MOTOR.on_for_seconds(
    speed=-50,
    seconds=0.3,
    block=True,
    brake=True)

STING_MOTOR.on_for_seconds(
    speed=40,
    seconds=1,
    brake=True,
    block=True)
示例#19
0
from ev3dev2.sensor import Sensor, INPUT_1, INPUT_2, INPUT_3, INPUT_4
from ev3dev2.sensor.lego import TouchSensor
from ev3dev2.motor import MoveTank, SpeedPercent, OUTPUT_A, OUTPUT_B, OUTPUT_D, MediumMotor

motor = MediumMotor(OUTPUT_D)
motor.on_for_seconds(100, 5)
        TAIL_MOTOR.on(
            speed=-100,
            brake=False,
            block=False)

        CHEST_MOTOR.on_for_seconds(
            speed=-30,
            seconds=1,
            brake=True,
            block=True)

        sleep(2)

        MEDIUM_MOTOR.on_for_seconds(
            speed=-100,
            seconds=1,
            brake=True,
            block=True)

        sleep(1)

    else:
        LIGHTS.animate_flash(
            color=Leds.ORANGE,
            groups=(Leds.LEFT, Leds.RIGHT),
            block=False)

        TAIL_MOTOR.on(
            speed=100,
            brake=False,
            block=False)
示例#21
0
class Dinor3x:
    FAST_WALK_SPEED = 80
    NORMAL_WALK_SPEED = 40
    SLOW_WALK_SPEED = 20

    def __init__(self,
                 jaw_motor_port: str = OUTPUT_A,
                 left_motor_port: str = OUTPUT_B,
                 right_motor_port: str = OUTPUT_C,
                 touch_sensor_port: str = INPUT_1,
                 color_sensor_port: str = INPUT_3,
                 ir_sensor_port: str = INPUT_4,
                 ir_beacon_channel: int = 1):
        self.jaw_motor = MediumMotor(address=jaw_motor_port)

        self.left_motor = LargeMotor(address=left_motor_port)
        self.right_motor = LargeMotor(address=right_motor_port)
        self.tank_driver = MoveTank(left_motor_port=left_motor_port,
                                    right_motor_port=right_motor_port,
                                    motor_class=LargeMotor)
        self.steer_driver = MoveSteering(left_motor_port=left_motor_port,
                                         right_motor_port=right_motor_port,
                                         motor_class=LargeMotor)

        self.touch_sensor = TouchSensor(address=touch_sensor_port)
        self.color_sensor = ColorSensor(address=color_sensor_port)

        self.ir_sensor = InfraredSensor(address=ir_sensor_port)
        self.ir_beacon_channel = ir_beacon_channel

        self.speaker = Sound()

        self.roaring = False
        self.walk_speed = self.NORMAL_WALK_SPEED

    def roar_by_ir_beacon(self):
        """
        Dinor3x roars when the Beacon button is pressed
        """
        if self.ir_sensor.beacon(channel=self.ir_beacon_channel):
            self.roaring = True
            self.open_mouth()
            self.roar()

        elif self.roaring:
            self.roaring = False
            self.close_mouth()

    def change_speed_by_color(self):
        """
        Dinor3x changes its speed when detecting some colors
        - Red: walk fast
        - Green: walk normally
        - White: walk slowly
        """
        if self.color_sensor.color == ColorSensor.COLOR_RED:
            self.speaker.speak(text='RUN!',
                               volume=100,
                               play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)
            self.walk_speed = self.FAST_WALK_SPEED
            self.walk(speed=self.walk_speed)

        elif self.color_sensor.color == ColorSensor.COLOR_GREEN:
            self.speaker.speak(text='Normal',
                               volume=100,
                               play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)
            self.walk_speed = self.NORMAL_WALK_SPEED
            self.walk(speed=self.walk_speed)

        elif self.color_sensor.color == ColorSensor.COLOR_WHITE:
            self.speaker.speak(text='slow...',
                               volume=100,
                               play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)
            self.walk_speed = self.SLOW_WALK_SPEED
            self.walk(speed=self.walk_speed)

    def walk_by_ir_beacon(self):
        """
        Dinor3x walks or turns according to instructions from the IR Beacon
        - 2 top/up buttons together: walk forward
        - 2 bottom/down buttons together: walk backward
        - Top Left / Red Up: turn left on the spot
        - Top Right / Blue Up: turn right on the spot
        - Bottom Left / Red Down: stop
        - Bottom Right / Blue Down: calibrate to make the legs straight
        """

        # forward
        if self.ir_sensor.top_left(channel=self.ir_beacon_channel) and \
                self.ir_sensor.top_right:
            self.walk(speed=self.walk_speed)

        # backward
        elif self.ir_sensor.bottom_left(channel=self.ir_beacon_channel) and \
                self.ir_sensor.bottom_right(channel=self.ir_beacon_channel):
            self.walk(speed=-self.walk_speed)

        # turn left on the spot
        elif self.ir_sensor.top_left(channel=self.ir_beacon_channel):
            self.turn(speed=self.walk_speed)

        # turn right on the spot
        elif self.ir_sensor.top_right(channel=self.ir_beacon_channel):
            self.turn(speed=-self.walk_speed)

        # stop
        elif self.ir_sensor.bottom_left(channel=self.ir_beacon_channel):
            self.tank_driver.off(brake=True)

        # calibrate legs
        elif self.ir_sensor.bottom_right(channel=self.ir_beacon_channel):
            self.calibrate_legs()

    def calibrate_legs(self):
        self.tank_driver.on(left_speed=10, right_speed=20)

        self.touch_sensor.wait_for_released()

        self.tank_driver.off(brake=True)

        self.left_motor.on(speed=40)

        self.touch_sensor.wait_for_pressed()

        self.left_motor.off(brake=True)

        self.left_motor.on_for_rotations(rotations=-0.2,
                                         speed=50,
                                         brake=True,
                                         block=True)

        self.right_motor.on(speed=40)

        self.touch_sensor.wait_for_pressed()

        self.right_motor.off(brake=True)

        self.right_motor.on_for_rotations(rotations=-0.2,
                                          speed=50,
                                          brake=True,
                                          block=True)

        self.left_motor.reset()
        self.right_motor.reset()

    def walk(self, speed: float = 100):
        self.calibrate_legs()

        self.steer_driver.on(steering=0, speed=-speed)

    def turn(self, speed: float = 100):
        self.calibrate_legs()

        if speed >= 0:
            self.left_motor.on_for_degrees(degrees=180,
                                           speed=speed,
                                           brake=True,
                                           block=True)

        else:
            self.right_motor.on_for_degrees(degrees=180,
                                            speed=-speed,
                                            brake=True,
                                            block=True)

        self.tank_driver.on(left_speed=speed, right_speed=-speed)

    def close_mouth(self):
        self.jaw_motor.on_for_seconds(speed=-20,
                                      seconds=1,
                                      brake=False,
                                      block=False)

    def open_mouth(self):
        self.jaw_motor.on_for_seconds(speed=20,
                                      seconds=1,
                                      block=False,
                                      brake=False)

    def roar(self):
        self.speaker.play_file(wav_file='T-rex roar.wav',
                               volume=100,
                               play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)

        self.jaw_motor.on_for_degrees(speed=40,
                                      degrees=-60,
                                      block=True,
                                      brake=True)

        for i in range(12):
            self.jaw_motor.on_for_seconds(speed=-40,
                                          seconds=0.05,
                                          block=True,
                                          brake=True)

            self.jaw_motor.on_for_seconds(speed=40,
                                          seconds=0.05,
                                          block=True,
                                          brake=True)

        self.jaw_motor.on_for_seconds(speed=20,
                                      seconds=0.5,
                                      brake=False,
                                      block=True)

    def main(self):
        self.close_mouth()

        while True:
            self.roar_by_ir_beacon()
            self.change_speed_by_color()
            self.walk_by_ir_beacon()
示例#22
0
#!/usr/bin/env python3
from ev3dev2.motor import LargeMotor, OUTPUT_D, OUTPUT_A
from ev3dev2.motor import MediumMotor, OUTPUT_B
from ev3dev2.motor import MediumMotor, MoveSteering, OUTPUT_A, OUTPUT_D
from ev3dev2.motor import SpeedDPS, SpeedRPM, SpeedRPS, SpeedDPM
from time import sleep


lmA = LargeMotor(OUTPUT_A)
lmD = LargeMotor(OUTPUT_D)
SmB = MediumMotor(OUTPUT_B)
steer_pair = MoveSteering(OUTPUT_D, OUTPUT_A)
steer_pair.on_for_rotations(0,SpeedRPS(2),3)
SmB.on_for_seconds(SpeedRPS(1),1)
steer_pair.on_for_rotations(0,SpeedRPS(2),3)
SmB.on_for_seconds(SpeedRPS(-1),1)
示例#23
0
#!/usr/bin/env python3
from ev3dev2.motor import MediumMotor, MoveSteering, OUTPUT_A, OUTPUT_D, OUTPUT_B, OUTPUT_C, MoveTank
from ev3dev2.motor import SpeedDPS, SpeedRPM, SpeedRPS, SpeedDPM
from time import sleep
tank_pair = MoveTank(OUTPUT_B, OUTPUT_C)
UnD = MediumMotor(OUTPUT_D)
LnR = MediumMotor(OUTPUT_A)
tank_pair.on_for_rotations(right_speed=20, left_speed=40, rotations=2)
tank_pair.on_for_rotations(left_speed=20, right_speed=40, rotations=2)
UnD.on_for_seconds(speed=10, seconds=3)
LnR.on_for_seconds(speed=-10, seconds=3)
UnD.on_for_seconds(speed=-70, seconds=.5)
LnR.on_for_seconds(speed=70, seconds=.5)
#going forward while moving both motors
UnD.on_for_seconds(speed=70, seconds=.5, block=False)
LnR.on_for_seconds(speed=-70, seconds=.5, block=False)
tank_pair.on_for_seconds(right_speed=30, left_speed=30, seconds=.5)
#going backwards while restoring both motors
UnD.on_for_seconds(speed=-10, seconds=3, block=False)
LnR.on_for_seconds(speed=10, seconds=3, block=False)
tank_pair.on_for_seconds(right_speed=-10, left_speed=-10, seconds=3)
示例#24
0
class R3ptar:
    def __init__(self,
                 turn_motor_port: str = OUTPUT_A,
                 move_motor_port: str = OUTPUT_B,
                 scare_motor_port: str = OUTPUT_D,
                 touch_sensor_port: str = INPUT_1,
                 color_sensor_port: str = INPUT_3,
                 ir_sensor_port: str = INPUT_4,
                 ir_beacon_channel: int = 1):
        self.turn_motor = MediumMotor(address=turn_motor_port)
        self.move_motor = LargeMotor(address=move_motor_port)
        self.scare_motor = LargeMotor(address=scare_motor_port)

        self.touch_sensor = TouchSensor(address=touch_sensor_port)
        self.color_sensor = ColorSensor(address=color_sensor_port)

        self.ir_sensor = InfraredSensor(address=ir_sensor_port)
        self.ir_beacon_channel = ir_beacon_channel

        self.noise = Sound()

    def keep_driving_by_ir_beacon(self, speed: float = 100):
        while True:
            if self.ir_sensor.top_left(channel=self.ir_beacon_channel) and \
                    self.ir_sensor.top_right(channel=self.ir_beacon_channel):
                self.move_motor.on(speed=speed, brake=False, block=False)

            elif self.ir_sensor.bottom_left(channel=self.ir_beacon_channel) and \
                    self.ir_sensor.bottom_right(channel=self.ir_beacon_channel):
                self.move_motor.on(speed=-speed, brake=False, block=False)

            elif self.ir_sensor.top_left(channel=self.ir_beacon_channel):
                self.turn_motor.on(speed=-50, brake=False, block=False)

                self.move_motor.on(speed=speed, brake=False, block=False)

            elif self.ir_sensor.top_right(channel=self.ir_beacon_channel):
                self.turn_motor.on(speed=50, brake=False, block=False)

                self.move_motor.on(speed=speed, brake=False, block=False)

            elif self.ir_sensor.bottom_left(channel=self.ir_beacon_channel):
                self.turn_motor.on(speed=-50, brake=False, block=False)

                self.move_motor.on(speed=-speed, brake=False, block=False)

            elif self.ir_sensor.bottom_right(channel=self.ir_beacon_channel):
                self.turn_motor.on(speed=50, brake=False, block=False)

                self.move_motor.on(speed=-speed, brake=False, block=False)

            else:
                self.turn_motor.off(brake=True)

                self.move_motor.off(brake=False)

    def bite_by_ir_beacon(self, speed: float = 100):
        while True:
            if self.ir_sensor.beacon(channel=self.ir_beacon_channel):
                self.scare_motor.on_for_seconds(speed=speed,
                                                seconds=1,
                                                brake=True,
                                                block=False)

                self.noise.play_file(
                    wav_file='/home/robot/sound/Snake hiss.wav',
                    volume=100,
                    play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)

                self.scare_motor.on_for_seconds(speed=-speed,
                                                seconds=1,
                                                brake=True,
                                                block=True)

                while self.ir_sensor.beacon(channel=self.ir_beacon_channel):
                    pass

    def run_away_if_chased(self):
        while True:
            if self.color_sensor.reflected_light_intensity > 30:
                self.move_motor.on_for_seconds(speed=50,
                                               seconds=4,
                                               brake=True,
                                               block=False)

                for i in range(2):
                    self.turn_motor.on_for_seconds(speed=50,
                                                   seconds=1,
                                                   brake=False,
                                                   block=True)

                    self.turn_motor.on_for_seconds(speed=-50,
                                                   seconds=1,
                                                   brake=False,
                                                   block=True)

    def bite_if_touched(self):
        while True:
            if self.touch_sensor.is_pressed:
                self.scare_motor.on_for_seconds(speed=100,
                                                seconds=1,
                                                brake=True,
                                                block=False)

                self.noise.play_file(
                    wav_file='/home/robot/sound/Snake hiss.wav',
                    volume=100,
                    play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)

                self.scare_motor.on_for_seconds(speed=-10,
                                                seconds=10,
                                                brake=True,
                                                block=True)

    def main(self, speed: float = 100):
        Thread(target=self.bite_by_ir_beacon).start()

        Thread(target=self.bite_if_touched).start()

        Thread(target=self.run_away_if_chased).start()

        self.keep_driving_by_ir_beacon(speed=speed)
示例#25
0
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

The views and conclusions contained in the software and documentation are those
of the authors and should not be interpreted as representing official policies,
either expressed or implied, of the FLL Robot Framework project.

--------------------------------------------------------------------------------
'''

from ev3dev2.motor import MediumMotor, LargeMotor, OUTPUT_B, OUTPUT_C

largeMotor_Left = LargeMotor(OUTPUT_B)
largeMotor_Right = LargeMotor(OUTPUT_C)
mediumMotor = MediumMotor()

# run these in parallel
largeMotor_Left.on_for_seconds(speed=50, seconds=2, brake=True)
largeMotor_Right.on_for_seconds(speed=50, seconds=4, brake=True)

# run this after the previous have completed
mediumMotor.on_for_seconds(speed=10, seconds=6)
示例#26
0
class Spik3r:
    def __init__(self,
                 claw_motor_port: str = OUTPUT_A,
                 move_motor_port: str = OUTPUT_B,
                 sting_motor_port: str = OUTPUT_D,
                 touch_sensor_port: str = INPUT_1,
                 ir_sensor_port: str = INPUT_4,
                 ir_beacon_channel: int = 1):
        self.claw_motor = MediumMotor(address=claw_motor_port)
        self.move_motor = LargeMotor(address=move_motor_port)
        self.sting_motor = LargeMotor(address=sting_motor_port)

        self.ir_sensor = InfraredSensor(address=ir_sensor_port)
        self.ir_beacon_channel = ir_beacon_channel

        self.touch_sensor = TouchSensor(address=touch_sensor_port)

        self.speaker = Sound()

    def snap_claw_if_touched(self):
        if self.touch_sensor.is_pressed:
            self.claw_motor.on_for_seconds(speed=50,
                                           seconds=1,
                                           brake=True,
                                           block=True)

            self.claw_motor.on_for_seconds(speed=-50,
                                           seconds=0.3,
                                           brake=True,
                                           block=True)

    def move_by_ir_beacon(self):
        if self.ir_sensor.top_left(channel=self.ir_beacon_channel) and \
                self.ir_sensor.top_right(channel=self.ir_beacon_channel):
            self.move_motor.on(speed=100, block=False, brake=False)

        elif self.ir_sensor.top_right(channel=self.ir_beacon_channel):
            self.move_motor.on(speed=-100, brake=False, block=False)

        else:
            self.move_motor.off(brake=False)

    def sting_by_ir_beacon(self):
        if self.ir_sensor.beacon(channel=self.ir_beacon_channel):
            self.sting_motor.on_for_degrees(speed=-75,
                                            degrees=220,
                                            brake=True,
                                            block=False)

            self.speaker.play_file(wav_file='Blip 3.wav',
                                   volume=100,
                                   play_type=Sound.PLAY_WAIT_FOR_COMPLETE)

            self.sting_motor.on_for_seconds(speed=-100,
                                            seconds=1,
                                            brake=True,
                                            block=True)

            self.sting_motor.on_for_seconds(speed=40,
                                            seconds=1,
                                            brake=True,
                                            block=True)

            while self.ir_sensor.beacon(channel=self.ir_beacon_channel):
                pass

    def main(self):
        while True:
            self.snap_claw_if_touched()
            self.move_by_ir_beacon()
            self.sting_by_ir_beacon()
示例#27
0
#!/usr/bin/env python3
from ev3dev2.motor import MediumMotor, OUTPUT_B
from time import sleep
mm = MediumMotor()
mm.on(speed=50, brake=True, block=False)
sleep(1)
mm.off()
sleep(1)
mm.on_for_seconds(speed=50, seconds=2, brake=True, block=True)
sleep(1)
mm.on_for_rotations(50, 3)
sleep(1)
mm.on_for_degrees(50, 90)
sleep(1)
mm.on_to_position(50, 180)
sleep(1)
#!/usr/bin/env micropython

from ev3dev2.motor import MediumMotor, OUTPUT_A
from ev3dev2.sensor import INPUT_4
from ev3dev2.sensor.lego import InfraredSensor
from ev3dev2.sound import Sound

MEDIUM_MOTOR = MediumMotor(address=OUTPUT_A)

IR_SENSOR = InfraredSensor(address=INPUT_4)

SPEAKER = Sound()

is_gripping = False

MEDIUM_MOTOR.on_for_seconds(speed=50, seconds=1, brake=True, block=True)

while True:
    if IR_SENSOR.beacon(channel=1):
        if is_gripping:
            MEDIUM_MOTOR.on_for_seconds(speed=100,
                                        seconds=2,
                                        brake=True,
                                        block=True)

            SPEAKER.play_file(wav_file='/home/robot/sound/Air release.wav',
                              volume=100,
                              play_type=Sound.PLAY_NO_WAIT_FOR_COMPLETE)

            is_gripping = False
from time import sleep

MEDIUM_MOTOR = MediumMotor(address=OUTPUT_A)
TANK_DRIVER = MoveTank(left_motor_port=OUTPUT_B,
                       right_motor_port=OUTPUT_C,
                       motor_class=LargeMotor)
STEER_DRIVER = MoveSteering(left_motor_port=OUTPUT_B,
                            right_motor_port=OUTPUT_C,
                            motor_class=LargeMotor)

IR_SENSOR = InfraredSensor(address=INPUT_4)

SCREEN = Display()
SPEAKER = Sound()

MEDIUM_MOTOR.on_for_seconds(speed=-20, seconds=1, block=True, brake=True)

while True:
    if IR_SENSOR.proximity < 25:
        SCREEN.image_filename(filename='/home/robot/image/Pinch right.bmp',
                              clear_screen=True)
        SCREEN.update()

        STEER_DRIVER.on_for_degrees(steering=-100,
                                    speed=75,
                                    degrees=1000,
                                    brake=True,
                                    block=True)

        SCREEN.image_filename(filename='/home/robot/image/Angry.bmp',
                              clear_screen=True)