Hace unos días comenzamos a hablar de algunas de las aplicaciones de la robótica educativa. Pueden consultarse las distintas partes en que hemos dividido esta entrada:

Aprendizaje de Programación

La programación y su aprendizaje son los pilares fundamentales de la robótica educativa. Su utilidad en la vida real es un hecho, como puede comprobar cualquiera que tenga un móvil.

¿En qué consiste programar? En escribir un conjunto de instrucciones con un determinado formato para lograr determinados efectos. Los efectos pueden ser físicos o una serie de resultados que vemos en nuestro ordenador o móvil.

Al igual que con el habla, las instrucciones se aprenden. Los problemas llegan cuando tenemos que traducir un problema que queremos resolver, en el conjunto de instrucciones que lo hacen. Para ello, es necesario pensar. A veces es muy sencillo pero en general necesitaremos un algoritmo que permita resolver el problema.

Los algoritmos para problemas comunes están pensados hace mucho tiempo y podemos utilizarlos para programar.

Al igual que hay muchos idiomas, también existen muchos lenguajes de programación, así como herramientas que facilitan la existencia al programador, sobre todo al que acaba de empezar.

Puesto que estamos hablando de robótica educativa, nos vamos a referir a los dispositivos electrónicos que han acercado la robótica a todo el mundo, con poco o mucho conocimiento técnico: las placas compatibles con arduino y todo su ecosistema, que ha crecido enormemente.

a) Programación con código / calculadora avanzada

Desde el comienzo de la era informática se hacía necesaria la programación de código. El código es el conjunto de instrucciones, en un lenguaje específico, que dan lugar a un programa. El hardware se encarga de ejecutar ese conjunto de instrucciones.

Como en este blog hablamos de robótica educativa basada en arduino, vamos a referirnos al código necesario para programar placas compatibles con la placa arduino.

Arduino es un microcontrolador dotado de entradas y salidas, que podemos conectar con cables a sensores y actuadores. Con la información de los sensores, se obtendrán las salidas para los actuadores.

Para recoger la información de los sensores y producir las salidas, hace falta un programa escrito en un cierto lenguaje, que es una versión del lenguaje C. El aspecto que puede tener el código de un programa es así:

aplicaciones de la robótica

Este programa hace la suma de los cuadrados de los 100 primeros números. La orden que hace la suma es la línea del for . La variable ‘para’ sirve para que no se imprima el valor indefinidamente.

No debemos olvidar que este entorno de desarrollo está específicamente diseñado para microcontroladores en los que interesa que el programa se ejecute de forma indefinida.

Si queréis comparar, podéis observar cómo se hace lo mismo en una calculadora HP49: << 0 1 100 FOR I I SQ + NEXT >>:

En el fondo, todos los lenguajes de programación hacen lo mismo, pero escrito de distinta forma. En esta otra entrada vimos cómo se sumaban 100 números en javascript.

b) Programación gráfica

Como os podéis imaginar, en los tiempos que corren existe una tendencia generaliza hacia la usabilidad y la facilitación del acceso de la informática a todo el mundo. Desde que apareció el Macintosh, la tendencia no ha parado: móviles, tablets, etc, y desde hace también unos años, la electrónica.

En primer lugar, se facilitó el acceso a los neófitos al software de programación, con lenguajes como processing y posteriormente, se amplió para acercar no solo la programación , sino la electrónica con el diseño de las placas arduino.

Para que el proceso finalizara con éxito, se cerró el círculo elaborando plataformas de programación por bloques, que utilizaban el mismo código feo y desagradable pero por debajo de unos coloridos bloques que solo había que arrastrar hacia el área de trabajo. Así han surgido programas como visualino, mblock, arduinoblocks, donde el aspecto de estos programas es más amigable.

Veamos, por ejemplo, la suma de los cuadrados de 100 números en mblock:

Este programa, realizado con bloques, hace lo mismo que el que vimos anteriormente con código.

Registro automático de datos, otra de las aplicaciones de la robótica educativa

Un experimento lleva siempre asociado una medición de datos. Estos se pueden recoger de forma manual o bien hacer que los datos procedentes de un sensor se registren automáticamente.

Me estoy refiriendo a tomar las medidas de un sensor y trabajar con ellas para la realización de gráficas o modelos que nos permitan extraer conclusiones de nuestro experimento.

Un experimento puede proporcionar miles de datos en un tiempo determinado, por lo tanto sería inviable pretender tomarlos a mano (menos aún si hablamos de milisegundos entre medida y medida).

