ES ES SPIKE Prime Python Programs

Download as pdf or txt
Download as pdf or txt
You are on page 1of 31
At a glance
Powered by AI
The document describes several Python programs that can be created using the SPIKE Prime hub and its components like motors, sensors and the light matrix to control devices and respond to inputs. It also presents various lessons and projects that can be built with SPIKE Prime to teach STEM concepts.

Examples of programs described include using a color sensor and sounds to respond to different colors, using motors to move a hopper in a race, and using buttons on the hub to control lights and sounds.

The SPIKE Prime hub can be used to control components like motors and sensors. Buttons on the hub can be programmed to trigger events. The light matrix can display patterns. Motors can be controlled to move and sensors can detect inputs like color, force or rotation to trigger responses in programs.

SPIKE™ Prime de LEGO® Education

Programas Python
Posibles soluciones

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
2/31

SPIKE™ Prime de LEGO® Education

¡Ayuda!
https://education.lego.com/es-es/lessons/prime-
invention-squad/help

from spike import PrimeHub, App, ColorSensor


from spike.control import wait_for_seconds

hub = PrimeHub()
app = App()
color_sensor = ColorSensor('B')

# Esta es la historia n.º 1: Kiki está paseando. Está feliz de salir a tomar el aire, pero de repente...
hub.left_button.wait_until_pressed()

color_sensor.wait_until_color('blue')
app.play_sound('Traffic')

color_sensor.wait_until_color('yellow')
app.play_sound('Ring Tone')

color_sensor.wait_until_color('green')
app.play_sound('Dog Bark 1')
app.play_sound('Dog Bark 1')

# Esta es la historia n.º 2:


hub.right_button.wait_until_pressed()

color_sensor.wait_until_color('blue')
app.play_sound('Door Knock')

color_sensor.wait_until_color('yellow')
app.play_sound('Glass Breaking')

color_sensor.wait_until_color('green')
app.play_sound('Dog Bark 3')

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
3/31

SPIKE™ Prime de LEGO® Education

Carrera de
saltadores
https://education.lego.com/es-es/lessons/prime-
invention-squad/hopper-race

from spike import PrimeHub, MotorPair


from spike.control import wait_for_seconds

hub = PrimeHub()
hop_motors = MotorPair('E', 'F')

hop_motors.set_default_speed(50)

hub.light_matrix.write('3')
wait_for_seconds(1)

hub.light_matrix.write('2')
wait_for_seconds(1)

hub.light_matrix.write('1')
wait_for_seconds(1)

# Ajústalo para cambiar la distancia que recorrerá tu saltador.


# --------------v
hop_motors.move(10, 'seconds')

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
4/31

SPIKE™ Prime de LEGO® Education

Superlimpieza
https://education.lego.com/es-es/lessons/prime-
invention-squad/super-cleanup

from spike import ForceSensor, Motor

force_sensor = ForceSensor('E')
grabber_motor = Motor('A')

while True:
force_sensor.wait_until_pressed()
grabber_motor.set_stall_detection(False)
grabber_motor.start(-75)

force_sensor.wait_until_released()
grabber_motor.set_stall_detection(True)
grabber_motor.start(75)

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
5/31

SPIKE™ Prime de LEGO® Education

Roto
https://education.lego.com/es-es/lessons/prime-
invention-squad/broken

from spike import PrimeHub, Motor


from spike.control import wait_for_seconds
hub = PrimeHub()
x_motor = Motor('A')
y_motor = Motor('C')

hub.left_button.wait_until_pressed()
x_motor.set_default_speed(-100)
x_motor.run_for_seconds(1.5)
wait_for_seconds(1)

# Estas líneas deberían «cortar» un cuadrado.


x_motor.set_default_speed(100)
y_motor.set_default_speed(100)
x_motor.run_for_degrees(400)
y_motor.run_for_degrees(575)
x_motor.run_for_degrees(-400)
y_motor.run_for_degrees(-575)

hub.right_button.wait_until_pressed()
x_motor.set_default_speed(100)
x_motor.run_for_seconds(1.5)

wait_for_seconds(1)
# Estas líneas deberían «cortar» un rectángulo.
x_motor.run_for_degrees(-60)
x_motor.run_for_degrees(-400)
y_motor.run_for_degrees(-800)
x_motor.run_for_degrees(400)
y_motor.run_for_degrees(800)

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
6/31

