![Page 1: Programación Básica con NQC Patricio A. Castillo 03/05/2008](https://reader035.vdocuments.us/reader035/viewer/2022070310/5528bde4497959977d8fb75e/html5/thumbnails/1.jpg)
ProgramaciónBásica con NQC
Patricio A. Castillo03/05/2008
![Page 2: Programación Básica con NQC Patricio A. Castillo 03/05/2008](https://reader035.vdocuments.us/reader035/viewer/2022070310/5528bde4497959977d8fb75e/html5/thumbnails/2.jpg)
Resumen
• Variables de Salida : Actuadores – OUT_A + OUT_B + OUT_C
• Instrucciones– On(OUT_X); - OnFwd(OUT_X);– Off(OUT_X); - OnRev(OUT_X);– Fwd(OUT_X); - OnFor(OUT_X, tiempo);– Rev(OUT_X); - Toggle(OUT_X);– Wait(tiempo); - SetPower(OUT_X, potencia);
• Variables de Usuario : Manejo de Datos– Definir: int myvar; - Asignar: myvar = 1;– Aritmética: Suma (+), Diferencia (-), Producto (*), División (/), Módulo (%)– Lógica: Not (!), And (&&), Or (||)– Comparación: Igualdad (==, !=), Rango estricto (<, >), Rango inclusivo (<=,
>=)– Aleatoriedad: Random(); - Constantes: #define const valor
• Condicionalidad– if( condición ){ acciones_sí; } else { acciones_no; }
![Page 3: Programación Básica con NQC Patricio A. Castillo 03/05/2008](https://reader035.vdocuments.us/reader035/viewer/2022070310/5528bde4497959977d8fb75e/html5/thumbnails/3.jpg)
Fundamentos de Control Automático• ¿Qué es el control automático?
• Sistema en Lazo Abierto.• Sistema en Lazo Cerrado.
• Necesidad de la Realimentación.
![Page 4: Programación Básica con NQC Patricio A. Castillo 03/05/2008](https://reader035.vdocuments.us/reader035/viewer/2022070310/5528bde4497959977d8fb75e/html5/thumbnails/4.jpg)
Sistema en Lazo Abierto
• Tipo de Control en que se establecen una serie de acciones fijas para completar el objetivo.
• Ventaja: Fácil de implementar.• Desventaja: Sólo funciona si las condiciones no varían.
![Page 5: Programación Básica con NQC Patricio A. Castillo 03/05/2008](https://reader035.vdocuments.us/reader035/viewer/2022070310/5528bde4497959977d8fb75e/html5/thumbnails/5.jpg)
Sistema en Lazo Cerrado
• Tipo de Control en que se realizan diferentes acciones para completar el objetivo de acuerdo a las condiciones del momento.
• Desventaja: Difícil de implementar.• Ventaja: Funciona aún si las condiciones varían, según las limitaciones.
![Page 6: Programación Básica con NQC Patricio A. Castillo 03/05/2008](https://reader035.vdocuments.us/reader035/viewer/2022070310/5528bde4497959977d8fb75e/html5/thumbnails/6.jpg)
Necesidad de la Realimentación
• La realimentación es necesaria para poder controlar las situaciones reales.
• Se lleva a cabo por medio de dispositivos capaces de tomar datos de la realidad que puedan interpretarse como valores numéricos.
• Éstos valores numéricos son recibidos como variables de entrada que se pueden incorporar al código programable.
• De esta manera, el robot será capaz de “tomar decisiones” de acuerdo a los datos recibidos.
![Page 7: Programación Básica con NQC Patricio A. Castillo 03/05/2008](https://reader035.vdocuments.us/reader035/viewer/2022070310/5528bde4497959977d8fb75e/html5/thumbnails/7.jpg)
Variables de Entrada del RCX
• Los “Sensores” son recibidos a través de los 3 puertos de “Entrada” del RCX.
• Cada entrada está definida por un nombre de sistema:– SENSOR_1– SENSOR_2– SENSOR_3
• De acuerdo al programa cargado en el RCX, se puede conocer el estado de los sensores a través del valor de sus variables asociadas y de ésta manera determinar las acciones a tomar a medida que transcurre el programa.
• El kit con el que se trabaja en las actividades prácticas cuenta con 2 sensores:
– Sensor de Luz (2)– Sensor de Tacto (2)
• Por ejemplo, si el sensor de tacto se encuentra conectado a la entrada SENSOR_1, el valor de ésta variable será “1” si el sensor está presionado o “0” si no lo está.
![Page 8: Programación Básica con NQC Patricio A. Castillo 03/05/2008](https://reader035.vdocuments.us/reader035/viewer/2022070310/5528bde4497959977d8fb75e/html5/thumbnails/8.jpg)
Configuración de Sensores
• En lenguaje NQC se encuentran implementadas funciones que permiten ajustar los parámetros de funcionamiento de los dispositivos de entrada para adecuarlos al tipo de sensor que se tenga conectado.
• Las siguientes instrucciones permiten determinar el tipo de sensor y el modo de representación de datos.
• Primero determinando el tipo:– SetSensorType(SENSOR_X, SENSOR_TYPE_XXX);
» SENSOR_TYPE_LIGHT» SENSOR_TYPE_TOUCH
• Y luego determinando el modo:– SetSensorMode(SENSOR_X, SENSOR_MODE_XXX);
» SENSOR_MODE_PERCENT» SENSOR_MODE_BOOL» SENSOR_MODE_RAW
• O sólo señalando el sensor (tipo y modo por defecto):– SetSensor(SENSOR_X, SENSOR_XXX);
» SENSOR_LIGHT» SENSOR_TOUCH
![Page 9: Programación Básica con NQC Patricio A. Castillo 03/05/2008](https://reader035.vdocuments.us/reader035/viewer/2022070310/5528bde4497959977d8fb75e/html5/thumbnails/9.jpg)
El Algoritmo
• La palabra “Algoritmo” proviene del nombre del matemático árabe padre de nuestro sistema de numeración: Muhammad ibn Musa al-Jwarizmi.
• El concepto de “Algoritmo” consiste en un conjunto finito y ordenado de operaciones que permiten completar un objetivo.
• Es decir, es un método, cuya importancia radica en que permite describir procesos y resolver problemas matemáticos.
• Los algoritmos reciben una “entrada” y entregan una “salida”, como una función, pero el algoritmo debe ser definido, finito y eficiente.
• En la vida cotidiana se emplean continuamente algoritmos que el cerebro humano desarrolla de manera inconciente.
![Page 10: Programación Básica con NQC Patricio A. Castillo 03/05/2008](https://reader035.vdocuments.us/reader035/viewer/2022070310/5528bde4497959977d8fb75e/html5/thumbnails/10.jpg)
Ciclos de control Básicos
• Un ciclo de control, como lo indica su nombre, es una estructura que se repite.
• Se puede realizar una cantidad específica de veces:– repeat( cantidad ){
instrucciones;}
• O se puede realizar mientras se cumple una condición:– while( condición ){
instrucciones;}
![Page 11: Programación Básica con NQC Patricio A. Castillo 03/05/2008](https://reader035.vdocuments.us/reader035/viewer/2022070310/5528bde4497959977d8fb75e/html5/thumbnails/11.jpg)
Diagrama de Bloques
• De acuerdo a las nuevas estructuras de control, se establecen nuevas formas de diagramas de bloque, que enriquecen las alternativas de programas posibles.
• Estructuras de control vistas:– if(){}else{}– repeat(){}– while(){}
![Page 12: Programación Básica con NQC Patricio A. Castillo 03/05/2008](https://reader035.vdocuments.us/reader035/viewer/2022070310/5528bde4497959977d8fb75e/html5/thumbnails/12.jpg)
if
• if( condición ){instrucciones si se cumple condición;
}
![Page 13: Programación Básica con NQC Patricio A. Castillo 03/05/2008](https://reader035.vdocuments.us/reader035/viewer/2022070310/5528bde4497959977d8fb75e/html5/thumbnails/13.jpg)
if-else
• if( condición ){instrucciones si se cumple condición;
}else{
instrucciones si no se cumple condición;}
![Page 14: Programación Básica con NQC Patricio A. Castillo 03/05/2008](https://reader035.vdocuments.us/reader035/viewer/2022070310/5528bde4497959977d8fb75e/html5/thumbnails/14.jpg)
repeat
• repeat( cantidad ){instrucciones que se repiten;
}
![Page 15: Programación Básica con NQC Patricio A. Castillo 03/05/2008](https://reader035.vdocuments.us/reader035/viewer/2022070310/5528bde4497959977d8fb75e/html5/thumbnails/15.jpg)
while
• while( condición ){instrucciones que se realizan mientras se cumple la condición;
}
![Page 16: Programación Básica con NQC Patricio A. Castillo 03/05/2008](https://reader035.vdocuments.us/reader035/viewer/2022070310/5528bde4497959977d8fb75e/html5/thumbnails/16.jpg)
Sonidos
• Una manera sencilla de conocer el estado del RCX mientras éste ejecuta algún programa es mediante sonidos.
• Con los sonidos se puede saber qué segmento del programa se está ejecutando si se le añade un sonido característico.
• De esta manera, es posible depurar programas o simplemente hacer del RCX un aparato más ruidoso.
• Existen dos formas de emitir sonidos con NQC:
– PlayTone(frecuencia, tiempo);Tono según frecuencia y tiempo
indicados.– PlaySound(sonido);
Sonidos Predeterminados:- SOUND_CLICK-
SOUND_DOUBLE_BEEP- SOUND_DOWN- SOUND_UP-
SOUND_LOW_BEEP- SOUND_FAST_UP
![Page 17: Programación Básica con NQC Patricio A. Castillo 03/05/2008](https://reader035.vdocuments.us/reader035/viewer/2022070310/5528bde4497959977d8fb75e/html5/thumbnails/17.jpg)
ProgramaciónBásica con NQC
Patricio A. Castillo03/05/2008