jueves, 18 de abril de 2013

Bloques personalizados (NXT-G) 6/6

Y con esta entrada termino la traducción del tutorial realizado por Dave Parker sobre programación de bloques en NXT-G. Espero que haya servido a alguien.

Organizar y compartir Mis Bloques

En esta última sección, vamos a ver algunas maneras de manejar y compartir su colección de Mis Bloques

Copiar, renombrar y borrar Mis Bloques

Como se muestra en la sección anterior Copia de un Mi Bloque , el comando Edición - Administrar Paleta Customizada se puede utilizar para abrir la carpeta de su equipo donde se almacenan Mis bloques (Figuras 38 a 40 ). Con esta carpeta abierta, puede copiar, renombrar o borrar Mis Bloques que ha creado al copiando, renombrando o borrando el fichero correspondiente (.Rbt). De esta manera, puede manejar su conjunto de Mis Bloques para hacer versiones alternativas, eliminar aquellos que no necesita más, etc

Los bloques rotos

Un programa de NXT-G que contiene un acceso a un Mi Bloque (una instancia de un Mi bloque insertada desde la paleta personalizada) en realidad no almacenará el contenido del Mi Bloque en el archivo principal del programa. En su lugar, el programa contiene sólo una referencia al Mi Bloque, que es esencialmente el nombre de la Mi Bloque junto con alguna información sobre la ubicación del fichero. Cuando se abre el programa, el software intenta localizar el archivo de Mi Bloque (el Archivo .rbt) utilizando esta información. Si el software no encuentra el Mi Bloque (debido a su archivo .Rbt se ha eliminado o cambiado de nombre, por ejemplo), entonces NXT-G mostrará un bloque roto en lugar del Mi Bloque correcto, y usted no será capaz de descargar el programa al NXT.
La Figura 53 muestra un ejemplo de un bloque roto. Este ejemplo fue creado mediante un programa que utiliza el Mi Bloque Forward500, cerrando el programa, borrando el bloque Forward500 (desde Edición - Administrar paleta customizada) y, a continuación, abrir el programa de nuevo. El software NXT-G sabe que el bloque fue nombrado Forward500, pero fue incapaz de encontrarlo, así que mostrará un bloque roto con el nombre Forward500 en la pantalla. Los bloques rotos en un programa tendrán que ser eliminados y sustituidos por los bloques adecuados, o los archivos Mis Bloques desaparecidos deben localizarse e instalarse antes de que el programa pueda ser utilizado.
Figura 53: Un Mi Bloque roto
Una causa común de los bloques rotos es cuando un usuario intenta compartir un programa NXT-G escrito en un ordenador en un equipo diferente (por transferencia o por correo electrónico del archivo de programa o publicación del archivo de programa en la web, por ejemplo). Si el programa contiene una referencia a un Mi bloque y éste no se transfiere también, el programa mostrará un Mi Bloque roto. Es posible transferir Mis Bloques e instalarlos en el equipo de destino también, pero una manera más fácil y mejor para compartir programas es utilizando la característica Empaquetar publicaciones como se describe en la siguiente sección.

Programas de intercambio con empaquetar publicaciones

En el menú Herramientas del software NXT 2.0 hay un comando llamado Crear Pack & Go... . Este comando es otra manera de grabar un programa de NXT-G que se guardará junto con una copia de todos los bloques, Mis sonidos y archivos gráficos que se utilizan en el programa. Normalmente, el grabar programa de NXT-G con Archivo - Guardar o Archivo - Guardar como salvará sólo el archivo de programa principal junto con referencias (a Mis Bloques, archivos de sonido y archivos de imagen) y el programa sólo funcionará en el equipo de destino si los archivos adicionales ya están en ese equipo o también se transfieren y se instalan correctamente. Guardar un programa con Herramientas - Crear Pack and Go... es una forma mucho más fácil y fiable para compartir programas con otros usuarios en otros equipos.

