130 likes | 238 Views
Quinta Clase. Patricio A. Navarrete Septiembre 24 de 2011. Resumen. Variables de Salida OUT_ABC Instrucciones de movimiento OnFwd (OUT_X,POWER); - OnRev (OUT_X,POWER); Off(OUT_X); - Float (OUT_X); RotateMotor (OUT_X,POWER,DEGREES); - Wait (MILISECS); Variables de Usuario
E N D
Quinta Clase Patricio A. Navarrete Septiembre 24 de 2011
Resumen • Variables de Salida • OUT_ABC • Instrucciones de movimiento • OnFwd(OUT_X,POWER); - OnRev(OUT_X,POWER); • Off(OUT_X); - Float(OUT_X); • RotateMotor(OUT_X,POWER,DEGREES); - Wait(MILISECS); • Variables de Usuario • Definición: intnombre; • Asignación: nombre= 1; • Aritmética: Suma (+), Diferencia (-), Producto (*), División (/), Módulo (%) • Lógica: Not (!), And (&&), Or (||) • Comparación: Igual (==, !=), Desigual estricto (<, >), Desigual inclusivo (<=, >=) • Aleatoriedad: Random(); • Constantes: #definenombre valor • Condicionalidad • if(condición){ acciones Sí; } else{ acciones No; }
Variables de Entrada • El robot será capaz de conocer su entorno. • Los “Sensores” son recibidos a través de los 4 “puertos de entrada” del NXT. • Cada entrada está definida por un nombre de sistema: • IN_1 • IN_2 • IN_3 • IN_4 • Se puede conocer el estado real del sensor midiendo el valor de su variables de entrada: SENSOR_X • Con esta información se pueden 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 4 sensores: • Sensor de Tacto (2) • Sensor de lumninosidad (1) • Sensor de sonido (1) • Sensor de distancia por ultrasonido (1) • Por ejemplo, si el Sensor de Tacto se encuentra conectado a la entrada IN_1, el valor de su variable será “1” si el sensor está presionado o “0” si no lo está.
Configuración de Sensores • En lenguaje NXC se encuentran implementadas funciones que permiten ajustar los parámetros de los dispositivos de entrada para que el sensor que tiene conectado funcione correctamente. • Con las siguientes instrucciones se indica el tipo de sensor que está conectado para que el NXT pueda hacerlo funcionar. • Sensor de Tacto • SetSensorTouch(IN_X); SENSOR_X: Valor 0 ó 1 • Sensor de Luminosidad • SetSensorLight(IN_X); SENSOR_X: Valor de 0 a 100 • Sensor de Sonido • SetSensorSound(IN_X); SENSOR_X: Valor de 0 a 100 • Sensor de Distancia por ultrasonido • SetSensorLowspeed(IN_X); Protocolo I2C – Valor de 0 a 1023 • Conversión a centímetros del ultrasonido • SensorUS(IN_X); SENSOR_X: Valor de 0 a 255
Ciclos • Un ciclo, como lo indica su nombre, es una estructura que se repite según las condiciones. • Similar a la condicionalidad, vista la clase anterior, pero en este caso la acciones se realizan y se continúan realizando cuando se cumple la condición y se dejan de realizar cuando la condición deja de cumplirse. • Se realiza mientras se cumple una condición: • while( condición ){ acciones;} • O se puede realizar una cantidad específica de veces: • repeat( cantidad ){ acciones;}
Diagramas de Flujo • Con las nuevas estructuras de control vistas en esta clase, se añaden nuevas formas de diagramas de flujo a las alternativas de programas posibles. • Estructuras de control vistas: • if(){}else{} • while(){} • repeat(){}
If • if( condición ){ instrucciones si se cumple condición; }
If-Else • if( condición ){ instrucciones si se cumple condición; } else{ instrucciones si no se cumple condición; }
While • while( condición ){ instrucciones que se realizan mientras se cumple la condición; }
Repeat • repeat( cantidad ){ instrucciones que se repiten una cantidad determinada de veces; }
Programación • Recordar : Condicionalidad • if-else • Ciclos: • repeat (catidad determinada) • while (según variables) • Formato al escribir programas: • Indentación(TAB) • Comentarios(// ó /**/) • Constantes (#define)
Programa // Definicion de constantes #define PW 50 #define FW 2000 #define RT 400 // Inicia programa task main() { // Robot Avanza (1) : Encender Motores A y C adelante OnFwd(OUT_AC, PW); Wait(FW); // Robot Gira (1) : Encender Motor A adelante y C atras OnFwd(OUT_A, PW); OnRev(OUT_C, PW); Wait(RT); // Robot Avanza (2) : Encender Motores A y C adelante OnFwd(OUT_AC, PW); Wait(FW); // Robot Gira (2) : Encender Motor A adelante y C atras OnFwd(OUT_A, PW); OnRev(OUT_C, PW); Wait(RT); // Robot Detenido : Apagar Motores Off(OUT_ABC); } // Termina programa
Quinta Clase Patricio A. Navarrete Septiembre 24 de 2011