jueves, 10 de julio de 2014

QUE SON LOS BUCLES EN NXT LEGO MINDSTORMS

BUCLES EN LEGO MINDSTORMS

¿QUE SON?


El icono "Ciclo" o "Bucle" o "Loop" repite la ejecución una determinada parte del programa. Puede repetirse desde unas pocas veces hasta que se cumpla una determinada condición o infinitas veces. Iremos viendo los distintos casos con ejemplos.

NOTA: para comprobar los programas de los ejemplos, usaremos con frecuencia el icono de sonido configurado de la siguiente forma:

Ejemplos del Icono Ciclo de LEGO Mindstorm NXT

BUCLE FOREVER


Bueno, este es el más habitual y sencillo. Repite infinitamente un conjunto de tareas. No se parará hasta que cancelemos el programa. Es decir, el programa "se queda atrapado" dentro de ese bucle, del que no sale nunca. En el ejemplo siguiente, pulsa el botón naranja repetidamente para que suene un "bip".

Ejemplos del Icono Ciclo de LEGO Mindstorm NXT
Un primer detalle: sería imposible programar esto de otra forma, ya que el programa sería infinitamente largo.

BUCLE FOREVER CON UN "COUNTER"


El mismo programa antrior nos puede permitir visualizar en pantalla las veces que hemos pulsado el botón o, dicho de otra forma, las veces que se ha repetido el ciclo. Esta función está disponible para cualquier otra configuración de los Ciclos.

Con esta pestaña activada, aparece en el bucle una pestañita desde la cual podemos sacar un cable para visualizar en pantalla las repeticiones.

Ejemplos del Icono Ciclo de LEGO Mindstorm NXT


BUCLES "HASTA QUE"...


El anterior bucle se repetía infinitamente. Cualquiera de los bucles que explicaremos ahora se repiten infinitamente hasta que se produce una determinada condición, momento en el cual el programa avanza saliendo del bucle. Por eso, cuando programes algo, piensa de esa forma para saber si este es el icono adecuado. Si lo que necesitas es repetir algunos iconos infinitamente hasta que pase tal cosa, usalo.

Hay que hacer una aclaración a esto. Repetir una cosa "infinitamente" puede ser engañoso y hay que entenderlo desde el punto de vista de la programación. Cuando pensamos el programa, esperar a que un sensor de color lea "rojo" para nosotros es una única tarea: esperar. Para el NXT es repetir infinitamente la lectura del sensor "hasta que" encuentre el rojo.

¿BUCLE "HASTA QUE" O BLOQUE DE ESPERA?


¿Cuál usar? Si NO necesitas repetir una serie de tareas, BASTA con usar un bloque de espera. Por ejemplo, si quieres que el robot avance "hasta que" encuentre una pared usando un ultrasonido, basta un icono de espera de ultrasonido. En este caso, el programa se comporta como si estuviera en un bucle a la espera de que se cumpla la condición del ultrasonido, y solo estará realizando esa tarea.

Si lo que quieres es esperar "hasta que" encuentre una pared PERO DURANTE ESA ESPERA QUIERES QUE HAGA TAREAS ADICIONALES, tendrás que usar un BUCLE "hasta que" llegue a la pared y encerrar todas esas tareas adicionales en el bucle. Tareas adicionales pueden ser que simultanemente compruebe si has pulsado un sensor de contacto para parar el robot manualmente.

BUCLE "SENSOR"


Con todo lo explicado, podemos interpretar este icono como "repite esto hasta que el sensor X cumpla esta condición".

Podría ser el caso de un robot que avanza "hasta que" el sensor de ultrasonido encuentra una pared. O puede ser el caso del siguiente programa, en el que esperamos indefinidamente a que se pulse el botón naranja para salir del bucle. En caso contrario, si no se da la condición, el ciclo se repite de nuevo.

Esto también es común al resto de bucles: el programa sale del bucle cuando se cumple la condición, sea temporal, sensor, etc. En caso contrario, el programa sigue encerrado en el bucle.

Ejemplos del Icono Ciclo de LEGO Mindstorm NXT

AVISO: este bucle puede ser fuente de problemas y de mal funcionamiento de algunos programas. Un ejemplo de mala programación sería este:

Ejemplos del Icono Ciclo de LEGO Mindstorm NXT

Aquí, el programa se detiene en el icono de espera, hasta que pulsamos el botón naranja. En ese momento, el programa avanza tan deprisa que vuelve al mismo punto sin que nos de tiempo a pulsarlo de nuevo para salir del bucle.

Otros casos de mala programación o de fuente de problemas tiene que ver con la longitud de los programas; o con iconos de espera; o con bucles dentro de bucles. El siguiente programa es muy interesante para aprender cómo funciona el NXT. Lo explico a continuación.

Ejemplos del Icono Ciclo de LEGO Mindstorm NXT