Nota: La Creación de empaquetar publicaciones no está disponible en las versiones del software NXT antes de NXT 2.0 y el formato de almacenamiento Pack&Go de archivos (.Rbtx) no puede ser leído por las versiones anteriores. Si guarda un programa en este formato, no será legible por los usuarios con el software NXT 1.X o el "NXT-G 2.0" software de LEGO Education.
La figura 54 muestra un programa que utiliza dos Mis Bloques, un archivo gráfico, y un archivo de sonido, y el comando Crear Pack and Go... se utiliza para guardar el programa. El diálogo Crear Pack and Go... le permite introducir un nombre para el programa guardado y una ubicación de carpeta para especificar la ubicación donde el archivo debe ser guardado. Cuando se utiliza Crear Pack and Go... para guardar un programa, el programa se guarda en un formato de archivo diferente al normal (.Rbt), como lo indica la extensión de archivo. Rbtx. El software NXT-G llama a este formato de una distribución, ya que está diseñado para distribuir el programa a otros equipos.
Figura 54: Pack and Go... graba un programa junto con sus
Mis Bloques, sonidos y gráficos necesarios en un solo archivo.
La parte inferior de la página Crear Empaquetar diálogo muestra los archivos que se incluyen en la distribución (.Rbtx). En este ejemplo, el programa principal PackTest se guarda junto con el gráfico Smile 01 utilizado por el bloque de la pantalla, el sonido Good Job utilizado por el bloque de sonido, y una copia de lo Mis Bloques LeftPivotAngle y OutAndBack. Además, los Mis Bloques Backward, BeepBeep y Forward también se incluyen porque son usados por el bloque OutAndBack. Esto permite que el archivo de distribución resultante sirva trabajar en cualquier computadora con el software NXT 2.0, independientemente de que los archivos auxiliares ya existan en ese equipo.

Nota: El formato Pack and Go (.Rbtx) también se comprime, lo que resulta en archivos mucho más pequeños, incluso para un solo archivo de programa con ningún otro archivo de apoyo.
Además, la compresión utilizada es el estándar "zip" el formato, por lo que si se cambia el nombre al archivo (.Rbtx) para que tenga la extensión ". Zip", entonces se puede abrir con cualquier extractor de zip (incorporado en muchas sistemas operativos) y acceder a los archivos individuales del interior (incluso si no tiene el software NXT 2.0).

Haciendo un submenú en la paleta personalizada

Si llegas al punto de crear una gran cantidad de Mis Bloques, puede ser útil organizarlos en grupos, para que no todos aparezcan en una larga lista en la paleta customizada ( Figura 10 ). También puede ser útil agrupar todos los Mis bloques que están diseñados para un determinado proyecto juntos. Afortunadamente, NXT-G permite crear menús adicionales en la paleta personalizada donde podrá organizar sus bloques en grupos.
Para crear un menú adicional en la paleta personalizada, utilice el comando Edición - comando Administrar paleta customizada para abrir la carpeta de almacenamiento de la paleta personalizada (Figura 55). En esta carpeta, las dos subcarpetas Mis Bloques y Web Blocks corresponden a los dos menús estándar de la paleta personalizada. Para crear su propio menú, basta con crear otra subcarpeta en el mismo nivel que la subcarpeta Mis Bloques. A continuación, puede mover los archivos de mi bloque (.Rbt) de la carpeta Mis bloques a la nueva carpeta.
Figura 55: La creación de una nueva carpeta al lado de la carpeta Mis Bloques
creará un nuevo menú de la paleta personalizada.
En la figura 55, he creado una subcarpeta denominada Pinball para reunir Mis Bloques que fueron diseñados específicamente para el proyecto de la máquina de pinball que he diseñado. La figura 56 muestra los siete archivos de Mi Bloque (.Rbt) que moví a la carpeta Pinball, y la figura 57 muestra el menú que aparece en la paleta personalizada con los siete Mis Bloques para el proyecto de la máquina de pinball en él.
Figura 56: La carpeta Pinball contiene todos los bloques Mis específicos del proyecto Pinball.

Figura 57: El Submenú Pinball contiene siete Mis Bloques y un icono de menú personalizado.

