You are on page 1of 55

Taller Programación NXC

aplicada a
Lego Mindstorm NXT

Introducción
Prerrequisito
El taller está orientado a alumnos con previa
orientación a leguajes de programación imperativa
como C, Pascal, NQC, etc.
Objetivos
• Al finalizar los alumnos deben ser capaz de diseñar y
programar algoritmos basados en NXC.
• Programar funciones para el lego NXT.

Lego Mindstorm
NXT

Bricx Command
Center
BricxCC es un entorno de programación que
permite compilar y cargar un programa al lego NXT.

Compiler

Download

Run

Stop

Comentarios

Estructura de un programa NXC • Preprocesador • Task • Funciones .

agregando librerias o cambiando macros. se antepone # #define nombre valor Se ocupa para generar macros. cambiará lo que se define por su valor.Estructura de un programa NXC Preprocesador Preprocesador se realiza antes de compiladar el programa. Esto puede simplificar cuando hay una constante o procedimiento que se utiliza repetidas veces Ejemplo: #define t5_seg 5000 #define Sensor2 (Sensor(S2)+Sensor(S2)+Sensor(S2))/3 . es decir.

. es decir puede realizar varios procesos en paralelo. un programa tienen que tener un task principal del cual comienza el programa. Se crea una hebra con la palabra reservada task.Estructura de un programa NXC Task NXC soporta multihebras.

retorno_funcion nombre_funcion (lista_argumentos) { // cuerpo de la funcion. } . que puede ser convocado cuando sea necesario.Estructura de un programa NXC Funciones Útil para agrupar un conjunto de instrucciones en una sola función.

Estructura de un programa NXC Ejemplo funciones .

0 a 65535 long Entero 32 bits con signo. verdadero o falso char caracteres int Entero 16 bits con signo. 0 a 4294967295 string Arreglo de caracteres. palabra arrays Arreglos de cualquier tipo . -2147483648 al 2147483647 unsigned long Entero 32 bits sin signo.Algunas variables Nombre Tipo Información bool 1 ó 0. –32768 a 32767 unsigned int Entero 16 bits sin signo.

Declaración de variables tipo nombre_variable . //variable con valor Ejemplo: int x. y++. char ch = ‘a’. x = y. . //variable sin valor tipo nombre_variable = expresión . x = 1. int y = 2. y = y + 1. // x de tipo entero sin valor inicial // y de tipo entero con valor inicial igual a 2 // ch es igual a letra ‘a’ de tipo caracter // x es igual a 1 // x es igual a y // y se suma 1.

Ejemplo de variables y su ámbito .

Palabras reservadas NXC tiene palabras reservadas que no se pueden ocupar para nombrar variables. .

Estructuras de control • • • • • • if while do while for repeat switch .

if (x==1) { y = 1.Estructuras de control if if (condicion) consecuencia if (condicion) consecuencia else alternativa Ejemplo: if (x==1) y = 2. if (x==1) y = 3. else y = 4. z = 2. } .

} . y = y*2.Estructuras de control while while (condicion) {cuerpo} Ejemplo: while(x < 10) { x = x+1.

Estructuras de control do while do {cuerpo} while (condicion) Ejemplo: do { x = x+1. y = y*2. . }while(x < 10).

incremental_instruccion) { cuerpo } Ejemplo: for (x = 0 . condicion . x < 10 . while (x<10) { y=x*2.Estructuras de control for for( instrucion_inicial . } . x++. } for se puede escribir como while: x=0. x++) { y = x*2.

} //x=x+2 .Estructuras de control repeat repeat (expresion) {cuerpo} ejemplo: repeat (3) { x+=2.

Estructuras de control switch switch (expresion) case constante_expresion : consecuencia default : consecuencia Ejemplo: switch (x) case 1: x -. . default: x = 0. if (x == 0) break.. case 2: x+=2.

Condiciones • • • • • • • • • • • • true false x !x x == 1 x != 1 x<1 x <= 1 x>1 x >= 1 x && y x || y .

El NXT iniciar un programa .

El NXT iniciar un programa .

El NXT iniciar un programa .

El NXT iniciar un programa .

