Upload
eberardo-altamirano
View
224
Download
1
Embed Size (px)
Citation preview
Sexta Clase
Patricio A. NavarreteJunio 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;
}
Resumen estructuras de control
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 - 127break;
case 2 :acciones; // 128 - 191break;
case 3 :acciones; // 192 - 255break;
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” task main(){
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 (iquid crystal display) 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 textoTextOut(primer_pixel, LCD_LINEX, “Texto");
• Escribir valoresNumOut(primer_pixel, LCD_LINEX, variable);
• Limpiar la pantallaClearScreen();
• 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. NavarreteJunio 17 de 2011