El menú de Pinball en la Figura 57 se muestra como un círculo negro porque he personalizado el icono correspondiente. NXT-G hace que sea fácil personalizar tus propios iconos de menú. La Figura 56 muestra dos archivos adicionales denominados PaletteIcon.txt y PaletteIcon.png que se han colocado en la carpeta Pinball. El archivo PaletteIcon.png es un archivo gráfico que especifica el icono que se utiliza en el menú, y el archivo PaletteIcon.txt es un archivo de texto que especifica el texto informativo que se muestra sobre las herramientas cuando se coloca el cursor sobre el icono de menú. Si estos archivos (llamado exactamente así) están presentes en la carpeta, el icono del menú se puede personalizar, de lo contrario, se mostrará el icono estándar y mensaje habitual.

Nota: El archivo PaletteIcon.txt en la carpeta Mis Block sólo se tiene en cuenta si el archivo PaletteIcon.png también está presente, por lo que si desea una descripción personalizada para un menú de Mi Bloques, también debe hacer un icono personalizado para él.
El archivo PaletteIcon.png debe ser un archivo gráfico en formato PNG de 45 x 45 píxeles de tamaño. En un equipo que ejecuta Windows, puede crear este archivo con el programa accesorio Paint. En el programa Paint, utilice Imagen - Atributos para definir el tamaño de la imagen a 45 por 45, pinte y/o pegue cualquier imagen que desee y a continuación, guarde el archivo en formato PNG (PNG.). El archivo PaletteIcon.txt se pueden crear en un ordenador con Windows utilizando el programa de accesorios Bloc de notas para crear un archivo de texto simple.

Bloques personalizados (NXT-G) 5/6

La penúltima entrega de la traducción del tutorial realizado por Dave Parker sobre programación de bloques en NXT-G.

Crear Mis Bloques más complejos

En las secciones siguientes, se muestran dos ejemplos más de Mis Bloque que muestran algunas técnicas que se pueden utilizar para hacer cosas más complejas. En primer lugar vamos a crear un Mi Bloque llamado OutAndBack que se basa en los bloques que hemos creado hasta el momento para hacer un robot avanzar una distancia especificada, de la vuelta la misma distancia para volver al punto de partida y suenen los pitidos antes de cada movimiento. A continuación, vamos a dar un repaso a través de la creación de un Mi Bloque más complejo llamado LimitNumber que se puede utilizar para probar y modificar un valor numérico asegurándose que está dentro de un rango especificado. El bloque LimitNumber es lo suficientemente complejo para requerir una cuidadosa planificación y prueba. Finalmente terminaremos mostrando un proceso paso a paso que se puede utilizar como guía en el proceso de creación de Mis Bloques más complejos.

Uso de Mis Bloques dentro de otros Mis Bloques

Para construir el Mi Bloque OutAndBack, podemos notar que las tres cosas que queremos hacer ya se han desarrollado en los bloques Forward, Backward y BeepBeep. Afortunadamente, un Mi bloque puede contener usos de Mi Bloque, por lo que el bloque OutAndBack será fácil de crear usando estos otros tres bloques. La figura 43 muestra el programa utilizado para crear el bloque OutAndBack. La principal funcionalidad se logra simplemente insertando los bloques previamente creados desde la paleta personalizada. Puesto que el bloque OutAndBack tendrá dos parámetros de entrada (Distance cm y Power), dos bloques de constantes se utilizan como fuentes de datos para estos valores antes de crear el Mi Bloque.
Figura 43: Un Mi Bloque se puede crear uniendo de otros Mi Bloque.

 

Utilizar parámetros de entrada más de una vez dentro de un Mi Bloque