SPIKE™ Prime de LEGO® Education

Diseñar para
alguien
https://education.lego.com/es-es/lessons/prime-
invention-squad/design-for-someone

from spike import PrimeHub, Motor, ForceSensor


from spike.control import wait_for_seconds

hub = PrimeHub()
motor_a = Motor('A')
motor_e = Motor('E')
force_sensor = ForceSensor('B')

motor_a.set_default_speed(100)
motor_e.set_default_speed(-100)
motor_a.set_stall_detection(False)
motor_e.set_stall_detection(False)
motor_a.set_stop_action('hold')
motor_e.set_stop_action('hold')

motor_a.run_to_position(0)
hub.speaker.beep(60)
hub.speaker.beep(72)

# Haz que la prótesis se agarre al brazo de alguien


motor_a.run_for_seconds(1)
motor_e.run_for_seconds(1)

while True:
if hub.right_button.was_pressed():
# Haz que la prótesis se suelte
motor_a.run_to_position(0)
motor_e.run_to_position(0)
break

if force_sensor.get_force_newton() > 5:
hub.light_matrix.show_image('SQUARE')
else:
hub.light_matrix.off()

wait_for_seconds(0.01)

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
7/31

SPIKE™ Prime de LEGO® Education

Haz tu pedido
https://education.lego.com/es-es/lessons/prime-
kickstart-a-business/place-your-order

from spike import PrimeHub, App, ColorSensor, DistanceSensor, Motor


from spike.control import wait_for_seconds

hub = PrimeHub()
app = App()
distance_sensor = DistanceSensor('C')
color_sensor = ColorSensor('D')
arm_motor = Motor('A')
base_motor = Motor('F')

arm_motor.set_default_speed(50)
base_motor.set_default_speed(50)

arm_motor.run_to_position(350)
base_motor.run_to_position(350)

app.start_sound('Connect')
distance_sensor.light_up_all()

for x in range(10):
hub.light_matrix.show_image('HEART')
wait_for_seconds(0.5)
hub.light_matrix.show_image('HEART_SMALL')
wait_for_seconds(0.5)

hub.light_matrix.show_image('HEART')

while True:
color_sensor.wait_until_color('violet')
arm_motor.run_for_degrees(30)
arm_motor.run_for_degrees(-60)
arm_motor.run_for_degrees(60)
arm_motor.run_for_degrees(-30)
app.start_sound('Connect')
hub.light_matrix.show_image('HEART')

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
8/31

SPIKE™ Prime de LEGO® Education

Fuera de servicio
https://education.lego.com/es-es/lessons/prime-
kickstart-a-business/out-of-order

from spike import PrimeHub, DistanceSensor, Motor, MotorPair


from spike.control import wait_for_seconds

hub = PrimeHub()
distance_sensor = DistanceSensor('B')
drive_motors = MotorPair('A', 'E')
small_wheel_motor = Motor('C')

small_wheel_motor.set_default_speed(100)
drive_motors.set_default_speed(50)

hub.left_button.wait_until_pressed()
# Aquí tienes una forma de depurar el primer programa.
small_wheel_motor.run_to_position(0)
drive_motors.start()
# Ajusta el valor aquí ----------------------v
distance_sensor.wait_for_distance_closer_than(15, DistanceSensor.CM)
drive_motors.stop()

hub.right_button.wait_until_pressed()
# Aquí tienes una forma de depurar el segundo programa.
small_wheel_motor.run_to_position(0)
drive_motors.start()
# Ajusta el valor aquí ----------------------v
distance_sensor.wait_for_distance_closer_than(15, DistanceSensor.CM)
drive_motors.stop()
# Ajusta el valor aquí ----------v
small_wheel_motor.run_to_position(20)
wait_for_seconds(1)
drive_motors.move(-50, DistanceSensor.CM)
drive_motors.stop()
small_wheel_motor.run_to_position(0)
wait_for_seconds(1)
# Ajusta el valor aquí.
# ----------------v
drive_motors.move(50, DistanceSensor.CM)
drive_motors.stop()

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
9/31

SPIKE™ Prime de LEGO® Education

Hacer un
seguimiento de
los paquetes
https://education.lego.com/es-es/lessons/prime-
kickstart-a-business/track-your-packages