El programa queda a la espera de pulsar el cursor izquierdo del NXT para avanzar y, como antes, no hay tiempo entre medias de pulsar el botón naranja para finalizar el programa. Parece que el programa siempre queda detendo justo en el icono de espera de la flecha izquierda. PERO, aunque el programa esté "detenido" en ese punto, prueba a pulsar el botón naranja antes de pulsar la flecha.

El NXT almacena la pulsación y, cuando es el momento, acaba el programa y no antes. Es decir, el programa NO acaba inmediatamente cuando pulsas el botón naranja como era nuestra intención, sino después de pulsar la flecha, lo que le permite entonces llegar al final del bucle y salir. Estos problemas son comunes al resto de bucles del tipo "hasta que..." que estamos viendo.

TIPOS. Los tipos de condiciones que puedes añadir a un bucle de este tipo son tantas como sensores tengas a disposición. Puedes esperar hasta que el sensor detecte rojo, hasta que la pared esté cerca, hasta que recibas una señal BT de otro NXT, hasta que se pulse un botón... Todo ello te aparece en el panel de configuración del bucle cuando está seleccionado "Sensor".

BUCLE "TIME"


Este bucle es mucho más sencillo. Simplemente repite todas las tareas encerradas en el bucle "hasta que" pasa un determinado tiempo. Si simplemente quieres esperar a que pase un tiempo, ya sabes, un simple bloque de espera. Hago aquí la misma precaución que hice antes para que el programa no nos de comportamientos inesperados. Veamos un ejemplo:

Ejemplos del Icono Ciclo de LEGO Mindstorm NXT

El tiempo está a 5 segundos. Pulsa 2 o 3 veces rápidamente al inicio del programa para ver cómo avanza y luego para a la espera de que se cumplan los 5 segundos. ¿Qué ocurre? Nada. El programa no se para. Eso es porque está detenido justo en el bloque de espera. Cuando lo pulses una vez más y ya haya vencido el tiempo, el programa avanzará hasta el final del bucle y, ahora sí, acabará.

BUCLE "COUNT"


Este bucle también es muy sencillo, pero tiene un detalle que lo hace puñetero en un aspecto. El programa sale del bucle cuando ha repetido el ciclo n veces, según lo configures en la ventanita correspondiente. El "problema" reside en lo siguiente, que lo vemos con un ejemplo. Programa el siguiente bucle, con 4 repeticiones y un icono de espera de 1 segundo:

Ejemplos del Icono Ciclo de LEGO Mindstorm NXT

El icono final sirve simplemente para que se mantenga el resultado en pantalla sin que el programa finalice. Ejecutalo en el NXT. Para finalizar el programa, recuerda pulsar el botón naranja. ¿No notas algo raro?.

Lo primero que se nos puede ocurrir es cambiar el icono "Sound" de sitio, así:

Ejemplos del Icono Ciclo de LEGO Mindstorm NXT

Pero resulta que sigue "sin funcionar bien": le hemos dicho que repita 4 veces y solo cuenta hasta 3. ¿porqué? El problema reside en la numeración del "counter": hasta que no ha completado el ciclo, no cuenta 1. Es decir, en la primera pasada el contador marca cero. Por tanto, para resolver el problema y que podamos contar hasta 4 como era nuestra intención, basta poner en el "Count" de la configuración del bucle un número más, el 5.

Anda con cuidado con esto porque a veces es un lío y programa según las necesidades.

BUCLE "LOGIC"


Este bucle si que puede llegar a ser un auténtico "cacao". Principalmente porque los bloques y variables lógicas tienen su propio "idioma". Pero bueno, haremos algunos ejemplos sencillos sin intentar meternos es cuestiones complejas. Recuerda que los bloques lógicos solo pueden tomar 2 valores: verdadero o falso. Empezamos con un programa muy sencillo: esperar hasta que el sensor de color detecte amarillo.

Ejemplos del Icono Ciclo de LEGO Mindstorm NXT

Esta sería la forma correcta de programarlo, pero como esto es un ejemplo, voy a programar exactamente lo mismo con un bucle lógico:

Ejemplos del Icono Ciclo de LEGO Mindstorm NXT

Cuando se cumple la condición impuesta en el bloque del sensor de color (detectar amarillo), sale del ciclo y el programa finaliza. Cuando no detecta amarillo, la condición es "Falso". Cuando lo detecta, la condición que sale del sensor es "Verdadero", se cumple con lo que dice el panel del bucle (True=Verdadero) y el programa acaba.

Si en el bucle pones "False", el ciclo esperará hasta que se cumpla esa condición. Es decir, avanzará cuando detecte cualquier otro color que no sea amarillo. Se quedará encerrado en el bucle "hasta que" deje de detectar amarillo. Sería equivalente a poner en el panel del sensor "Outside Range", es decir, fuera del amarillo. O sea, el siguiente programa hace EXACTAMENTE lo mismo que el anterior:

Ejemplos del Icono Ciclo de LEGO Mindstorm NXT

BUCLES ANIDADOS


Un bucle anidado no es más que un bucle dentro de otro bucle. Personalmente me gustaría más que se llamaran "bucles anillados", pero no le puse yo el nombre. Como ejemplo tomaremos el programa que escribimos antes, en el apartado "Bucle "Count"" (esto sería un ejemplo de "comillas anidadas"). El programa que pusimos allí era este:

Ejemplos del Icono Ciclo de LEGO Mindstorm NXT

Pero de esta forma el programa acaba tras los ciclos correspondientes y si queremos repetir, hay que volver a ejecutar el programa. Para solucionarlo, metemos todo en un bucle infinito:

Ejemplos del Icono Ciclo de LEGO Mindstorm NXT

O bien combinamos el bucle exterior para que acabe al pulsar el botón naranja del NXT. Para avanzar sin que el programa se líe como ya vimos más arriba, seleccionamos la tecla izquierda del NXT.

Ejemplos del Icono Ciclo de LEGO Mindstorm NXT

miércoles, 4 de junio de 2014

ARDUBLOCK

Ardublock es una herramienta grafica para programar el Arduino. Es una interfaz muy bonita y sencilla que soluciona errores. Transforma la programación en un juego de bloques como el lego.



Como puede verse la aplicación genera el código de forma muy grafica, y como en un puzzle las instrucciones no caben en cualquier sitio. Las instrucciones tienen las esquinas con distintas formas para que solo funcionen con las instrucciones que son necesarias.
Por ejemplo tengo en mi Arduino conectado un sensor de distancia, y si la distancia es inferior a 10 centímetros que tuerza, supongamos que el sensor esta calibrado a 10 centímetros, entonces mandamos girar un motor.




Como se ve es bastante mas sencillo que escribirlo y para la gente que no domina la programación simplifica todo bastante. 
Y esta en castellano. La url de descarga es : Ardublock.

SIMULANDO UN LANZADOR DE BOLAS DE TENNIS 
CREADO POR NUESTRAS ALUMNAS

martes, 3 de junio de 2014

QUE ES ARDUINO


QUE ES ARDUINO


Arduino es una plataforma de hardware libre, basada en una placa con un microcontrolador y un entorno de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos multidisciplinares. Desde octubre de 2012, Arduino se usa también con microcontroladoras CortexM3 de ARM de 32 bits,5 que coexistirán con las más limitadas, pero también económicas AVR de 8 bits. ARM y AVR no son plataformas compatibles a nivel binario, pero se pueden programar con el mismo IDE de Arduino y hacerse programas que compilen sin cambios en las dos plataformas. Eso sí, las microcontroladoras CortexM3 usan 3,3V, a diferencia de la mayoría de las placas con AVR que generalmente usan 5V. Sin embargo ya anteriormente se lanzaron placas Arduino con Atmel AVR a 3,3V como la Arduino Fio y existen compatibles de Arduino Nano y Pro como Meduino en que se puede conmutar el voltaje.

sábado, 31 de mayo de 2014

COMENZANDO A DESARROLLAR ALGUNAS EXPERIENCIAS EN ROBOTICA EDUCATIVA.

ARAÑA ROBOTICA CREADA POR NUESTRAS ALUMNAS DE OCTAVO GRADO:

ROBOTICA EDUCATIVA DESDE TEMPRANA EDAD.

La Robótica Educativa es un escenario que le permite a los niños, desde temprana a avanzada edad, construir su propio conocimiento llevándolos de la mano hacia el saber científico; permitiéndoles aprender en una forma practica, sencilla y movilizadora, donde se logra que ellos sean creadores e investigadores y no solo consumidores de conocimientos.


jueves, 29 de mayo de 2014

SABIAS QUE:

La Robotica Educativa, o la Tecnologia Eucativa, tiene muchas caracteristicas que lo hacen atractivos desde muchos puntos de vista:

Despertar en los niños la pasión por la ciencia, la tecnología, laprogramación informática, la robótica, las matemáticas, la geometría, la física, las estrategias de resolución de problemas, el trabajo en equipo, y muchos otros valores y materias que se pueden relacionar de forma transversal.
 
Presentar la tecnología a los niños y niñas de una forma lúdica, dónde el aprendizaje se realiza a través del juego, pero de forma dirigida.
 
Aprovechar la motivación personal y la curiosidad innata de los niños para llevar a cabo un aprendizaje mucho más eficaz y de alto nivel.
 
Los niños aprenden de sus propios errores, aprenden a trabajar en equipo y, lo que es más importante, comparten sus propios conocimientos, poniendo en práctica los valores de lo que se llama profesionalismo cordial.
 

Proyecto Beneficio de Café. Utilizando Tecnologia Lego y Arduino. En algunos proyectos de renovación metodológica para la ens...