Como se muestra en la Figura 43, los parámetros de entrada Power y Distance cm se utilizan dentro del Mi Bloque en los bloques Forward y Backward. Cuando un parámetro de entrada se utiliza más de una vez en el contenido de un Mi Bloque, es importante que todos los usos del parámetros se conecten al mismo bloque constante (o fuente de datos) en el programa que se utiliza para crear el Mi Bloque. Esto garantiza que todos los diferentes usos reciben el mismo valor y que un único parámetro se convertirá en la fuente de todos los usos. Recuerde que a la hora de seleccionar los bloques para formar el mi bloque, los bloques seleccionados todos deben ser contiguos, de modo que los bloques constantes en la Figura 43 deben estar colocados al principio de la secuencia.
En cuanto a la selección de bloques de la Figura 43 que se seleccionan para formar el Mi Bloque, se observa que cuatro cables cruzan la frontera de la selección. Sin embargo, estos cuatro cables sólo representan dos diferentes rutas de datos, debido a que algunos de los cables se unen a la misma fuente de datos. Sólo se crea un parámetro por para cada fuente de datos diferente que está fuera de la selección, por lo que en este caso sólo se crean dos parámetros de entrada. La figura 44 muestra el contenido del Mi Bloque OutAndBack resultante. Hay dos bloque de conexión de parámetros, cada uno de los cuales se utiliza dos veces dentro del bloque.
Figura 44: El Mi Bloque OutAndBack utiliza otros Mis bloques en su interior
y utiliza cada parámetro de entrada dos veces.

 

Creación de un Mi Bloque con un puerto de salida de datos

En las siguientes secciones, vamos a construir un Mi Bloque más complejo llamado LimitNumber, que incluirá un puerto de salida de datos en su centro de datos. Esto permitirá que el Bloque pueda pasar un valor de resultado de vuelta al programa que utiliza el bloque. Este Mi Bloque será más difícil de probar que mis otros bloques que hemos creado hasta el momento, por lo que se mostrará un método de comprobación antes y después de crear el Bloque.
El Bloque LimitNumber aceptará un parámetro de entrada Number junto con otros dos parámetros de entrada llamados Min y Max. Comprobará si Number está en el rango numérico de Min a Max y producirá un valor de salida que está dentro de ese rango. Específicamente, el resultado de LimitNumber puede especificarse como sigue:
  • Si el Number es mayor que Max, el resultado es Max.
  • Si el Number es inferior al Min, el resultado es Min.
  • Si el Number está en el rango de Min a Max, el resultado es Number.
Como LimitNumber tendrá tres parámetros de entrada, vamos a empezar con tres bloques de constantes que sean las fuentes de datos para estos parámetros. Estas constantes se denominan Min, Max,y Number en la Figura 45.
Para el resultado de salida, también necesitamos un lugar para conectar un cable de datos que contiene los datos de los resultados a una ubicación fuera del bloque que conforman el Mi Bloque. Inversamente a la forma en que se crean los parámetros de entrada cuando una selección de bloques se convierte en un Mi Bloque, un puerto de salida de datos se creará para cada ruta de datos que se origina en el interior de los bloques seleccionados y se conecta a un lugar fuera de los bloques seleccionados.

Regla: Un puerto de salida se creará para cada ruta de datos que se origina en el interior de los bloques seleccionados para crear Mi Bloque y que está conectado a un lugar fuera de (detrás) de los bloques seleccionados.
Una manera fácil de crear esta conexión es utilizar un bloque de escritura Variable para recibir el resultado de la salida. Para mayor claridad, se puede usar Edición - Definir variables para definir una variable del tipo apropiado con un nombre descriptivo. Para un puerto de salida, el bloque de escritura variable debe ser colocado en el extremo de la secuencia utilizada para crear el Mi Bloque como se muestra en la Figura 45.
Figura 45: Preparación para hacer un Mi Bloque con tres parámetros de entrada y un puerto de salida de datos.

 

Usando una variable local en un Mi Bloque

Para una fórmula compleja, como la especificación del resultado LimitNumber basada en los valores de Number, Min y Max que se muestra más arriba, a menudo es útil usar una o más variables temporales para almacenar y modificar resultados intermedios antes de producir el resultado final. Si tuviéramos una variable temporal denominada TempResult, entonces se podría aplicar la fórmula para LimitNumber mediante la siguiente secuencia ordenada de acciones:
  1. Almacene en la variable TempResult el valor de Number.
  2. Comparar Number con Max, y si Number es superior a Max a continuación, sobrescribir la variable TempResult con el valor de Max.
  3. Comparar Number con Min, y si el Number es menor que Min sobrescribe la variable TempResult con el valor de Min.
  4. Conecte la variable TempResult a la ruta de datos de salida.