from spike import PrimeHub, Motor


from spike.control import wait_for_seconds

hub = PrimeHub()
horizontal_motor = Motor('A')
vertical_motor = Motor('C')

horizontal_motor.set_default_speed(75)
vertical_motor.set_default_speed(75)

# Este programa hará un seguimiento del paquete en el mapa n.º 1

hub.left_button.wait_until_pressed()
horizontal_motor.run_for_seconds(1)
wait_for_seconds(1)

vertical_motor.run_for_degrees(475)
horizontal_motor.run_for_degrees(-545)
vertical_motor.run_for_degrees(950)
horizontal_motor.run_for_degrees(550)
vertical_motor.run_for_degrees(380)

# Haz funcionar ambos motores al mismo tiempo para moverte en diagonal


vertical_motor.start(speed=75)
horizontal_motor.run_for_degrees(-540, speed=50)
vertical_motor.stop()

vertical_motor.run_for_degrees(175)

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
10/31

SPIKE™ Prime de LEGO® Education

Un lugar seguro
https://education.lego.com/es-es/lessons/prime-
kickstart-a-business/keep-it-safe

from spike import PrimeHub, Motor, LightMatrix


from spike.control import wait_for_seconds, wait_until
from spike.operator import greater_than

hub = PrimeHub()
lock_motor = Motor('C')
dial_motor = Motor('B')
lock_motor.set_default_speed(50)

hub.speaker.beep(60)
hub.speaker.beep(72)

# Esto cierra la puerta.


dial_motor.set_stop_action('coast')
dial_motor.run_to_position(0)
dial_motor.set_degrees_counted(0)
hub.light_matrix.show_image('NO')

# Esto desbloquea la puerta al pulsar el botón izquierdo del Hub.

hub.left_button.wait_until_pressed()
hub.speaker.beep(72)
wait_until(dial_motor.get_degrees_counted, greater_than, 180)
hub.speaker.beep(60)
lock_motor.run_for_seconds(1)
hub.light_matrix.show_image('NO')
wait_for_seconds(2)
hub.light_matrix.show_image('YES')
wait_for_seconds(5)

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
11/31

SPIKE™ Prime de LEGO® Education

¡Un sitio
superseguro!
https://education.lego.com/es-es/lessons/prime-
kickstart-a-business/keep-it-really-safe

from spike import PrimeHub, App, Motor


from spike.control import Timer, wait_for_seconds

hub = PrimeHub()
app = App()
dial = Motor('B')
lock = Motor('C')
dial_cover = Motor('E')
timer = Timer()

dial.set_default_speed(75)
lock.set_default_speed(75)
dial_cover.set_default_speed(75)

def unlock():

while not hub.left_button.is_pressed() and dial.get_degrees_counted() < 180:


hub.speaker.beep(60)
dial_cover.run_for_degrees(15)
wait_for_seconds(0.8)

if timer.now() > 5:
app.play_sound('Bonk')
return

hub.light_matrix.show_image('NO')
wait_for_seconds(2)
hub.light_matrix.show_image('YES')
dial_cover.run_to_position(0)
lock.run_for_seconds(1)
app.play_sound('Wand')
wait_for_seconds(5)

# Esto bloquea la puerta y arranca el mecanismo de protección adicional.

hub.speaker.beep(60)
hub.speaker.beep(72)
lock.run_for_seconds(-1)
dial.run_to_position(0)
dial_cover.run_to_position(0)
dial.set_degrees_counted(0)
dial.set_stop_action('coast')
hub.light_matrix.show_image('NO')
timer.reset()
unlock()

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
12/31

SPIKE™ Prime de LEGO® Education

¡Automatízalo!
https://education.lego.com/es-es/lessons/prime-
kickstart-a-business/automate-it

from spike import App, Motor, ColorSensor


from spike.control import wait_for_seconds

app = App()
base_motor = Motor('A')
arm_motor = Motor('F')
color_sensor = ColorSensor('D')

base_motor.set_default_speed(25)
arm_motor.set_default_speed(25)

