TUTORIAL

VARIABLES Y CONSTANTES

Icono Variables y Constantes de LEGO Mindstorm NXT

down-amarillo-flecha

Hacer un tutorial sobre Variables y Constantes se me hace algo complicado porque su uso no consiste en una tarea única, hay miles de ejemplos. Así que son posibles miles de tutoriales. Haré uno con algunos ejemplos de su uso. Ya crearás tú los tuyos. Empezaremos describiendo las constantes.


CONSTANTES

Me parece un poco tonto dar algún tipo de definición de constante. Simplemente diremos que es constante, que no cambia a lo largo del programa. No sólo existe la constante de la gravedad.


Los números que se usan en los sensores digitales siempre son los mismos y podrían ser constantes. El número "pi" también es una constante.


Incluso un texto. Imagina que ante determinadas situaciones un robot debe presentar una de estas 3 opciones: "correcto", "falso" y "en espera". También las podrías definir como constantes. No es lo habitual, porque hay otras opciones, pero vamos a ver cómo se hace.


Lo primero para definir una variable es ir al Menú/Edit/Define Constants. Allí te aparecerá el siguiente menú:


Menu Constantes de LEGO Mindstorm NXT

Aquí puedes crear, borrar o modificar las constantes. Dale a "Create" y ponle nombre. Si es un número, puedes llamarle "270". Ya que no variará su valor, será útil así. También le puedes llamar "pi" o "g". Elige bien, el valor aparecerá sobre el icono luego.


Ahora selecciona el tipo de constante. Puede ser Lógica (verdadero/falso), Numérica o Texto. Selecciona "Number" y en el valor escribes 3,14. Ya está creada.


Menu Constantes de LEGO Mindstorm NXT

Para usarla, sólo tienes que ir aquí. Verás dos iconos de una maleta. Uno lleva un candado y el otro no. Es el de la derecha. Una vez arrastrado hasta el programa, el el menú de configuración del icono seleccionas la opción de "Choose from list" y ahí podrás seleccionar tu constante.


NXT-G LEGO Mindstorm NXT

VARIABLES

Las variables sí cambian su valor a lo largo del programa. También pueden llamarse como queramos y también son de tipo lógico, numérico o de texto. Por ejemplo, podemos llamar a una variable "Potencia" para saber el valor que tiene este parámetro en cada momento y representarlo en el display.


Otras variables no harán referencia a un concepto real y serán simplemente valores matemáticos como por ejemplo el número de veces que un bucle se ha ejecutado.


Es frecuente darle un valor inicial a la variable (a modo de reset de la misma) y luego entrar en un bucle que la vaya modificando. Así se pueden hacer por ejemplo contadores, aunque hay otras formas.


Lo pondremos como ejemplo: vamos ha hacer una cuenta en el display desde 0 hasta 50. Empezamos creando la variable "ciclo num". Para ello, vamos a Menú/Edit/Define Variables.


Menu Variables de LEGO Mindstorm NXT

Una vez aquí, le damos a "Create" y elegimos el nombre que le vamos a dar. Escribimos "Ciclo num". Ahora nos pide que le digamos el tipo de variable de la que se trata. Elegimos "Number", que por otra parte es la más frecuente. Una vez hecho esto, le damos a Close. Si quisiéramos crear otra, simplemente repetimos el proceso.


Las 3 opciones que aparecen por defecto no se pueden borrar que yo sepa y si sólo vamos a usar una variable en el programa, podemos seleccionar la que viene ahí. De momento, ya hemos creado la nuestra.


Para seleccionarla, es muy parecido a las constantes. Vas a donde están los iconos de las maletas y eliges la que está sin candado. En este caso, podrás elegir directamente tu variable de la lista:


Configurar Icono Variables de LEGO Mindstorm NXT

La parte de la derecha es básica. Una vez seleccionada la variable con la que vas a trabajar, debes seleccionar a la derecha entre "Read o Write". Si lo que quieres es que la variable tome un determinado valor, es decir, guardar un valor en la memoria "Ciclo num" para luego hacer con él lo que sea, selecciona "Write".


