Exemple #1
0
	l1.backward() # forward
	l2.backward()
	s1pressed = False
	s2pressed = False
	while not (s1pressed and s2pressed):
		if (s1.isPressed()):
			s1pressed = True
			l1.stop()
		if (s2.isPressed()):
			s2pressed = True
			l2.stop()
	motor_forward(l1, desync_offset) # add desired desync

sync_legs(motor1, motor2, ts1, ts2, 400) # 400 desync makes it non-butterfly
while True:
	if (us.getDistance() < 40):
		motor1.stop()
		motor2.stop()
		Tools.delay(1500)
		move_forward(motor1, motor2, 3000) # due to motor setup, forward is actually backward
		sync_legs(motor1, motor2, ts1, ts2, 0) # make it stand up
		snap_jaw(jaw, 3)
		if (randint(0,1) == 0):
			turn(motor1, motor2, 4000)
			sync_legs(motor1, motor2, ts1, ts2, 0)
			Tools.delay(1500)
			sync_legs(motor1, motor2, ts1, ts2, 400) # make it non butterfly
		else:
			turn(motor2, motor1, 4000)
			sync_legs(motor1, motor2, ts1, ts2, 0)
			Tools.delay(1500)
Exemple #2
0
gunmotor = Motor(MotorPort.A)
motor1 = Motor(MotorPort.B)
motor2 = Motor(MotorPort.C)
us = UltrasonicSensor(SensorPort.S4)
robot.addPart(gunmotor)
robot.addPart(motor1)
robot.addPart(motor2)
robot.addPart(us)

def start_turn(m1, m2):
    m1.stop()
    m2.stop()
    m1.backward()
    m2.forward()

def stop(m1, m2, t):
    m1.stop()
    m2.stop()
    Tools.delay(t)

start_turn(motor1, motor2)
while true:
    if (us.getDistance() < 80):
        stop(motor1, motor2, 500)
        gunmotor.forward()
        Tools.delay(1000)
        gunmotor.stop()
        start_turn(motor1, motor2)
        Tools.delay(400) # don't shoot again for awhile
    Tools.delay(20)
start_forward(motor1, motor2)
last_us_distance = -1
while True:
    t1 = ts1.isPressed()
    t2 = ts2.isPressed()
    if (t1 and t2):
        move_backward(motor1, motor2, 500)
        turn(motor1, motor2, 400)
        start_forward(motor1, motor2)
    else:
        if t1:
            move_backward(motor1, motor2, 1000)
            turn(motor2, motor1, 800)
            start_forward(motor1, motor2)
        elif t2:
            move_backward(motor1, motor2, 1000)
            turn(motor1, motor2, 800)
            start_forward(motor1, motor2)

    # if something appears close to sensor suddenly
    if (last_us_distance != -1 and last_us_distance - us.getDistance() > 50):
        stopfor(motor1, motor2, 1000)
        # shoot it!
        gunmotor.forward()
        Tools.delay(1000)
        gunmotor.stop()
        start_forward(motor1, motor2)

    last_us_distance = us.getDistance();
    Tools.delay(20)
robot.addPart(ts2)
robot.addPart(us)

def back_away(m1, m2, t):
    m1.stop()
    m2.stop()
    m1.backward
    m2.backward()
    Tools.delay(t)
    m1.stop()
    m2.stop()

def shoot(m, t):
    m.forward()
    Tools.delay(t)
    m.stop()

for i in range(5):
    # wait until something approaches
    while(us.getDistance() > 80):
        Tools.delay(20)
    # back away when it does
    back_away(m1, m2, 1000)
    if ts1.isPressed() or ts2.isPressed():
        # shoot if backed against wall!
        shoot(gunmotor, 1000)

# after we're forced back 5 times
# we just open fire!
shoot(gunmotor, 10000)
robot.exit()
    m1.stop()
    m2.stop()
    m1.backward()
    m2.forward()

def stop(m1, m2, t):
    m1.stop()
    m2.stop()
    Tools.delay(t)
    
def move_forward(m1, m2, t):
    m1.stop()
    m2.stop()
    m1.forward()
    m2.forward()
    Tools.delay(t)

# start turning
start_turn(motor1, motor2)
# find largest us value
largest_us_value = 0
for i in range(20):
    us_value = us.getDistance()
    if (us_value > largest_us_value):
        largest_us_value = us_value
    Tools.delay(20)
# spin until facing direction of largest us value
while (us.getDistance() < largest_us_value):
    continue
# move in the discovered direction like a boss
move_forward(5000)