def check_color():
# Esto comprobará el color del paquete.
arm_motor.run_to_position(235)
wait_for_seconds(4)
if color_sensor.get_color() == 'violet':
base_motor.run_to_position(0)
arm_motor.run_to_position(25)
app.play_sound('Triumph')
arm_motor.run_to_position(240)
else:
app.play_sound('Oops')
arm_motor.run_to_position(25)
for x in range(3):
arm_motor.run_for_degrees(-100, speed=100)
arm_motor.run_for_degrees(100, speed=100)

# Esto enciende el robot y hace que agarre un paquete de cada lado.


base_motor.run_to_position(0)
arm_motor.run_to_position(240)

base_motor.run_to_position(90)
arm_motor.run_to_position(25)

check_color()

base_motor.run_to_position(0)
arm_motor.run_to_position(240)
base_motor.run_to_position(270)
arm_motor.run_to_position(25)

check_color()

base_motor.run_to_position(0)
arm_motor.run_to_position(240)

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
13/31

SPIKE™ Prime de LEGO® Education

Break dance
https://education.lego.com/es-es/lessons/prime-
life-hacks/break-dance

La lección “Break dance” se ha creado para nuestro lenguaje de programación de bloques


de palabra. Actualmente no es posible utilizar exactamente el mismo transcurso de la lección
utilizando nuestra programación en Python.

¡Aquí tienes un programa que al menos hará que tu modelo se mueva!


from spike import PrimeHub, Motor, ColorSensor
from spike.control import wait_for_seconds

hub = PrimeHub()
leg_motor = Motor('F')
arm_motor = Motor('B')
color_sensor = ColorSensor('D')

leg_motor.set_default_speed(-80)
arm_motor.set_default_speed(-80)

leg_motor.run_to_position(0)
arm_motor.run_to_position(0)
wait_for_seconds(1)

for x in range(10):
hub.light_matrix.write("1")
leg_motor.start()
arm_motor.run_for_rotations(1)
leg_motor.stop()
wait_for_seconds(0.45)

hub.light_matrix.write("2")
leg_motor.start()
arm_motor.run_for_rotations(1)
leg_motor.stop()
wait_for_seconds(0.45)

hub.light_matrix.write("3")
leg_motor.start()
arm_motor.run_for_rotations(1)
leg_motor.stop()
wait_for_seconds(0.45)

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
14/31

SPIKE™ Prime de LEGO® Education

Repetir 5 veces
https://education.lego.com/es-es/lessons/prime-
life-hacks/repeat-5-times

from spike import PrimeHub, App, Motor


from spike.control import wait_until, wait_for_seconds
from spike.operator import equal_to

hub = PrimeHub()
app = App()
left_leg_motor = Motor('B')
right_leg_motor = Motor('F')
left_leg_motor.set_default_speed(50)
right_leg_motor.set_default_speed(-50)
left_leg_motor.start()
right_leg_motor.start()

wait_until(hub.motion_sensor.get_orientation, equal_to, 'leftside')


right_leg_motor.stop()
left_leg_motor.stop()

app.play_sound('Sport Whistle 1')

for count in range(5):


left_leg_motor.set_default_speed(-50)
right_leg_motor.set_default_speed(50)
left_leg_motor.start()
right_leg_motor.start()
wait_until(hub.motion_sensor.get_orientation, equal_to, 'front')
right_leg_motor.stop()
left_leg_motor.stop()
app.start_sound('Male Jump 1')
hub.light_matrix.write(count + 1)
wait_for_seconds(0.5)
left_leg_motor.set_default_speed(50)
right_leg_motor.set_default_speed(-50)
left_leg_motor.start()
right_leg_motor.start()
wait_until(hub.motion_sensor.get_orientation, equal_to, 'leftside')
right_leg_motor.stop()
left_leg_motor.stop()
wait_for_seconds(0.5)

app.play_sound('Sport Whistle 2')

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
15/31

SPIKE™ Prime de LEGO® Education

¿Lluvia o sol?
https://education.lego.com/es-es/lessons/prime-
life-hacks/rain-or-shine

La lección “Lluvia o sol” se ha creado para nuestro lenguaje de programación de bloques de


palabra. Actualmente no es posible utilizar las funciones de pronóstico meteorológico utilizando
nuestra programación en Python.

¡Aquí tienes un programa que hará que el pronosticador meteorológico se mueva!


from spike import PrimeHub, App, Motor
from spike.control import wait_for_seconds

hub = PrimeHub()
app = App()
umbrella_motor = Motor("B")
glasses_motor = Motor("F")
YOUR_LOCAL_FORECAST = "sunny"