La variable temporal TempResult en esta secuencia se utiliza sólo en el interior de los contenidos del Bloque y no es necesario antes o después de que Mi Bloque se ejecute. Sin embargo, un posible problema con el uso de una variable temporal dentro de un Mi Bloque es que si la variable tiene un nombre que coincide con otra variable utilizada por un programa que usa el bloque, la variable temporal sobreescribirá a la variable del programa y probablemente creará un error. Algunos lenguajes de programación ofrecen una manera de crear algo que se llama una variable local, lo cual no afectará el programa fuera, pero NXT-G no, así que vamos a utilizar una convención de denominación de variables para evitar este problema.

Nota: Todas las variables en NXT-G son "globales", lo que significa que dos variables con el mismo nombre se refieren a la misma ubicación de almacenamiento. No se puede definir una variable "local" garantizando que afecta sólo al contenido de Mi Bloque.
Usando una convención de nomenclatura para variables significa seguir unas normas acerca de cómo deletrear las variables que se utilizan en diferentes lugares, con el fin de evitar conflictos de nombres. Una variable temporal con un nombre como TempResult es, por desgracia muy probable que entre en conflicto con otra variable que se utiliza en el programa (incluso si no tiene una variable llamada así ahora, puede agregarla más adelante).
La convención de nomenclatura para las variables que sugiero es:
  • Las variables temporales de un Mi bloque empiezan con una letra minúscula y tienen el nombre del Bloque al final después de un guión bajo ("_").
  • Las variables normales comienzan con una letra mayúscula.
Esta convención se asegurará de que las variables temporales no interfieran con las variables normales en un programa o cualquier variable temporal en otros Mis bloques. También hace más fácil identificar las variables temporales de un vistazo porque comienzan con una letra minúscula. La figura 46 muestra una variable temporal number_LimitNumber para su uso en el Bloque LimitNumber.
Figura 46: convención de nomenclatura para las variables "locales" utilizadas sólo en el interior de un Mi Bloque.
La Figura 47 muestra un programa que puede ser utilizado para crear Mi Bloque LimitNumber utilizando la variable temporal number_LimitNumber y la secuencia de las acciones planificadas anteriormente. Tenga en cuenta que sólo una parte del nombre de las variables temporales es visible en los bloques de variables, pero todavía se puede ver la parte importante del nombre al principio.
Figura 47: Un programa para crear el Mi Bloque LimitNumber ( clic para ampliar ).
Como se mencionó en el ejemplo anterior OutAndBack, todos los usos de un parámetro de entrada necesitan ser conectados a la misma ruta de datos que conduce al bloque constante para ese parámetro. Para Mi Bloques largos, puede ser difícil hacer esto. Por ejemplo, tenga en cuenta que la ruta de datos para el parámetro Min en la Figura 47 es bastante larga. Si es demasiado difícil de cablear el acceso a un parámetro de entrada en todos los lugares necesarios, puede introducir otra variable temporal para almacenar una copia del parámetro de entrada. En este caso se utiliza un bloque de escritura Variable para copiar el valor del parámetro de entrada a la variable temporal al inicio del bloque, entonces puede utilizar varios bloques de lectura variable para acceder a la variable temporal en todo el programa.

Nota: El programa de la figura 47 incluye algunos comentarios para su claridad, pero por lo general tendrá que esperar hasta después de la creación de Mi Bloque antes de añadir los comentarios, ya que puede ser necesario cambiarlos de posición después de crear el Mi Bloque.


Prueba de un Mi Bloque antes y después de crearlo

