160 likes | 301 Views
Sexta Clase. Patricio A. Navarrete Junio 17 de 2011. Resumen. Variables de Salida Instrucciones de Movimiento Variables de Usuario Condicionalidad Variables de Entrada IN_X SENSOR_X Configuración de Sensores SetSensorTouch (IN_X); 0 - 1 SetSensorLight (IN_X); 0 - 100
E N D
Sexta Clase Patricio A. Navarrete Junio 17 de 2011
Resumen • Variables de Salida • Instrucciones de Movimiento • Variables de Usuario • Condicionalidad • Variables de Entrada • IN_X SENSOR_X • Configuración de Sensores • SetSensorTouch(IN_X); 0 - 1 • SetSensorLight(IN_X); 0 - 100 • SetSensorSound(IN_X); 0 - 100 • SetSensorLowspeed(IN_X); 0 - 1023 SensorUS(IN_X); 0 - 255 • Ciclos • while(condición){ while(1){} , acciones; } • repeat(cantidad){ acciones; }
if • if( condición ){ sentencias si se cumple condición; }
if-else • if( condición ){ sentencias si se cumple condición; } else{ sentencias si no se cumple condición; }
repeat • repeat( cantidad ){ sentencias que se repiten; }
while • while( condición ){ sentencias que se realizan mientras se cumple la condición; }
do-while • do{ sentencias que se repiten mientras se cumple la condición; } while( condición );
for • for( instrucción previa ; condición ; instrucción de fin de ciclo ){ sentencias que se realizan mientras se cumple la condición; }
Condicionalidad múltiple • Ya se ha visto la condicionalidad básica en dos direcciones que se consigue con la instrucción if – else. • Se le dice en dos direcciones porque con esa estructura sólo se pueden realizar dos tipos de acciones (verdadero/falso). • En ocasiones también es necesario tomar decisiones de acuerdo a múltiples valores. • En estos casos se pueden usar muchos if, if – else anidados, o una nueva estructura: switch(valor){ case valor_a : acciones; break; case valor_b : acciones; break; case valor_c : acciones; break; default : acciones; break; }
Condicionalidad múltiple • La estructura switch – case tiene la limitación de que no puede analizar rangos de valores o condiciones lógicas como la estructura if – else, si no sólo valores discretos. • Una forma sencilla de discretizar una variable es dividirla. Por ejemplo: distance = SensorUS(IN_3)/64; switch(distance){ case 1 : acciones; // 64 - 127 break; case 2 : acciones; // 128 - 191 break; case 3 : acciones; // 192 - 255 break; default : acciones; // 0 – 63, etc. break; }
Diagrama de Flujo • La estructura switch – case se representa con el siguiente diagrama de flujo:
“until”-esperar hasta… • until(“condición a esperar”); Ejemplo: “Avanzar hasta chocar con pared” taskmain(){ SetSensorTouch(IN_1); OnFwd(OUT_BC,50); until(SENSOR_1==1); Off(OUT_BC); }
Combinación de sensores • A veces es necesario utilizar más de un sensor, ya que el entorno nos proporciona distintas excitaciones, donde esta información es imprescindible si es que queremos optimizar la labor del Robot. • Por lo cual , es necesario conocer el uso de cada sensor ,considerando funciones además de cómo declararlo al momento de programar.
LCD • El robot cuenta con una pantalla LCD (iquidcrystaldisplay) integrada que es muy útil para poder visualizar los datos que el robot está procesando, indicar las acciones que realiza y depurar los programas. • Para usar el LCD se cuenta con tres funciones básicas: • Escribir texto TextOut(primer_pixel, LCD_LINEX, “Texto"); • Escribir valores NumOut(primer_pixel, LCD_LINEX, variable); • Limpiar la pantalla ClearScreen(); • Se recomienda realizar una pausa (por ejemplo Wait(500);) entre cada refresco de pantalla para que los caracteres puedan ser leídos.
Sexta Clase Patricio A. Navarrete Junio 17 de 2011