umbrella_motor.set_default_speed(100)
glasses_motor.set_default_speed(100)

# Esto pone el robot en la posición de partida correcta.


umbrella_motor.run_to_position(45)
glasses_motor.run_to_position(300)

hub.speaker.beep(60, seconds=0.1)
hub.speaker.beep(72, seconds=0.1)

if YOUR_LOCAL_FORECAST == "sunny":
# Si el día está soleado, ponte las gafas de sol
glasses_motor.run_to_position(0)
hub.light_matrix.show_image("SQUARE")
wait_for_seconds(2)
glasses_motor.run_to_position(300)
elif YOUR_LOCAL_FORECAST == "rainy":
# O, si llueve, levanta tu paraguas
umbrella_motor.run_to_position(340)
app.play_sound("Rain")
umbrella_motor.run_to_position(45)
else:
# De lo contrario, mostrar X
hub.light_matrix.show_image("NO")

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
16/31

SPIKE™ Prime de LEGO® Education

Velocidad del
viento
https://education.lego.com/es-es/lessons/prime-
life-hacks/wind-speed

La lección “Velocidad del viento” se ha creado para nuestro lenguaje de programación


de bloques de palabra. Actualmente no es posible utilizar las funciones de pronóstico
meteorológico utilizando nuestra programación en Python.

¡Aquí tienes un programa que al menos hará que tu modelo se mueva!


from spike import App, Motor
from spike.control import wait_for_seconds

tilt_motor = Motor("A")
WIND_SPEED_FORECAST = 8

tilt_motor.set_default_speed(20)
tilt_motor.run_to_position(5)

if WIND_SPEED_FORECAST < 5.5:


tilt_motor.run_for_degrees(30)
wait_for_seconds(1)
tilt_motor.run_for_degrees(-30)
else:
tilt_motor.run_for_degrees(60)
wait_for_seconds(1)
tilt_motor.run_for_degrees(-60)

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
17/31

SPIKE™ Prime de LEGO® Education

Amor vegetariano
https://education.lego.com/es-es/lessons/prime-
life-hacks/veggie-love

La lección “Amor vegetariano” se ha creado para nuestro lenguaje de programación de bloques


de palabra. Actualmente no es posible utilizar las funciones de pronóstico meteorológico
utilizando nuestra programación en Python.

¡Aquí tienes un programa que al menos hará que tu modelo se mueva!

from spike import PrimeHub, App, Motor

hub = PrimeHub()
app = App()
pointer_motor = Motor("E")
pointer_motor.set_default_speed(-50)

WEEK_RAIN = 50
ROTATION = 0

hub.left_button.wait_until_pressed()
pointer_motor.run_for_seconds(2)
pointer_motor.set_degrees_counted(0)
pointer_motor.set_default_speed(50)
pointer_motor.run_for_seconds(2)
hub.light_matrix.write(abs(pointer_motor.get_degrees_counted()))
rotation = int(week_rain * abs(pointer_motor.get_degrees_counted()) / 60)
print(ROTATION)

hub.right_button.wait_until_pressed()
pointer_motor.set_degrees_counted(0)
pointer_motor.set_default_speed(-50)
pointer_motor.run_for_degrees(ROTATION)
hub.light_matrix.write(WEEK_RAIN)
print(WEEK_RAIN)

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
18/31

SPIKE™ Prime de LEGO® Education

Juego mental
https://education.lego.com/es-es/lessons/prime-
life-hacks/brain-game

from spike import PrimeHub, App, Motor, ColorSensor wait_for_seconds(1)


from spike.control import wait_for_seconds mouth_motor.set_default_speed(50)
mouth_motor.run_for_degrees(95)
wait_for_seconds(1)
hub = PrimeHub()
app = App() # Ilumina la posición de los ladrillos rojos si están
mouth_motor = Motor('A') en la misma posición en los dos bastones de caramelo.
color_sensor = ColorSensor('B') candy1_red_index = candy1.index('red')
candy1 = [] candy2_red_index = candy2.index('red')
candy2 = [] for x in range(5):
print(candy1[x])

