Programación de LEGOS

Post on 03-Jul-2015

365 views 4 download

Transcript of Programación de LEGOS

CURSO DE PROGRAMACIÓNDE ROBOTS LEGO NXT

Por: Dennis Martínez Crovo

Dirigido a: Grupo de investigación

Capítulo Técnico de Robótica

Abril 2011

Definición de Robot• Palabra Checa Robota: Trabajos forzados• Robótica: Ciencia de los robots• Áreas de la robótica: Mecánica, electrónica,

informática, inteligencia artificial, ingeniería de control, autómatas programables.

Definición de Robot inteligente• Robots capaces de tomar una decisión• Agentes inteligentes

– Percepción, Acción, Meta, Ambiente.

Robots LEGOMindstorm

RCX 2.0 NXT 2.0

Programación de RobotLEGO Mindstorm NXT

EspecificacionesLego RCX 2.0

Microcontrolador Hitachi H8/3292RAM 512BVelocidad 16Mhz. @5V2 timers de 8b y 1 timer de 16bConvertidor A/D de 8b

Memoria RAM 32KParlantePuerto Infrarrojo. Max 30 cm. a 2.4KbpsDisplay de 3 zonas y símbolos adicionales.Sensores

Contacto, luz, temperatura, rotación.Actuadores

Motores, fuente de luz.Alimentación con 6 baterias AA de 1.5V.

EspecificacionesLego NXT

Microcontrolador de 32 bits ARM7 a 48Mhz con 256 Kbytes FLASH y 64 Kbytes RAM.Microcontrolador AVR de 8 bit con 4 KbytesFLASH y 512 Byte RAMBluetooth Class II V2.0Puerto USB full speed (12 Mbit/s)4 puertos de entrada para conectar cable de 6 hilos3 puertos de salida para conectar cable de 6 hilosPantalla LCD de 100 x 64 pixelAltavoz de 8 kHzFunciona con 6 pilas tipo AA

BOTONES DE CONTROL

Botón de selecciónIzquierda

Botón de selecciónDerecha

Botón de confirmación

Cancelacióno nivel anterior

LADRILLO NXT

ENTRADAS Y SALIDASE/S

Entradas del ladrillo

C

Salidas del ladrillo

USB

LADRILLO NXT

BA

321

4

OPCIONES

My FilesNXT FilesSound FilesSoftware Files

NXT ProgramViewBluetoothSettingsTry Me

CONEXIÓN CON ELCOMPUTADOR

MINDSTORMS NXT Driver v1.01 CD MINDSTORMS NXT Driver v1.02 Ejecutable

ENTORNO DEPROGRAMACIÓN

BRICX COMMAND CENTER

Version. 3.3 (Build 3.3.8.9)Release 15/03/2011

Conectando el ladrillo

Puerto Tipo de ladrillo

Firmware

Entorno de desarrollo

Menú principal

Editor de códigoOpciones demanejo de archivos

Opciones demanejo del ladrillo

Controles del NXTCompilación del código

Envío del programa

Detener ejecución

Ejecución del programa

Apagarel ladrillo

Controldirecto

Diagnóstico

Analizandoel ladrillo

BrickJostick

Enviar mensajes

Analizador configurable

Control remoto

ConectarDesconectar

BrickPiano

Mapa dememoria

Controles del NXTDirect Control Diagnostics

Controles del NXT (Watching the brick)Common NXT

Controles del NXTBrick Piano Brick Jostick Remote

Controles del NXTConfigurable Watch Messages

Controles del NXTMap Memory

Selección del lenguaje de programación

Edit -> Preferences.. ->Compiler

NOT EXACTLY C

EL LENGUAJENXC

Aspectos básicos del lenguaje• Basado en la sintaxis del lenguaje C• Lenguaje estructurado y concurrente• Tarea (task) como rutina principal • Limitación de números enteros con signo• El programa termina cuando no hay mas

lineas de código para ejecutar• Referencia a las Entradas: IN_1, IN_2, IN_3, IN_4• Referencia a las Salidas: OUT_A, OUT_B, OUT_C

OUT_AB, OUT_AC, OUT_BC, OUT_ABC

SalidasControl de Motores• Funciones básicas:

– Rotar, Rotar en reversa, Detener, Liberar

Instrucción:

OnFwd(<Salidas>, <Velocidad>);OnRev(<Salidas>, <Velocidad>);Off(<Salidas>);Float(<Salidas>);

Velocidad = 0 - 100

Ej: OnRev(OUT_AC, 100);

EntradasInicialización de Sensores• InicializaciónInstrucciónes:

SetSensorTouch(<Entrada>);SetSensorLight(< Entrada >);SetSensorSound(< Entrada >);SetSensorTemperature(< Entrada >);

* SetSensorLowspeed(< Entrada >);

Ej: SetSensorLight(IN_2);

EntradasLectura de SensoresReferencia:

SENSOR_<N>Ej: SENSOR_3Instrucción:

Sensor(<Entrada>)Ej: Sensor( IN_4)

Instrucción. Caso del sensor Ultrasónico:

SensorUS(<Entrada>)

Declaración de variables• Variables finales?

#define <indentificador>• Tipos de variablesbool 8 bit unsignedbyte, unsigned char 8 bit unsignedchar 8 bit signedunsigned int 16 bit unsignedshort, int 16 bit signedunsigned long 32 bit unsignedlong 32 bit signedstring Array of bytestruct User-defined structure typesArrays Arrays of any type

Declaración de variables• Sintaxis

<tipo> <identificador>;

<tipo> <identificador> = <valor>;

Ejemplo:

»int aaa = 50;»int bbb,ccc;»int values[];

Estructuras de control• Condicional if

if (<Condición>) { <Sentencias> }if (<Condición>) { <Sentencias> } else { <Sentencias> }Operadores para las condiciones• = = igual que• < menor que• <= menor o igual que• > mayor que• >= mayor o igual que• != distinto de

Estructuras de control

• Repetitiva whilewhile (<Condición>) { <Sentencias> }

• Repetitiva do – whiledo { <Sentencias> } while (<Condición>) ;

• Esperauntil (<condición>);

Ejemplo de un robot sigue lineacon 2 sensores

#define UMBRAL 55task main(){SetSensorLight(IN_1); //colocamos un sensor de luz en el puerto 1 y 2SetSensorLight(IN_2);while (true){OnFwd(OUT_AC,80); // Tenemos 2 motores conectados en A y Cuntil(SENSOR_1 <= UMBRAL || SENSOR_2 <= UMBRAL);if(SENSOR_1 <= UMBRAL){Float(OUT_A);until(SENSOR_1 > UMBRAL);

}else if(SENSOR_2 <= UMBRAL){Float(OUT_C);until(SENSOR_2 > UMBRAL);

}}

}

¿PREGUNTAS?

GRACIAS !

DENNIS MARTINEZ CROVO

dennis.m.c@hotmail.com