Décimo Curso de Programación Básica con NQC “Primera Clase” Cristián Arenas Ulloa Agosto 29...

24
Décimo Curso de Programación Básica con NQC “Primera Clase” www.cursolego.elo.utf sm.cl Cristián Arenas Ulloa Agosto 29 de 2009

Transcript of Décimo Curso de Programación Básica con NQC “Primera Clase” Cristián Arenas Ulloa Agosto 29...

Page 1: Décimo Curso de Programación Básica con NQC “Primera Clase”  Cristián Arenas Ulloa Agosto 29 de 2009.

Décimo Curso de

Programación Básica con NQC

“Primera Clase”

www.cursolego.elo.utfsm.cl

Cristián Arenas UlloaAgosto 29 de 2009

Page 2: Décimo Curso de Programación Básica con NQC “Primera Clase”  Cristián Arenas Ulloa Agosto 29 de 2009.

Fundamentos de Robótica con LEGO

Page 3: Décimo Curso de Programación Básica con NQC “Primera Clase”  Cristián Arenas Ulloa Agosto 29 de 2009.

La Línea LEGO Mindstorms

• Desarrollo del bloque programable por tres organizaciones:– Resnick and Papert’s Epistemology and Learning research

group.– Massachusett’s Institute of Technology Media Laboratory

(MITML).– LEGO Corporation.

• En 1998 LEGO Company lanzó el producto:– LEGO Mindstorms : Robotic Invention System.

• Se componía por 717 piezas además de motores, sensores y un RCX 1.0.

Page 4: Décimo Curso de Programación Básica con NQC “Primera Clase”  Cristián Arenas Ulloa Agosto 29 de 2009.

El bloque RCX

• Unidad Digital Programable.

• Es un Microcontrolador de bajo costo y alto rendimiento.

• Interfaces especialmente diseñadas para fácil manejo.

• En conjunto con los sensores y actuadores de la línea Mindstorms, permite el modelamiento de sistemas embebidos.

Page 5: Décimo Curso de Programación Básica con NQC “Primera Clase”  Cristián Arenas Ulloa Agosto 29 de 2009.

Especificaciones

• Procesador Hitachi Renesas 8bits H8/3292 16MHz.• ROM: 16Kb• SRAM integrada 16kbits• SRAM externa 512bits.• 4 Timers de Sistema de 8bits.• Comunicación IR.• 3 puertos salida 9V 500mA.• 3 puertos entrada.• Pantalla LCD.• Buzzer.• Baterías 6xAA.

Page 6: Décimo Curso de Programación Básica con NQC “Primera Clase”  Cristián Arenas Ulloa Agosto 29 de 2009.

Fundamentos de Programación

Page 7: Décimo Curso de Programación Básica con NQC “Primera Clase”  Cristián Arenas Ulloa Agosto 29 de 2009.

Lenguajes de Programación

• Conjunto de palabras, operadores y reglas sintácticas y semánticas que definen la estructura y significado de un lenguaje artificial para escribir algoritmos en una forma interpretable por una máquina.

• Lenguajes:– Pianola– Cálculo Lambda, 1930 (Paradoja de Russel, 1901)– Assembler, 1950– Fortran, 1957– Lisp, 1959– C, 1972– MATLAB, 1978– SQL, 1978– C++, 1983– Abel, 1983– Verilog, 1983, 1995– HTML, 1991– Phyton, 1991– PHP, 1994– Java, 1995– C#, D, 2000

Page 8: Décimo Curso de Programación Básica con NQC “Primera Clase”  Cristián Arenas Ulloa Agosto 29 de 2009.

Función de los Lenguajes

• La función del Lenguaje de programación es permitir al programador comunicar un algoritmo a una entidad computacional, de manera que ésta lo pueda interpretar.

• Primero se establece la sintaxis y estructura del lenguaje.• Luego se efectúa la compilación del lenguaje.• El lenguaje compilado se encuentra en “lenguaje de

máquina” y se puede cargar en el microcontrolador.

• Diferentes procesadores, estructuras, dispositivos : Diferentes compiladores.

Page 9: Décimo Curso de Programación Básica con NQC “Primera Clase”  Cristián Arenas Ulloa Agosto 29 de 2009.

Lenguaje de Programación NQC

Page 10: Décimo Curso de Programación Básica con NQC “Primera Clase”  Cristián Arenas Ulloa Agosto 29 de 2009.

Origen y Propósito

• NQC es un lenguaje diseñado por Dave Baum para programar bloques RCX.

• N.Q.C. significa : “Not Quite C”.• Es decir “No del todo C”.

• Estructura basada en el popular lenguaje C, un lenguaje fundamental para el aprendizaje de programación.

• Fue diseñado sólo para programar bloques RCX, Scout, Cybermaster y Spybot.

• Las funciones de control de actuadores y control de sensores vienen incorporadas, permitiendo abstraerse de la electrónica interna para concentrarse en el algoritmo y facilitar la programación.

Page 11: Décimo Curso de Programación Básica con NQC “Primera Clase”  Cristián Arenas Ulloa Agosto 29 de 2009.

ii. Programa Secuencial

• El lenguaje NQC, así como C y otros lenguajes similares posee una estructura Secuencial.

• Se establecen “Tareas” que comprenden algoritmos a ser ejecutados por el robot.

• Se determinan las estructuras del control para implementar el algoritmo deseado.

• Se hace uso de las funciones implementadas.