while True:
hub.left_button.wait_until_pressed() if candy1_red_index == candy2_red_index:
for x in range(5):
# Esto hace que el Director de juego se coma el hub.light_matrix.set_pixel(x, candy1_red_
bastón de caramelo y a continuación lea y registre su index)
secuencia de colores en la lista llamada «Caramelo1». app.play_sound('Win')
hub.light_matrix.off() else:
candy1.clear() app.play_sound('Oops')
mouth_motor.set_default_speed(-50)
mouth_motor.run_for_seconds(2)
app.play_sound('Bite')
app.play_sound('Bite')

for x in range(5):
candy1.append(color_sensor.get_color())
wait_for_seconds(1)
mouth_motor.set_default_speed(50)
mouth_motor.run_for_degrees(95)
wait_for_seconds(1)

hub.right_button.wait_until_pressed()

# Esto hace que el Director de juego se coma el


bastón de caramelo y a continuación lea y registre su
secuencia de colores en la lista llamada «Caramelo2».
candy2.clear()
mouth_motor.set_default_speed(-50)
mouth_motor.run_for_seconds(2)
app.play_sound('Bite')
app.play_sound('Bite')

for x in range(5):
candy2.append(color_sensor.get_color())

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
19/31

SPIKE™ Prime de LEGO® Education

El entrenador
https://education.lego.com/es-es/lessons/prime-
life-hacks/the-coach

from spike import Motor


from spike.control import Timer, wait_for_seconds

left_leg_motor = Motor('F')
right_leg_motor = Motor('B')
timer = Timer()
left_leg_motor.run_to_position(0)
right_leg_motor.run_to_position(0)

while True:
while timer.now() < 5:
left_leg_motor.start_at_power(-80)
right_leg_motor.start_at_power(80)
wait_for_seconds(0.1)
left_leg_motor.start_at_power(80)
right_leg_motor.start_at_power(-80)
wait_for_seconds(0.1)

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
20/31

SPIKE™ Prime de LEGO® Education

Campamento de
entrenamiento 1
https://education.lego.com/es-es/lessons/prime-
competition-ready/training-camp-1-driving-around

from spike import MotorPair


from spike.control import wait_for_seconds

drive_motors = MotorPair('C', 'D')

drive_motors.set_default_speed(30)
drive_motors.set_motor_rotation(17.5, 'cm')

wait_for_seconds(1)

for x in range(4):
drive_motors.move(10, 'cm')
wait_for_seconds(0.5)
drive_motors.move(182, 'degrees', steering=100)

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
21/31

SPIKE™ Prime de LEGO® Education

Campamento de
entrenamiento 2
https://education.lego.com/es-es/lessons/prime-
competition-ready/training-camp-2-playing-with-
objects

from spike import PrimeHub, MotorPair, Motor, DistanceSensor


from spike.control import wait_for_seconds

hub = PrimeHub()
drive_motors = MotorPair('C', 'D')
grabber_motor = Motor('E')
distance_sensor = DistanceSensor('F')

drive_motors.set_default_speed(30)
drive_motors.set_motor_rotation(17.5, 'cm')
grabber_motor.set_default_speed(-20)
grabber_motor.run_for_seconds(1)
grabber_motor.set_default_speed(20)
grabber_motor.run_for_degrees(75)

hub.speaker.beep(60)
hub.speaker.beep(72)

hub.right_button.wait_until_pressed()

wait_for_seconds(1)

drive_motors.start()
distance_sensor.wait_for_distance_closer_than(10, 'cm')
drive_motors.stop()

grabber_motor.run_for_degrees(-75)

hub.speaker.beep(60)
hub.speaker.beep(72)

drive_motors.move(-20, 'cm')

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
22/31

SPIKE™ Prime de LEGO® Education

Campamento de
entrenamiento 3
https://education.lego.com/es-es/lessons/prime-
competition-ready/training-camp-3-react-to-lines

from spike import PrimeHub, MotorPair, ColorSensor


from spike.control import wait_for_seconds

hub = PrimeHub()
drive_motors = MotorPair('C', 'D')
color_sensor = ColorSensor('B')

drive_motors.set_default_speed(50)
POWER = 50

while True:
if hub.left_button.was_pressed():
drive_motors.start()
color_sensor.wait_until_color('black')
drive_motors.stop()

if hub.right_button.was_pressed():
while True:
drive_motors.start_tank_at_power(0, POWER)
color_sensor.wait_until_color('black')
drive_motors.start_tank_at_power(POWER, 0)
color_sensor.wait_until_color('white')

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
23/31