El programa LimitNumber que se muestra en la Figura 47 es más complejo que los otros programas que hemos creado hasta el momento, y también es más difícil de probar, ya que no da lugar a ningún movimiento, sonidos, o mostrar algo en la pantalla del robot. Para probar el programa, es necesario ser capaz de ver el valor de la variable de Result al final. La figura 48 muestra algunos bloques adicionales que pueden ser utilizados para esta prueba. La variable Result se convierte a texto y se muestra en la pantalla NXT, y luego un bucle infinito vacío hace la espera hasta que se aborte el programa (de modo que el resultado no se borrará de la pantalla cuando el programa termina).
Figura 48: Bloques adicionales utilizados para la prueba antes de crear el Mi Bloque LimitNumber.
Los bloques de prueba en la figura 48 deben añadirse al final del programa de la figura 47 antes de crear el Mi Bloque, y entonces el programa se puede probar (antes de que se cree Mi Bloque) ejecutándolo varias veces, modificando cada vez los valores para las constantes Number, Min, y Max al comienzo del programa y observando que el valor de Result que se muestra para asegurarse de que se comporta como se espera. Lo mejor es hacer la prueba antes de crear el Mi Bloque, porque algunas cosas no se pueden cambiar (o no se pueden cambiar fácilmente) después. La figura 49 muestra el programa completo para probar y crear el Mi Bloque LimitNumber con los bloques de prueba adicional.
Figura 49: Selección de los bloques que van dentro del Mi Bloque LimitNumber ( clic para ampliar ).

Nota: Antes de crear un Mi Bloque, es importante guardar una copia del programa (aparte de con la que se está trabajando, y que también se debe guardar) en caso de que el Mi Bloque no salga como esperas es necesario volver al programa original para realizar los cambios. Puede guardar una copia con el comando de menú Archivo - Guardar como.
Por ejemplo, puede utilizar Guardar como para guardar una copia del programa que se muestra en la Figura 49 con nombre LimitNumberProg1 y luego en Guardar como otra copia nombrada LimitNumberProg2, y luego crear el Mi Bloque desde LimitNumberProg2.

Para crear el Mi Bloque LimitNumber desde el programa completo, seleccione los bloques después de los bloques de Constantes al principio y antes del bloque que escribe el resultado en la variable de salida Result (Figura 49). Esta selección presenta tres fuentes de datos de entrada fuera de la selección al comienzo, que se convertirán en los tres parámetros de entrada, y una ruta de datos fuera de la selección en el extremo, lo que resultará en el puerto de salida de datos. El programa resultante con la selección sustituida por el Mi Bloque se muestra en la Figura 50. Tenga en cuenta que los bloques de pruebas todavía están allí después del bloque LimitNumber. Puede probar de nuevo el programa en este momento si lo desea, pero debe comportarse igual que lo hacía el programa completo antes de crear el Mi Bloque.
Figura 50: El programa de pruebas después de crear el Mi Bloque LimitNumber.
El contenido del Mi Bloque LimitNumber se muestra en la Figura 51. Aquí los parámetros se han cambiado de nombre, se ha añadido un comentario de encabezado del bloque, y los cables y los comentarios fueron reordenados. Tenga en cuenta que los resultados de los puertos de salida crean un bloque de conexión similar a los parámetros de entrada y también se pueden cambiar.
Figura 51: El contenido del Mi Bloque LimitNumber terminado ( clic para ampliar ).
Como prueba final del bloque LimitNumber, puede crear un nuevo programa que tiene una nueva copia del bloque LimitNumber conectado directamente a los bloques de prueba (Figura 52), y probar las diferentes combinaciones de los parámetros de entrada introduciéndolos directamente en el panel de configuración del bloque LimitNumber.
Figura 52: Prueba final con una nueva copia del Mi Bloque LimitNumber.

 

Un proceso paso a paso para crear y probar un Mi Bloque complejo

Como vimos en el Mi Bloque LimitNumber de la sección anterior, hay varios pasos que realizar en la creación de un Mi Bloque complejo, y momentos estratégicos durante el proceso en el que debe guardar y poner a prueba su trabajo. En esta sección se resume el proceso paso a paso que puede utilizar para guiarse en este proceso.