• Es posible crear funciones nuevas, que facilitan la escritura de tareas repetitivas.

Page 12: Décimo Curso de Programación Básica con NQC “Primera Clase”  Cristián Arenas Ulloa Agosto 29 de 2009.

Estructura Básica

task main () {

/*Sentencias*/

}

Page 13: Décimo Curso de Programación Básica con NQC “Primera Clase”  Cristián Arenas Ulloa Agosto 29 de 2009.

Variables de Salida del RCX

• Los “Actuadores” son controlados a través de los 3 puertos de “Salida” del RCX.

• Cada salida está definida por un nombre de sistema:– OUT_A– OUT_B– OUT_C

• De acuerdo al programa cargado en el RCX, al ejecutarse determina los estados de las salidas y el funcionamiento de los controladores conectados a ellas a medida que transcurre el programa.

• El kit con el que se trabajará en las actividades prácticas cuenta con 2 actuadores:– Motor (2)– Ampolleta (1)

• Por ejemplo, si la luz se encuentra conectada a la salida OUT_A, ésta se encenderá si el estado de ésta variable de sistema está en modo “encendido”.

Page 14: Décimo Curso de Programación Básica con NQC “Primera Clase”  Cristián Arenas Ulloa Agosto 29 de 2009.

Instrucciones

– On(salida x); Enciende la salida X.

– Off(salida x); Apaga la salida X.

– Fwd(salida x); La salida “avanza”.

– Rev(salida x); La salida “retrocede”

Donde “salida x” puede ser OUT_A, OUT_B o OUT_C

Page 15: Décimo Curso de Programación Básica con NQC “Primera Clase”  Cristián Arenas Ulloa Agosto 29 de 2009.

Instrucciones

– Wait(tiempo); Espera el tiempo indicado en centésimas de segundo antes de realizar la próxima

acción.

– PlaySound(sonido); El RCX hace un sonido.

Donde “sonido” puede ser SOUND_CLICK, SOUND_DOUBLE_BEEP, etc...

– Etcétera!

Page 16: Décimo Curso de Programación Básica con NQC “Primera Clase”  Cristián Arenas Ulloa Agosto 29 de 2009.

Entorno de Programación NQC Edit

Page 17: Décimo Curso de Programación Básica con NQC “Primera Clase”  Cristián Arenas Ulloa Agosto 29 de 2009.

NQC Edit

• Un entorno de programación es una aplicación que facilita la escritura, compilación y generalmente también la transmisión del lenguaje de máquina al microcontrolador.

• Para el desarrollo de las experiencias prácticas que componen este curso se utilizará la aplicación “NQC Edit 1.77” y el compilador “NQC 3.1r6”

• Ésta aplicación es una interfaz gráfica que evita tener que trabajar en consola con el compilador “nqc.exe” que se encarga de realizar el trabajo de bajo nivel.

Page 18: Décimo Curso de Programación Básica con NQC “Primera Clase”  Cristián Arenas Ulloa Agosto 29 de 2009.

Instalación de NQC Edit

• Se necesitan dos ficheros ejecutables:– nqc.exe– NQCEdit.exe

• El primero es el compilador.• El segundo es la interfaz gráfica.• El primero es independiente, pero el segundo necesita al

primero.• No necesita instalación.• Deben estar instalados los controladores de la torre USB.

• “NQCEdit1.77-nqc3.1r6.zip” se encuentra en: “Descargas” -> “Desarrolladores”.

( OjO: Descomprimir la carpeta para poder trabajar )• “driver_usb_lego_tower_164.zip” se encuentra en:

“Descargas” -> “Drivers”.

Page 19: Décimo Curso de Programación Básica con NQC “Primera Clase”  Cristián Arenas Ulloa Agosto 29 de 2009.

Modo de uso de NQC Edit

• Se ejecuta la interfaz gráfica “NQCEdit.exe”.

Page 20: Décimo Curso de Programación Básica con NQC “Primera Clase”  Cristián Arenas Ulloa Agosto 29 de 2009.

Demostración Práctica

• Uso de NQC Edit.• Selección de dispositivo de comunicación.

Page 21: Décimo Curso de Programación Básica con NQC “Primera Clase”  Cristián Arenas Ulloa Agosto 29 de 2009.

Demostración Práctica

• Cargar firmware.

Page 22: Décimo Curso de Programación Básica con NQC “Primera Clase”  Cristián Arenas Ulloa Agosto 29 de 2009.

Demostración Práctica

• Compilación y Transmisión del programa.

Page 23: Décimo Curso de Programación Básica con NQC “Primera Clase”  Cristián Arenas Ulloa Agosto 29 de 2009.

Errores típicos

• La sentencia “task main ()” debe contener un abrir y cerrar de paréntesis { }.

• La instrucciones deben terminar en punto y coma.

• El programa se debe guardar al menos una vez antes de compilar.

• El programa se debe compilar antes de iniciar la transmisión.

• Establecer el puerto de comunicación correcto (USB).

• Los colores que adquieren las palabras en el entorno NQCEdit permiten detectar errores en la escritura.

Page 24: Décimo Curso de Programación Básica con NQC “Primera Clase”  Cristián Arenas Ulloa Agosto 29 de 2009.

Décimo Curso de

Programación Básica con NQC

“Primera Clase”

www.cursolego.elo.utfsm.cl

Cristián Arenas UlloaAgosto 29 de 2009