SPIKE™ Prime de LEGO® Education

Montar una base de


conducción avanzada
https://education.lego.com/es-es/lessons/prime-
competition-ready/assembling-an-advanced-
driving-base

from spike import PrimeHub, MotorPair


from spike.control import wait_for_seconds, wait_until
from spike.operator import greater_than, less_than

hub = PrimeHub()
drive_motors = MotorPair('A', 'E')

drive_motors.set_default_speed(50)
drive_motors.set_motor_rotation(27.63, 'cm')

wait_for_seconds(1)

drive_motors.move(20, 'cm')
drive_motors.move(-20, 'cm')

drive_motors.move(20, 'cm', steering=-40)

hub.motion_sensor.reset_yaw_angle()

drive_motors.start(steering=100)
wait_until(hub.motion_sensor.get_yaw_angle, greater_than, 90)
drive_motors.stop()

drive_motors.start(steering=-100)
wait_until(hub.motion_sensor.get_yaw_angle, less_than, 0)
drive_motors.stop()

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
24/31

SPIKE™ Prime de LEGO® Education

Mi código,
nuestro programa
https://education.lego.com/es-es/lessons/prime-
competition-ready/my-code-our-program

from spike import PrimeHub, MotorPair


from spike.control import wait_for_seconds

hub = PrimeHub()
drive_motors = MotorPair('A', 'E')

drive_motors.set_default_speed(50)
drive_motors.set_motor_rotation(27.63, 'cm')

def square():
for x in range(4):
drive_motors.move(1.5, 'rotations')
drive_motors.move(0.365, 'rotations', steering=100)

def triangle():
for x in range(3):
drive_motors.move(1.5, 'rotations')
drive_motors.move(0.486, 'rotations', steering=100)

def circle():
drive_motors.move(3, 'rotations', steering=60)

wait_for_seconds(1)

square()
hub.speaker.beep()

triangle()
hub.speaker.beep()

circle()
hub.speaker.beep()

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
25/31

SPIKE™ Prime de LEGO® Education

¡Hora de mejorar!
https://education.lego.com/es-es/lessons/prime-
competition-ready/time-for-an-upgrade

from spike import PrimeHub, Motor

hub = PrimeHub()
lift_arm_motor = Motor('D')
dozer_blade_motor = Motor('C')

lift_arm_motor.set_default_speed(-100)
lift_arm_motor.run_for_seconds(1)
dozer_blade_motor.set_default_speed(-100)
dozer_blade_motor.run_for_seconds(1)

lift_arm_motor.set_default_speed(100)
lift_arm_motor.run_for_degrees(70)
dozer_blade_motor.set_default_speed(100)
dozer_blade_motor.run_for_degrees(70)
hub.speaker.beep()

lift_arm_motor.run_for_degrees(180)
lift_arm_motor.run_for_degrees(-180)
dozer_blade_motor.run_for_degrees(180)
dozer_blade_motor.run_for_degrees(-180)
hub.speaker.beep()

lift_arm_motor.run_for_degrees(180, speed=15)
lift_arm_motor.run_for_degrees(-180, speed=15)
dozer_blade_motor.run_for_degrees(180, speed=15)
dozer_blade_motor.run_for_degrees(-180, speed=15)

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
26/31

SPIKE™ Prime de LEGO® Education

Listo para la
misión
https://education.lego.com/es-es/lessons/prime-
competition-ready/mission-ready

from spike import Motor, MotorPair


from spike.control import wait_for_seconds

dozer_blade_motor = Motor('C')
lift_arm_motor = Motor('D')
drive_motors = MotorPair('A', 'E')

drive_motors.set_default_speed(25)
drive_motors.set_motor_rotation(27.63, 'cm')

dozer_blade_motor.start(-100)
lift_arm_motor.start(-100)
wait_for_seconds(1)
dozer_blade_motor.stop()
lift_arm_motor.stop()

dozer_blade_motor.run_for_degrees(70, speed=100)
lift_arm_motor.run_for_degrees(20, speed=100)

drive_motors.move(-2, 'cm')
drive_motors.move(10.5, 'cm')

dozer_blade_motor.run_for_degrees(180, speed=40)

