Robótica Educativa Clase II: Sensores de Línea y Lógica Proposicional.

Post on 25-Jan-2016

226 views 1 download

Transcript of Robótica Educativa Clase II: Sensores de Línea y Lógica Proposicional.

Robótica EducativaClase II: Sensores de Línea y Lógica Proposicional

¿Qué es un Sensor de Línea?

¿Qué es un sensor?

Un sensor es un dispositivo diseñado para captar determinada información; una magnitud del exterior y transformarla en otra magnitud, que seamos capaces de cuantificar y manipular.

Tipos de Sensores

Luz visible.

Luz infrarroja.

Sonido audible.

Ultra sonido.

Temperatura.

Presión.

Velocidad.

Campo eléctrico.

Campo magnético

Humedad

PH

Sensor de Línea

Un sensor de línea o sensor réflex, es un sensor con la posibilidad de detectar la capacidad que tiene un objeto de reflejar luz o no.

Sensor de Línea

Este sensor está compuesto de un DIODO EMISOR INFRARROJO y un FOTOTRANSISTOR.

Ensamble de Sensores• Usar los tornillos #40.

pasarlos por el orificio del Sensor de línea (LS), por el Separador Circular (CS), por el Poste #25 (P25). insértalos en la Plataforma (PF) en los orificios que muestra la figura, realizar la sujeción con las tuercas T3.

Ensamble de Sensores•Colocar la segunda Plataforma (PF)

Ensamble de Sensores•Ajustar la Plataforma (PF) por medio de las tuercas T3 y los tornillos #6.

Prueba de sensores

Vamos a probar los sensores de línea, para esto cargaremos un ejemplo muy sencillo desde la interfaz de programación Innobot IDE.

Prueba de Sensores 

 void setup() { Serial.begin(9600);}void setup (){ int sensorValue = sensorRead(J1); Serial.println (sensorValue); delay (1);}

Función sensorRead()DescripciónHará la lectura del valor del sensor que deseemos  SintaxisSensorRead (PORT); Parámetros

PORT: indica el puerto del cual se quiere obtener su valor, los valores posibles J1, J2, J3, J4, J5, J6

DevuelveUn valor entero, que será el valor que el sensor le enviara a la tarjeta

Monitor Serie

Lógica Proposicional

Qué es una proposición?

Una proposición es una frase declarativa y que, como tal, es una afirmación sobre algo que puede o no ser verdad. Esta no puede ser verdadera y falsa al mismo tiempo.

Clases de proposición

Proposiciones Simples Son aquellas que solo realiza una afirmación, es decir, aquellas que no tienen ningún conector.

Ejemplo:

Juan tiene 20 años

Manuela es una niña

Proposiciones CompuestasSon aquellas que tiene dos o más afirmaciones, es decir tiene uno o más conectores en ellas.

Ejemplo:

Juan tiene 20 años Y es hombre.

A Manuela le gusta jugar con muñecas O jugar con los carros.

Proposiciones y Condicionales

Si Juana hace sus deberes entonces obtiene buenas notas Si no entonces tendrá que reforzar.

Si Entonces Si no

Condicionales: Sentencia if - elseEn nuestro lenguaje En C++Si Entreno duroEntonces Gano la competenciaSi no Entonces Perderé la competencia

if(acción==entrenar duro){Ganare la competencia;}else {Perderé la competencia;}

Si Entonces _________________Si Entonces _________________ 

if(______________){ _________________;}else{_________________;}

Cuantificadores <  Menor que Este símbolo se utiliza para preguntar si hay un valor

menor que otro. Siempre de la siguiente manera A<B (A menor que B), B<C (B menor que C)

>  Mayor que Este símbolo se utiliza para preguntar si hay un valor mayor que otro. Siempre de la siguiente manera C>D (C mayor que D), D>F (D mayor que F).

<= Menor igual que

Este símbolo se utiliza para preguntar si hay un valor menor O igual que otro. Siempre de la siguiente manera A<=B (A menor O igual que B), B<=C (B menor O igual que C).

>= Mayor igual que

Este símbolo se utiliza para preguntar si hay un valor mayor O igual que otro. Siempre de la siguiente manera C>=D (C mayor O igual que D), D>=F (D mayor O igual que F)

Reto

Utiliza los conceptos aprendidos para hacer un programa que permita convertir el robot en un detector de borde. Para esto puedes utilizar la función sensorRead() y la sentencia if – else.