a) Copiado de datos de forma manual desde el monitor del sistema

En este caso, copiamos un conjunto de datos que visualizamos desde el monitor del sistema, seleccionándolos con el ratón previamente (CTRL+C). A continuación los pegamos en un fichero plano de texto, que podemos después importar a una hoja de cálculo, como explicamos en esta entrada.

Ventajas:

  • Es muy intuitivo y fácil de realizar
  • Muy rápido

Desventajas:

  • debe estar conectado el cable al ordenador para tomar datos, es muy incómodo
  • cuando hay muchos datos es muy tedioso hacer el copiar y pegar
  • la impresión en el monitor puede arrastrar errores o cortarse
  • hay que preparar el archivo de datos (si bien esto no es muy complejo)

b) Utilización de una tarjeta microSD para grabar los datos

En este caso, grabamos los datos de nuestros sensores en una tarjeta de memoria SD o microSD. Para ello, necesitaremos una shield (o placa) que nos permita insertar la tarjeta de memoria y conectarla a arduino para programarla.

También es posible utilizar lectores integrados en otras tarjetas, como la shield ETHERNET que lleva incluido un lector de tarjetas:

aplicaciones de la robótica

Ventajas:

  • Basta con tener alimentada la placa de arduino para tener los datos, no hace falta un cable al ordenador
  • el archivo de datos se puede importar fácilmente con una hoja de cálculo como EXCEL o CALC de Libreoffice
  • Podemos registrar una enorme cantidad de información sin tener que estar pendiente del tiempo

Desventajas:

  • la principal es la necesidad de contar con una shield que permita introducir una tarjeta SD y la correspondiente librería que nos permita programar la placa.
  • En general deberemos adaptar el código a nuestras necesidades, por lo que deberemos estudiar cómo funciona la librería (por otra parte, este estudio se ve facilitado por la abundante documentación de las librerías, y los ejemplos asociados).

Creación de juegos

Cuando hablamos de programación y de robótica educativa, contamos con dos herramientas muy poderosas.

Por una parte están las plataformas de programación por bloques y por otra, los desarrollos físicos que podemos hacer con controladores como arduino.

Es decir, en una caso programamos y hacemos que objetos gráficos interactúen (por ejemplo, en scratch) y por otro, tenemos que ponernos el mono de trabajo para cablear, medir, hacer marquetería, etcétera.

a) El mundo de los videojuegos

Todos conocemos los videojuegos comerciales para consolas, PC o nuestros móviles. Recuerdo haber pasado muchas horas jugando al Civilization… en 2D, las fichas eran cuadradas y el programa se guardaba en un disquete de 3 1/2″. Tan solo 1,4MB y cabía un juego que, en esencia, no ha cambiado en 30 años (aparte de los gigas que ocupa).

Pero no me refiero a ellos, Tampoco a programas de desarrollo de juegos como Unity.

Estoy hablando de programas como scratch que han permitido una aproximación sencilla a la programación a los más jóvenes y a todo el mundo.

Aprender Scratch es un primer paso para introducirse en la robótica educativa puesto que desde la última versión ya incorpora la posibilidad de programar muchos robots (lego WeDo 2.0, micro:bit, entre otros).

Además mblock, basado en scratch, permite programar directamente las placas, como antes hemos visto en el ejemplo.

En el siguiente ejemplo vemos cómo el gato de scratch dibuja dos cuadrados:

b) Juegos «físicos» o analógicos

Aquí ya empleamos elementos físicos para hacer juegos «analógicos» que se puedan tocar físicamente. Desde el primer momento de empezar con la programación se pueden empezar a diseñar juegos llamativos con muy pocos componentes. Comentamos algunos ejemplos.

Con una placa de arduino, un servomotor, unos cables y un potenciómetro, se puede hacer un sencillo juego de plataforma con una bolita. El potenciómetro controla el giro de la plataforma. Vemos una fotografía de un prototipo:

Otro juego muy fácil de preparar y programar con cuatro diodos LED de colores es un juego Simon, que todos conocemos.

Como ejemplo final para finalizar la entrada escogemos el de la anilla que hay que llevar a través de un alambre sin tocarlo. Su implementación es muy sencilla, también su programación. Tiene, además, elementos de aprendizaje muy interesantes (conexión de entradas digitales, y el llamado rebote).

(foto de portada, Tunarus, pixabay)