drive_motors.move(-6, 'cm')

dozer_blade_motor.run_for_degrees(-180, speed=60)
dozer_blade_motor.run_for_degrees(180, speed=60)

drive_motors.move(7, 'cm')

dozer_blade_motor.run_for_degrees(-180, speed=60)

drive_motors.move(0.405, 'rotations', steering=-100)


drive_motors.move(60.5, 'cm', steering=-30)
drive_motors.move(34, 'cm')
drive_motors.move(32, 'cm', steering=-50)
drive_motors.move(17.5, 'cm')
drive_motors.move(0.415, 'rotations', steering=-100)
drive_motors.move(32, 'cm')

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
27/31

SPIKE™ Prime de LEGO® Education

Pasa el ladrillo
https://education.lego.com/es-es/lessons/prime-
extra-resources/pass-the-brick

from spike import Motor, PrimeHub

hub = PrimeHub()
grabber_motor = Motor('F')

# Esto hará que la mano se abra una vez para comenzar.


grabber_motor.run_for_seconds(1)

while True:
# Esto hará que la mano se cierre cuando pulses el botón izquierdo del Hub.
hub.left_button.wait_until_pressed()
grabber_motor.set_stall_detection(False)
grabber_motor.start(-75)

# Esto hará que la mano se abra cuando pulses el botón izquierdo del Hub.
hub.left_button.wait_until_released()
grabber_motor.set_stall_detection(True)
grabber_motor.start(75)

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
28/31

SPIKE™ Prime de LEGO® Education

Ideas, ¡al estilo


LEGO!
https://education.lego.com/es-es/lessons/prime-
extra-resources/ideas-the-lego-way

from spike import PrimeHub


from spike.control import wait_for_seconds

hub = PrimeHub()

while True:
if hub.left_button.was_pressed():
hub.light_matrix.write('3')
wait_for_seconds(1)
hub.light_matrix.write('2')
wait_for_seconds(1)
hub.light_matrix.write('1')
wait_for_seconds(1)
hub.light_matrix.off()
hub.speaker.beep(60, 0.5)
hub.speaker.beep(72, 0.5)

if hub.right_button.was_pressed():
hub.light_matrix.write('5')
wait_for_seconds(60)
hub.light_matrix.write('4')
wait_for_seconds(60)
hub.light_matrix.write('3')
wait_for_seconds(60)
hub.light_matrix.write('2')
wait_for_seconds(60)
hub.light_matrix.write('1')
wait_for_seconds(60)
hub.light_matrix.off()
hub.speaker.beep(60, 0.5)
hub.speaker.beep(72, 0.5)

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
29/31

SPIKE™ Prime de LEGO® Education

¿En qué
consiste?
https://education.lego.com/es-es/lessons/prime-
extra-resources/what-is-this

from spike import Motor

motor = Motor('F')

motor.set_stall_detection(False)

for x in range(5):
motor.set_default_speed(50)
motor.run_for_seconds(2)
motor.set_default_speed(-50)
motor.run_for_seconds(2)

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
30/31

SPIKE™ Prime de LEGO® Education

Cubrir la
distancia
https://education.lego.com/es-es/lessons/prime-
extra-resources/going-the-distance

from spike import MotorPair

drive_motors = MotorPair('B', 'A')

drive_motors.set_default_speed(50)

drive_motors.move(10, 'rotations')
drive_motors.stop()

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.
31/31

SPIKE™ Prime de LEGO® Education

¡Gol!
https://education.lego.com/es-es/lessons/prime-
extra-resources/goal

from spike import PrimeHub, Motor


from spike.control import wait_for_seconds

hub = PrimeHub()
kicker = Motor('A')
kicker.set_default_speed(100)

while True:
kicker.run_to_position(0)

hub.left_button.wait_until_pressed()
kicker.run_for_rotations(1)
wait_for_seconds(1)

LEGO, the LEGO logo, the Minifigure and the SPIKE logo are trademarks of the LEGO Group. ©2020 The LEGO Group.
FIRST® is a registered trademark of For Inspiration and Recognition of Science and Technology (FIRST). LEGO® is a registered trademark of the LEGO Group. FIRST® LEGO® League are jointly
held trademarks of FIRST and the LEGO Group. ©2020 FIRST and the LEGO Group. All rights reserved.

You might also like