def move_backward(m1, m2, t): m1.stop() m2.stop() m1.backward() m2.backward() Tools.delay(t) m1.stop() m2.stop()
def turn(m1, m2, t): m1.stop() m2.stop() m1.backward() m2.forward() Tools.delay(t) m1.stop() m2.stop()
def back_away(m1, m2, t): m1.stop() m2.stop() m1.backward m2.backward() Tools.delay(t) m1.stop() m2.stop()
def move_forward(m1, m2, t): m1.stop() m2.stop() m1.forward() m2.forward() Tools.delay(t) m1.stop() m2.stop()
def snap_jaw(jaw, i): for j in range(0, i): jaw.setSpeed(50) jaw.forward() Tools.delay(130) jaw.stop() Tools.delay(100) jaw.backward() Tools.delay(130) jaw.stop() Tools.delay(100) # sync the jaw back to closed jaw.backward() Tools.delay(500) #close jaw jaw.stop() Tools.delay(100) jaw.forward() Tools.delay(100) #open it slightly jaw.stop() Tools.delay(100)
def motor_backward(motor, t): motor.stop() motor.backward() Tools.delay(t) motor.stop()
def motor_forward(motor, t): motor.stop() motor.forward() Tools.delay(t) motor.stop()
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) sync_legs(motor1, motor2, ts1, ts2, 400) # make it non butterfly motor1.backward() # actually forward motor2.backward()
def stop(m1, m2, t): m1.stop() m2.stop() Tools.delay(t)
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)
def shoot(m, t): m.forward() Tools.delay(t) m.stop()
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()
robot = NxtRobot() motor1 = Motor(MotorPort.B) motor2 = Motor(MotorPort.C) ts1 = TouchSensor(SensorPort.S1) ts2 = TouchSensor(SensorPort.S2) robot.addPart(motor1) robot.addPart(motor2) robot.addPart(ts1) robot.addPart(ts2) m1counter = 0 m2counter = 1 while true: if (ts1.isPressed()): if (m1counter == 0): motor1.forward() m1counter = 5 if (ts2.isPressed()): if (m2counter == 0): motor2.forward() m2counter = 5 if (m1counter == 0): motor1.stop() else: m1counter = m1counter - 1 if (m2counter == 0): motor2.stop() else: m2counter = m2counter - 1 Tools.delay(500)
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)