Cuando le das a "Write" aparecen dos cosas: una pequeña ventanita que antes estaba en gris para que (si quieres) escribas tú el valor que debe tomar la variable y en el icono aparecerá un "enganche" para introducir cables de valores.


Este enganche se usaría para introducir por ejemplo los valores RAW suministrados por un sensor o los valores de la potencia actual de un motor y almacenarlos en esa variable. En este caso, no es necesario escribir nosotros el valor en la ventanita, ya que cuando al icono le entra un cable de este tipo, directamente ignora el valor escrito ahí.


La segunda opción es elegir "Read" y servirá para leer el valor que en ese momento está almacenado en esa variable en concreto. Con este valor podremos representarlo en pantalla, calcular otro dato a partir de él, etc.


Bueno, vamos a crear nuestro contador de 0 a 50. La configuración de todo la tienes escrita en cada icono. Para el Loop hemos seleccionado "Count" en su panel con un valor de 50. También hemos añadido al final un bloque de espera de tiempo de 0,2s para que nos de tiempo a ver algo en la pantalla.


Podrías también añadir al final y fuera del bucle un icono de "sound" (configurado en "Tone" en su menú) para comprobar cuándo acaba el programa. Fíjate bien en qué variables están en READ y cuales en WRITE.


Programa Variables LEGO Mindstorm NXT

Aquí se puede ver claro el primer icono, que marca el valor inicial de la variable. Sobre ese valor, que empieza en 0, añadimos 1 con el bloque de matemáticas +1 cada vez que el bucle da una vuelta. Cambia el valor inicial de ese primer icono a 9 y tendrás un contador desde 10 a 50. Empieza a contar en 10 ya que nada más entrar en el bucle y antes de mostrarlo en pantalla le sumamos 1.


¿Y si quieres una cuenta atrás?. Desde 50 hasta 1, por ejemplo. No tienes más que poner el valor inicial a 51 y en lugar de sumar 1, restarlo en el icono de matemáticas. Todo lo demás es exactamente igual.


No siempre es necesario usar variables. Este mismo programa se podría haber escrito pinchando en la pestaña "Counter" del Loop y presentando su valor en pantalla directamente, así:


Programa Loop LEGO Mindstorm NXT

Esta vez empezamos en 51 porque el bucle empieza su cuenta desde 0, así que el ciclo 51 presenta un 50 en el display. Cambia los valores y prueba otros números. Para hacer una cuenta atrás de esta forma, sería así:


Programa Loop LEGO Mindstorm NXT

Bueno, pues hemos visto 2 formas de programar lo mismo. Veamos otro ejemplo de cómo usar variables. Supondremos que ya has montado el sensor de ángulo, que no es más que un potenciómetro.


Si no lo has hecho, basta con saber que girando un potenciómetro va variando el valor de RAW. Ahora conectas el potenciómetro al puerto 1 y un par de motores a los puertos A y B. Es sólo de ejemplo, ya que se moverán muy poco, pero nos servirá para ver cómo se programa.


El valor del potenciómetro puede llegar hasta 510. Este valor lo queremos usar como valor de la potencia del motor. Aunque llegue hasta 100, queremos limitarlo a 50. ¿Cómo lo podríamos hacer? Es necesario usar una variable. La llamaremos "Potencia".


Una opción de programación sería la que sigue. Tienes la configuración en la imagen y en los paneles de más abajo. Corresponden ambos al "Swith" y a la variable de la parte superior del switch.


Programa Variable de LEGO Mindstorm NXT

El programa simplemente lee el valor del potenciómetro y comprueba si es superior a 50. En caso de ser superior a esa cifra, escribimos 50 en el valor de la variable, de forma que su valor siempre está limitado a 50. Si es inferior, no hace nada, con lo que su valor será el valor que haya leido del raw.


A continuación, ese valor se introduce como valor de la potencia con la que los motores A y B deben moverse. También se podría programar sin variables, pero esta no me parece una mala forma de hacerlo.




.