Vous êtes sur la page 1sur 2

INFORME NO. 1 - INTRODUCCIÓN A LA PLATAFORMA LEGO® MINDSTORMS®

1

Introducción a la Plataforma LEGO® MINDSTORMS®

Christian Manuel Palacio, Juan Carlos Trujillo, Sebastian Corzo Facultad de Ingeniería, Departamento de Ingeniería Eléctrica y Electrónica Universidad Nacional de Colombia

Resumen—Este es el texto de resúmen. Index Terms—simplicidad, belleza, elegancia

I.

INTRODUCCIÓN

A QUÍ texto texto texto.

II. INTRODUCCIÓN AL HARDWARE

III. LENGUAJE DE PROGRAMACIÓN NXC

NXC son las siglas de Not eXactly C (No exactamente C). Es un simple lenguaje de programación para el producto NXT de LEGO® MINDSTORMS®. El NXT tiene un interprete de Bytecode, el cual puede ser usado para ejecutar programas. Aunque el preprocesador y las estructuras de control de NXC son muy parecidas a C, NXC no es un lenguaje de progra- mación de propósito general. NXC es un lenguaje sensible a mayúsculas, tal cómo C y C++ [1].

III-A. Estructura de programa

Un programa en NXC está compuesto por bloques de código y variables, hay dos tipos distintos de bloques de código: tareas (task) y funciones (function). Cada tipo de bloque de código tiene sus propias características únicas, pero comparten una estructura común. El número máximo de bloques tanto tareas cómo funciones combinados es de 256.

Tareas: Las tareas son definidas usando la plabra

clave task con la sintaxis mostrada en el algoritmo 1.

III-A1.

Algoritmo 1 Sintaxis task

task nombre()

{

// Código de la tarea aquí.

}

El nombre de la tarea puede ser cualquier identificador legal. Un programa debe siempre tener al menos una tarea -llamada “main”- la cual es iniciada al correr el programa. El cuerpo de una tarea consiste de una lista de declaraciones. La función StopAllTasks detiene todas las tareas corriendo actualmente.

Algoritmo 2 Sintaxis function

tipo_de_retorno nombre(lista_de_argumentos)

{

// Cuerpo de la función

}

III-A2. Funciones: Es a menúdo útil agrupar un conjunto de declaraciones juntas dentro de una sola función, la cual puede ser llamada cuando sea necesaria. NXC soporta funcio- nes con argumentos y retorno de valores. Las funciones son definidas usando la sintaxis mostrada en el algoritmo 2. El tipo de retorno es el tipo de dato que retorna la función. Las funciones que no retornan ningún valor simplemente retornan void.

III-B.

Todas las variables en NXC son definidas usando uno de los tipos listados a continuación:

bool: Valor sin signo de 8-bits. Normalmente se almacena un 0 o 1.definidas usando uno de los tipos listados a continuación: byte: Valor sin signo de 8-bits. Puede

byte: Valor sin signo de 8-bits. Puede almacenar valores de 0 hasta 255.Valor sin signo de 8-bits. Normalmente se almacena un 0 o 1. char: Valor con signo

char: Valor con signo de 8-bits. Puede almacenar valor de -128 hasta 127. Es a menudo utilizado para almacenar el valor ASCII de un caracter.sin signo de 8-bits. Puede almacenar valores de 0 hasta 255. int: Valor con signo de

int: Valor con signo de 16-bits. Puede almacenar valores de -32768 hasta 32767. Usando la palabra clave unsigned se pueden almacenar valores de 0 hasta 65535.utilizado para almacenar el valor ASCII de un caracter. short: Valor con signo de 16-bits. Puede

short: Valor con signo de 16-bits. Puede almacenar valores de -32768 hasta 32767.clave unsigned se pueden almacenar valores de 0 hasta 65535. Tipos de variables long: Valor con

Tipos de variables

long: Valor con signo de 32-bits.almacenar valores de -32768 hasta 32767. Tipos de variables unsigned: Es usada para modificar las variables

unsigned: Es usada para modificar las variables char, int y long para definir versiones sin signo de estas variables.32767. Tipos de variables long: Valor con signo de 32-bits. float: Es una representación de punto

float: Es una representación de punto flotante de 32-bits de acuerdo al estándar IEEE 754 [2].y long para definir versiones sin signo de estas variables. mutex: Valor de 32-bits que es

mutex: Valor de 32-bits que es usado para sincronizar acceso a fuentes compartidas.flotante de 32-bits de acuerdo al estándar IEEE 754 [2]. string: Es proporcionado para definir y

string: Es proporcionado para definir y manipular facil- mente cadenas que consisten en arreglos de bytes con un valor nulo al final.que es usado para sincronizar acceso a fuentes compartidas. Structures: Tipos de archivo definidos por el

Structures: Tipos de archivo definidos por el usuario.consisten en arreglos de bytes con un valor nulo al final. Arrays: Arreglos de algún tipo

Arrays: Arreglos de algún tipo de variable.Structures: Tipos de archivo definidos por el usuario. C. Palacio, J. Trujillo y S. Corzo son

C. Palacio, J. Trujillo y S. Corzo son parte del Departamento de Ingeniería Eléctrica y Electrónica, Universidad Nacional, Bogotá D.C., Colombia, e-mail:

INFORME NO. 1 - INTRODUCCIÓN A LA PLATAFORMA LEGO® MINDSTORMS®

2

Las variables son declaradas usando la palabra clave de el tipo deseado, seguido por una lista de nombres separados por comas y terminando en punto y coma. Opcionalmente, un valor inicial para cada variable puede ser especificado usando un signo de igual después del nombre de la variable.

IV.

SENSORES

V. M OVIMIENTO DE S ERVOMOTOR CON D IENTE DE

SIERRA

En esta sección se pretende diseñar e implementar un algoritmo que conduzca el movimiento de un servomotor siguiendo el patrón de una señal diente de sierra (ver Figura 1). El algoritmo diseñado (ver Algoritmo 3) define una constante temp que se relaciona con el periodo de la señal según la ecuación 1.

T = 0.1 · temp [s] (1) potencia 100 tiempo [s] 10 20 30 40
T = 0.1 · temp [s]
(1)
potencia
100
tiempo [s]
10
20
30
40
50

Figura 1.

Señal de tipo diente de sierra con temp = 100

Algoritmo 3 Movimiento de un servomotor

#define temp 100 task main()

{

int contador_sierra; do

{

for(contador_sierra = 0; contador_sierra < 100; contador_sierra++)

{

OnFwd(OUT_A, contador_sierra); Wait(temp);

}

contador_sierra = 0; }while(true)

}

Se observa de la implementación, que dependiendo del valor de la constante, el tiempo que se retrasa en llegar el servomotor a su máxima potencia varia de forma directamente proporcional; cuando la constante de tiempo es muy pequeña (temp 0), es casi imperceptible el ascenso en la velocidad. Cuando la constante es del orden de 10 1 , la variación de la potencia del motor es visible y en el pico más alto se presenta un efecto de inercia en el movimiento.

REFERENCIAS

[1] J. Hansen, NXC Programmer’s Guide, 2011. [2] “IEEE standard for floating-point arithmetic,” IEEE Std 754-2008, pp. 1 –58, 29 2008.