Un proceso paso a paso para crear y probar un Mi Bloque complejo:
  1. Decida qué parámetros de entrada, puertos de salida de datos y variables utilizará Mi Bloque para comunicarse con los programas que lo utilizan. No se puede cambiar el número o tipo de parámetros o puertos después de la creación de un mi bloque, por lo que es una buena idea tratar de pensar en esto antes.
  2. Crear un nuevo programa que se usará para probar y crear el Mi Bloque. Llamemos a este el programa de pruebas.
  3. En el programa de pruebas, insertar un bloque constante para cada parámetro de entrada en el inicio del programa, y un bloque de escritura variable para cada puerto de salida de datos al final del programa ( Figura 45 ).
  4. Definir las variables temporales para el uso dentro del Mi Bloque utilizando una convención de nomenclatura que evita conflictos de nombres con otras variables. Se sugiere que las variables temporales empiecen con una letra minúscula y se añada el nombre del Mi Bloque al final después de un guión bajo ("_") y las variables normales comienzan con una letra mayúscula ( Figura 46 ).
  5. Crear el contenido del Mi Bloque en el programa de pruebas como una secuencia contigua de bloques entre los bloques de parámetro de entrada constante y los bloques de variables de salida ( Figura 47 ).
  6. Asegúrese de que si un parámetro de entrada se utiliza varias veces todos los accesos están conectados a la misma ruta de datos que conduce al bloque constante original para ese parámetro de entrada. Si una ruta de datos se hace demasiado larga o compleja de gestionar, se puede introducir una variable temporal para almacenar el valor de un parámetro de entrada y acceder a ella a partir de la variable temporal en su lugar.
  7. Añadir bloques de prueba al principio y/o al final del programa de pruebas para ayudarle a comprobar que funciona como se espera ( Figura 48 ).
  8. Ejecutar varios casos de prueba, modificando los valores de los parámetros de entrada en los bloques de constantes entre ejecuciones para poner a prueba todas los casos posibles. Haga los cambios necesarios en el programa de pruebas.
  9. Guarde dos copias del programa de prueba utilizando Guardar como, para que siempre tenga una copia de seguridad antes de que se creara el Mi Bloque.
  10. Seleccione la secuencia de los bloques que conforman el contenido del Mi Bloque. Esto debería incluir todos los bloques después de los bloques constantes de parámetros de entrada y antes de cualquier bloque de salida Escribir variable, y no debe incluir los bloques añadidos para la prueba ( Figura 49 ).
  11. Haga clic en el botón Crear mi Bloquear de la barra de herramientas y utilice el Mi Generador de Bloques para especificar el nombre y el icono de Mi Bloque ( figuras 3 a 5 ).
  12. Compruebe que el programa de prueba modificado todavía parece correcto después de Mi Bloque haya sido sustituido, en especial las rutas de datos para los parámetros de entrada y los puertos de salida. Realice hacer más ejecuciones de prueba en este momento si lo desea ( Figura 50 ).
  13. Haga doble clic en el Mi Bloque en el programa de pruebas para abrir su contenido. Cambie el nombre de los parámetros de entrada y puertos de salida a nombres descriptivos, añada un comentario de encabezado de bloque y otros comentarios sobre los contenidos, y coloque la posición de las rutas de cables como se desee. Todos los trazados de cables que sean demasiado difícil de gestionar se pueden borrar y volver a crear cuando sea necesario ( Figura 51 ).
  14. Guardar el contenido de mi bloque con Archivo - Guardar.
  15. Crear un nuevo programa para probar la última versión de Mi Bloque. Inserte una nueva copia del Mi Bloque de la paleta personalizada y añada cualquier código de prueba necesario para probarlo, y luego realice una serie completa de pruebas de funcionamiento de nuevo (Figura 52 ).

sábado, 6 de abril de 2013

Bloques personalizados (NXT-G) 4/6

Esta es la cuarta entrega de la traducción del tutorial realizado por Dave Parker sobre programación de bloques en NXT-G. 

Hacer una copia modificada de un Mi Bloque

