ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Lego Mindstorms NXT: programar con NXC


Enviado por   •  15 de Febrero de 2013  •  Trabajo  •  1.131 Palabras (5 Páginas)  •  715 Visitas

Página 1 de 5

Lego Mindstorms NXT: programar con NXC

• :: receta

• embedded

• Arco

Vie, 2007-09-14 13:32 — oscarah

bq. Primeros pasos en la programación del NXT. Como usar la toolchain necesaria para programar el NXT en lenguaje NXC.

Introducción

De entre todas las opciones disponibles (véase Jugando con LEGO Minstorms: NXT), la menos intrusiva y que parece más estable es NXC. NXC es un lenguaje muy parecido a C, orientado a la programación concurrente del NXT. Para usarlo no es preciso modificar el firmware original del NXT. Por ello, será la primera opción elegida.

Ingredientes

Sólo necesitamos el compilador y algún software para cargar los programas en el NXT:

• NBC Beta Releases, de donde descargamos el compilador. Los binarios funcionan bastante bien en mi Debian SID. La versión que usé para los tests fue la 1.0.1 b32.

• Talk 2 NXT, que es una utilidad muy sencilla para escribir los binarios en la Flash del NXT, usando el cable USB.

Instalación

El software necesario viene compilado, por lo que lo único que tienes que hacer es descomprimirlo y guardar los ejecutables es una carpeta que esté dentro del PATH. Son autosuficientes, sólo necesitas los dos binarios.

tools$ ls

nbc-1.0.1.b32.tgz t2n-0.0.tgz

tools$ tar zxf nbc-1.0.1.b32.tgz

tools$ tar zxf t2n-0.0.tgz

tools$ ls

nbc-1.0.1.b32.tgz nxt t2n-0.0 t2n-0.0.tgz

tools$ cp nxt/nbc ~/bin

tools$ cp t2n-0.0/t2n ~/bin

tools$ PATH=$PATH:$HOME/bin

Primer test: "hola mundo"

Bien, el primer ejemplo es muy sencillo a la par que conocido: el "¡Hola mundo!" en versión NXT. Simplemente escribe en el display el texto especificado y espera unos segundos antes de salir.

Antes de nada, un breve apunte. El SO del NXT permite programación concurrente, es decir, utiliza técnicas que nos posibilitan tener varios "hilos" ejecutandose al mismo tiempo. Como mínimo, debemos tener uno. Estos "hilos" se conocen como tareas (task) y se han de especificar en el programa. De momento, el "hola mundo" sólo tendrá uno: el principal e imprescindible main.

Dentro de esta tarea, escribimos nuestro código. Cuando la tarea termine (y mientras no haya otras en ejecución) nuestro programa terminará.

// -*- coding: utf-8 -*-

// Ejemplo NXC: hello world

// En las últimas versiones de nbc esta línea es implicita

#include "NXCDefs.h"

task main()

{

// Escribimos el texto en el LCD

TextOut(20, LCD_LINE3, "Hola mundo!");

// Esperamos 3 segundos

Wait(3000);

}

El fichero "NXCDefs.h" es imprescindible para la compilación... !tanto que lo han incluido dentro del compilador! Esto implica que ya no es necesario incluirlo implicitamente, porque siempre se hace. Esa línea la puedes eliminar si quieres.

Dentro de la tarea, usamos TextOut para escribir en el LCD. El display es de 100x64 pixeles, y esta es la unidad empleada en las funciones de escritura. El origen de coordenadas está en la esquina inferior izquierda.

Los dos primeros parámetros de TextOut son las coordenadas x,y en donde escribir el texto. Para hacer las cosas un poco más sencillas, tenemos definidas las coordenadas y de las líneas del LCD en las cosntantes LCD_LINEn, donde n está entre 1 y 7. Puedes hacer pruebas con diferentes números. Si el texto no cabe en una línea, simplemente no aparecerá. Los saltos de línea corren de nuestra cuenta.

Si simplemente escribimos el texto y terminamos, no veremos nada. Para ello, Wait hace que se pause la tarea durante el tiempo estipulado (en ms).

Bien. Puedes guardar el código en un fichero con la extensión "nxc" y compilarlo:

lab$ ls

hello.nxc

lab$ nbc hello.nxc -O=hello.rxe

...

Descargar como (para miembros actualizados) txt (7 Kb)
Leer 4 páginas más »
Disponible sólo en Clubensayos.com