Robótica Educativa
Clase 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.
Campo eléctrico.
Luz infrarroja.
Campo magnético
Sonido audible.
Humedad
Ultra sonido.
PH
Temperatura.
Presión.
Velocidad.
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ón
Hará la lectura del valor del sensor que deseemos
Sintaxis
SensorRead (PORT);
Parámetros
PORT: indica el puerto del cual se quiere obtener su valor, los valores
posibles J1, J2, J3, J4, J5, J6
Devuelve
Un 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 Proposiciones
Compuestas
Son aquellas que solo realiza una
afirmación, es decir, aquellas que no
tienen ningún conector.
Ejemplo:
Son aquellas que tiene dos o más
afirmaciones, es decir tiene uno o más
conectores en ellas.

Ejemplo:
Juan tiene 20 años
Manuela es una niña

Juan tiene 20 años

A Manuela le gusta jugar con muñecas
Y es hombre.
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 - else
En nuestro lenguaje
Si Entreno duro
Entonces
Gano la competencia
Si no
Entonces Perderé la
competencia
Si
Entonces
_________________
Si
Entonces
_________________
En C++
if(acción==entrenar duro){
Ganare la competencia;
}
else {
Perderé la competencia;
}
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
Este símbolo se utiliza para preguntar si hay un valor
igual que 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
Este símbolo se utiliza para preguntar si hay un valor
igual que
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ógicos
Símbolo Nombre Función
&&
||
!
Y
(Conjunc
ión)
O
(Disyunci
ón)
Negación
Con Y le damos prioridad a el cumplimiento
de dos o más sentencias a la vez.
Con O solo se debe cumplir una sentencia
para adquirir un verdadero.
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ón
Asignara el valor de referencia como el leído para una superficie blanca y
asignara un rango de valores para negro.
Sintaxis
lineCompare (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, J6
valor_de_referencia: este será el valor en la que mediante el test de
monitor serial se lee mientras esta en una superficie blanca.
Devuelve
N/A: Esta función no me devuelve ningún valor.
Calibrar Sensores
void setup(){
lineCompare (J1, valor_de_referenciaJ1);
lineCompare (J2, valor_de_referenciaJ2);
}
void loop(){
}
Función lineRead()
Descripción
Detecta si hay una superficie negra o blanca, se utiliza para que nuestro robot
siga una línea negra o blanca.
Sintaxis
lineRead(PORT);
Parámetros
PORT: indica el puerto del cual se quiere obtener su valor, los valores
posibles J1, J2, J3, J4, J5, J6
Devuelve
WHITE (1) - Si la superficie es Blanca. WHITE>valor_de_referencia
BLACK (0) - Si la superficie es negra. 50 <BLACK<valor_de_referencia
VOID (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ínea
Actividad: Utiliza todos los conocimientos hasta acá aprendidos para seguir
correctamente la pista.
Caso
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);
}
Estado Sensores
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.
Intersecciones
Ya 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 Clase
Aprenderemos 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.
Descargar

¿Qué es un Sensor de Línea?