NXT API API: es el conjunto de funciones que ofrece cierta biblioteca para ser utilizado y conseguir una abstracción a la programación. • • • • • Características Generales Módulos de Salida (output) Módulos de Entrada (input) Comunicación Bluetooth Mas APIs .

clear = true) • Funciones Sonido • PlayTone(frequencia. msg.NXT API Características Generales • Funciones de Tiempo • Wait(time) // 1000 = 1 segundo • x = CurrentTick() • Funciones Numéricas • x = Random(n) • Funciones LCD • TextOut(x. y. value. y. duracion) . clear = true) • NumOut(x.

NXT API Módulos Salida 3 salidas OUT_A OUT_B OUT_C .

NXT API Módulos Salida ServoMotores Servomotor: Permite dar movimiento. lo que permite dar giros mas precisos. . tiene incorporado un sensor de rotación. Este nuevo motor.

velocidad) • OnRev(puerto.NXT API Módulos de Salida • OnFwd(puerto.velocidad) • Off(puerto) Ejemplo: .

velocidad. grados) Ejemplo: .NXT API Módulos de Salida • RotateMotor( puerto.

Actividad 1.luego gire en 90° a la derecha . . para que el lego: . Realizar un programa en NXC.avance por 5 segundos .avance un tiempo aleatorio entre 5 y 10 segundos y luego detenerse y emitir un triple bip.

NXT API Módulos de Entrada 4 entradas SENSOR_1 o S1 SENSOR_2 o S2 SENSOR_3 o S3 SENSOR_4 o S4 .

NXT API Módulos de Entrada Sensores .

NXT API Módulos de Entrada Sensores .

const type) • SENSOR_TYPE_TOUCH • SENSOR_TYPE_LIGHT • SENSOR_TYPE_LIGHT_ACTIVE NXT/RCX sensor tacto RCX sensor luz NXT sensor luz • SetSensorMode(puerto.NXT API Módulos de Entrada Tipos y modos • SetSensorType(puerto. const mode) • SENSOR_MODE_RAW • SENSOR_MODE_BOOL • SENSOR_MODE_PERCENT raw valor de 0 a 1023 boolean valor (0 ó 1) valor de 0 a 100 .

NXT API Módulos de Entrada Tipos y modos • • • • SetSensorLight(puerto) SetSensorSound(puerto) SetSensorTouch(puerto) SetSensorLowspeed(puerto) .

NXT API Módulos de Entrada Información de Sensor • x = Sensor(n) • x = SensorUS(n) .

. detenerse. un programa en NXC. para que el lego: .si el sensor tacto es presionado. . .siga una línea negra por la derecha.Actividad 2.si el US detecta algo a 10 cm retroceder.

Comunicación Bluetooth • Slave • Master .

recibir) SendRemoteNumber (0.Comunicación Bluetooth • Slave int recibir. int enviar = 1. enviar) . outbox1. ReceiveRemoteNumber (inbox1. true.

true. recibir) SendRemoteNumber(nxt.Comunicación Bluetooth • Master int recibir. ReceiveRemoteNumber (inbox1.enviar) . outbox1. int enviar = 1.

El NXT comunicación .

El NXT comunicación .

El NXT comunicación .

El NXT comunicación .

cuando presione dos veces seguidas. En dos grupos.cuando se presione el sensor de tacto del master. el master enviará un numero 2. para que el slave se detenga. . enviara un numero “1” al slave para que este avance. para que el lego: . realizar conexión bluetooth.Actividad 3. .

Mas APIs • Sensor Hitechinc Color RGB • Sensor Hitechinc Compás Electromagnético (brújula) • Sensor Hitechinc Acelerómetro .

.Mas APIs Sensor Hitechinc Color RGB long color. color_b. color_r. color_g. color_g . ReadSensorHTColor(puerto. color. SetSensorLowspeed(puerto). color_r. color_b).

Mas APIs Sensor Hitechinc Color RGB .

Mas APIs Sensor Hitechinc Compás SetSensorLowspeed(puerto) x = SensorHTCompass(puerto) .

Mas APIs Sensor Hitechinc Compás .

Mas APIs Sensor Hitechinc Gyroscope SetSensorHTGyro(port) x = SensorHTGyro(port.offset) .

Mas APIs Sensor Hitechinc Gyroscope .