El bloque Forward desarrollado en las secciones anteriores proporciona una manera razonablemente flexible para hacer un robot vaya hacia adelante, pero ¿y para ir hacia atrás?. El bloque de Mover estándar tiene un parámetro de Dirección que se puede utilizar para especificar si desea ir adelante o atrás, pero nuestro bloque Forward no lo tiene. Podríamos hacer otra versión de Mi Bloque que incluyera otro parámetro de entrada para especificar la dirección, pero otra opción es crear un nuevo Mi Bloque de nombre Backward que va hacia atrás en vez de hacia adelante. Esta opción tiende a hacer el programa más fácil de leer, ya que verá los nombres de los bloques que indican claramente "Adelante" y "Atrás" en el programa. Esta sección le mostrará cómo hacer una copia modificada de un Mi Bloque existente con un nombre diferente, lo cual es útil en situaciones como ésta, así como muchas otras situaciones (es posible que desee probar algunas variantes diferentes de un bloque, por ejemplo ).

Copia de un Mi Bloque

Queremos crear un Mi Bloque Backward, que va a ser exactamente igual que Mi Bloque Forward con excepción de la dirección del movimiento, por lo que puede hacer una copia de Mi Bloque Forward, realizar el cambio de dirección, y luego cambiar el nombre a Backward. Para hacer una copia nueva de un Mi Bloque, comience usando el comando Edición - comando Administrar paleta customizada (Figura 38).

Nota: También puede utilizar el comando Archivo - Guardar como para crear una nueva copia de un Mi Bloque con un nombre diferente, pero en Guardar como también reemplazará los actuales usos del Bloque en programas abiertos con el nuevo nombre, que no es probable que sea lo que quiere, por lo que lo normal es que desee utilizar Administrar paleta customizada en su lugar.
La opción de menú Edición - comando Administrar paleta customizada abrirá la carpeta de su ordenador donde se almacenan los bloques de la paleta personalizada, que es una carpeta llamada Mis Bloques en el lugar donde se almacenan los programas NXT-G para el perfil de usuario.

Figura 38: El comando de menú Gestionar Paleta Customizada
abre la ubicación donde se almacenan Mis Bloques.
En la carpeta de bloques, abra la subcarpeta denominada Mis Bloques, que es la carpeta en donde se almacenan. En la carpeta Mis bloques, puede seleccionar el Mi Bloque que desea copiar, utilice Edición - Copiar y Editar - Pegar para crear una copia (Figura 39), a continuación, seleccione y cambie el nombre del archivo (Figura 40).
Figura 39: Cómo hacer una copia de un Mi Bloque (RBT). El archivo creará otra copia de Mi Bloque.
Figura 40: Cambiar el nombre de un archivo de Mi Bloque cambiará el nombre del bloque.
Una vez que haya creado y cambiado el nombre de la copia, puede hacer doble clic en él para abrirlo y, a continuación, realice los cambios necesarios en el contenido. La figura 41 muestra el contenido de la Mi Bloque Backward.
Figura 41: El Mi Bloque Backward es como el Bloque Forward Block en el que se
invierte la dirección del motor y modificado el comentario de cabecera.

Cambiar el icono de un Mi Bloque

En el caso de los mis bloques Forward y Backward puede estar bien que para los dos bloques se muestre el mismo icono en el frontal pero en algunos casos, cuando se crea una copia modificada de un Mi Bloque, puede quererse cambiar el icono del nuevo bloque. La figura 42a muestra una situación en la que se copió un Mi Bloque llamado LeftPivotAngle y modificado para crear un bloque similar llamado RightPivotAngle. En este caso, tendrá que cambiar el icono del bloque RightPivotAngle nuevo.
Para cambiar el icono de Mi Bloque, es necesario seleccionar la utilización de un bloque (no se puede cambiar el icono dentro de los contenidos del Mi Bloque), a continuación, utilice el comando Edición - Editar icono Mi Bloque. Este comando la segunda etapa de Mi Generador de Bloques ( Figura 5 ), que le permitirá modificar o reemplazar el icono(Figura 42b). Una vez que haya cambiado el icono, se cambia para todos los nuevos usos del Mi Bloque.

Figura 42a / b: Cambiar el icono de Mi un bloque (antes y después).