Operadores LógicosSímbolo Nombre Función

&& Y (Conjunc

ión)

Con Y le damos prioridad a el cumplimiento de dos o más sentencias a la vez.

|| O (Disyunci

ón)

Con O solo se debe cumplir una sentencia para adquirir un verdadero.

! Negación Este se utilizara para realizar la negación de algo, es decir si una sentencia es verdadera, pero se antecede de este símbolo, esta sentencia pasara a ser falsa.

Calibrar Sensores

lineCompare()DescripciónAsignara el valor de referencia como el leído para una superficie blanca y asignara un rango de valores para negro. SintaxislineCompare (PORT, valor_de_referencia);Parámetros

PORT: indica el puerto del cual se quiere obtener su valor, los valores posibles J1, J2, J3, J4, J5, J6valor_de_referencia: este será el valor en la que mediante el test de monitor serial se lee mientras esta en una superficie blanca.

DevuelveN/A: Esta función no me devuelve ningún valor.

Calibrar Sensoresvoid setup(){ lineCompare (J1, valor_de_referenciaJ1); lineCompare (J2, valor_de_referenciaJ2); }void loop(){

}

Función lineRead()DescripciónDetecta si hay una superficie negra o blanca, se utiliza para que nuestro robot siga una línea negra o blanca.SintaxislineRead(PORT);Parámetros

PORT: indica el puerto del cual se quiere obtener su valor, los valores posibles J1, J2, J3, J4, J5, J6

DevuelveWHITE (1) - Si la superficie es Blanca. WHITE>valor_de_referenciaBLACK (0) - Si la superficie es negra. 50 <BLACK<valor_de_referenciaVOID (3) - Si la superficie no devuelve un valor de negro o blanco. VOID<50

Reto

Reescribe el código de detector de borde y utiliza la función lineRead() en vez de sensorRead(), calibra los sensores!!.

Seguidor de LíneaActividad: Utiliza todos los conocimientos hasta acá aprendidos para seguir correctamente la pista.

Caso Estado Sensores

Si Sensor derecho esta en BLANCO Y sensor izquierdo esta en BLANCO

Entonces

Voy hacia adelante

Las instrucciones para lograr esto son:

if(lineRead(J5) == WHITE && lineRead(J1) == WHITE){

motorOn(M1, FORWARD);

motorOn(M2, FORWARD);

}

Si Sensor derecho esta en NEGRO Y sensor izquierdo esta en BLANCO

Entonces

Giro hacia _________________

Las instrucciones para lograr esto son:

if(lineRead(J5) == ________ && lineRead(J1) == ________){

motorOn(M1, ________);

motorOn(M2, ________);

}

Si Sensor derecho esta en BLANCO Y sensor izquierdo esta en NEGRO

Entonces

Giro hacia _________________

Las instrucciones para lograr esto son:

if(lineRead(J5) == ________ && lineRead(J1) == ________){

motorOn(M1, ________);

motorOn(M2, ________);

}

Y el cuarto caso..

if(lineRead(J5)== BLACK &&.lineRead(J1) == BLACK){

motorOff(M2,M1); motorOff(M2,M1);

}

Reto

Completa los ejemplos anteriores y basados en ellos y en toda la experiencia que has adquirido haz que el Innobot siga la pista correctamente.

InterseccionesYa sabes como seguir una línea, ahora debes aprender a sortear el primer obstáculo. Intersecciones!

¿Cómo girar en una intersección?

Retomemos el código anterior

if(lineRead(J5) == BLACK && lineRead(J1) == BLACK){

motorOff(M2); motorOff(M1);}

¡Nuestro Robot debería hacer algo además de parar!

Veamos

Completa y Analiza//Paramos un momento

________(M1); ________(__);delay(___);

//Garantizamos que el robot salga de la intersección motorOn(__,_______); motorOn(__,_______); _____(____);

//Garantizamos que el robot salga de la pista girando un poco motorOn(__,_______); motorOn(__,_______); _____(____); //Utilizamos la función mientras - while

while(lineRead(__) == WHITE){ //Girar motorOn(__,_______);

motorOn(__,_______);}

Reto

Completa el ejemplo e intégralo a tu código principal, líbrate de esa molesta intersección!!

Próxima ClaseAprenderemos como comenzar a Programar nuestro Innobot, es decir, vamos a darle instrucciones para que realice lo que deseamos. Luego nos introduciremos al maravilloso mundo de los sensores.