Hoy queremos iniciar un grupo de posts relacionados con la programación de LEGO® Mindstorms Education EV3 en Microsoft MakeCode.

¿Qué es Microsoft MakeCode?

Microsoft MakeCode es una plataforma gratuita de código abierto para crear experiencias de aprendizaje atractivas en ciencias de la computación para crear un camino de progresión hacia el mundo de la programación real.

Dentro de la plataforma se dispone de un simulador del dispositivo con el que se esté trabajando, un editor de bloques (muy útil en la robótica educativa con niños y niñas), y un editor de JavaScript.

Aunque a la plataforma le queda mucho camino para conseguir ser totalmente operativa, en Edukative la utilizamos en nuestras clases para que los alumnos se enfrenten al reto de programar los modelos que crean en clase con otros “lenguajes” de programación diferentes del propuesto por el fabricante del kit con el que estén trabajando. En este caso, los alumnos, que trabajan con LEGO® Mindstorms Education EV3, deben programar en Microsoft MakeCode.

Concretamente, en este caso, los alumnos han construido y programado el modelo “Pick & Place”, que se encuentra dentro del add-on del software de LEGO® Mindstorms Education EV3 “Design Engineering Projects”, en el apartado “Make a System -> that Picks & Places”.

Un vídeo del modelo se puede ver en https://youtu.be/FR5MY1vntok

En nuestras clases, los alumnos han realizado la construcción, siguiendo las instrucciones de construcción que proporciona LEGO en la primera sesión de 1 hora. Al finalizar, han analizado junto con el profesor el funcionamiento mecánico del mismo. Realizamos actividades en las que los alumnos siguen modelos definidos y guiados para que aprendan técnicas de construcción que les serán útiles cuando tengan que construir modelos de creación propia.

En la segunda sesión, han realizado el programa en el software LEGO® Mindstorms Education EV3. Para ello les proporcionamos un diagrama de flujo:

Pick and Place Flowchart

Con la introducción de los diagramas de flujo, conseguimos diversos aspectos que consideramos importantes en la formación de nuestros alumnos:

  • Por una parte, tienen una mejor toma de contacto con el mundo real de la programación. Ningún programador hace su trabajo sin plantear primero un diagrama de flujo.
  • Por otra parte, aprenden a utilizar esta poderosa herramienta para cualquier problema de su día a día, ya sea un problema de matemáticas o física, o para plantear un algoritmo para llegar al aeropuerto desde casa.

La experiencia en el uso de diagramas de flujo con nuestros alumnos está resultando muy positiva, al tiempo que nos diferencia del resto de empresas del sector, que no están utilizando todavía esta herramienta con sus alumnos.

Al final de esta segunda sesión, los alumnos llegan, con la ayuda del profesor, a un programa similar a este, que es el que propone LEGO para este modelo:

Pick and Place Program

En la tercera sesión, los alumnos deben programar el modelo en Microsoft MakeCode. Tiene ya la experiencia de la programación en el software de LEGO® Mindstorms Education EV3 y también tienen el diagrama de flujo.

Con toda esta información, llegan a una solución válida, que puede ser la que se presenta en la siguiente imagen:

Este programa se puede ejecutar en el simulador que proporciona MakeCode. Para ello, debemos poner el valor de la velocidad angular a su valor mínimo (negativo). Esto es así porque en el simulador, el sensor de giro (Gyro Sensor) no va a llegar nunca a medir el ángulo si no forzamos nosotros el movimiento, ya que no se mueve físicamente. Una vez que la simulación esté en marcha, el motor conectado al puerto B se moverá con una potencia del 25% hasta que pulsemos el sensor de toque (Touch Sensor) conectado en el puerto 4. Aquí el brazo robótico ha ido a la posición inicial, donde debe coger el cuboide. Entonces, el motor conectado en B se parará y comenzará a moverse el motor conectado en el puerto C con una potencia del 20%. Aquí se acciona la pinza que coge el cuboide. Después, se volverá a mover el motor en B, en sentido contrario. Aquí es donde se traslada el objeto que tiene cogido la pinza. Cuando el sensor de giro detecte un cambio de ángulo de 45º (esto sólo será posible si la tasa de giro está puesta en un valor negativo y llegará más rápido cuando menor sea la tasa de giro -el menor valor que podemos configurar es -40º/seg), el motor en B parará y se activará el motor en C, en sentido contrario al inicial. Aquí es donde la pinza se abre y se suelta el cuboide en su posición final.

El modelo continúa repitiendo el proceso de forma indefinida, hasta que el sensor de luz ambiente detecta una intensidad de luz inferior al 50%. Esto puede ocurrir cuando tapamos el sensor de luz con algún objeto o con la mano, o bien cuando apagamos la luz del laboratorio. Entonces el programa llega a su fin.

Hemos creado un vídeo con la creación del programa en MakeCode y su ejecución en el simulador. Se puede ver en el siguiente enlace: https://youtu.be/8iC1hMumTZ4

También mostramos el programa en JavaScript:

sensors.color3.onLightDetected(LightIntensityMode.Ambient, Light.Dark, function () {
    motors.stopAll()
})
forever(function () {
    motors.largeB.run(25)
    pauseUntil(() => sensors.touch4.isPressed())
    sensors.gyro2.reset()
    motors.largeB.stop()
    motors.largeC.run(-20, 0.5, MoveUnit.Seconds)
    pause(1000)
    motors.largeB.run(-25)
    sensors.gyro2.pauseUntilRotated(-45)
    motors.largeB.stop()
    pause(1000)
    motors.largeC.run(20, 0.5, MoveUnit.Seconds)
    pause(1000)
})
En Edukative formamos a nuestros alumnos en robótica educativa con altos estándares de calidad y con el compromiso de que lo que aprendan les sirva para su futuro personal y profesional. Tenemos un alto compromiso con la formación de nuestros alumnos.
Si quieres que tus hijos formen parte de nuestra gran familia de alumnos, puedes solicitarnos información sobre nuestros cursos en nuestro Formulario de Contacto.