Post on 25-Jan-2016
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.