Fase 3 Robot seguidor de línea
FASE 3
ROBOT SEGUIDOR DE LINEA
Introducción
En la tercera fase toman
relevancia o el protagonismo los sensores, donde se podrá encontrar desde un diagrama
de flujo y de bloques que presentan el funcionamiento de los mismos activando o
apagando los leds y a su vez serán enseñados en un video.
Sensores
Los sensores usados en el
robot SCARAB son los CNY70, y se cuentan con un total de 6 de estos sensores
para su funcionamiento. Los CNY70 o sensores ópticos fueron mencionados en la
primera fase del proyecto, cuentan con mas especificaciones y hasta un enlace
de compra para el mismo modelo trabajado.
Diagrama de Flujo
En la
imagen 1 corresponde al diagrama de flujo que representa de manera secuencial
el proceso que llevaran a cabo los 6 sensores para su funcionamiento en la
etapa práctica. El proceso es el siguiente: Los sensores deben hacer una lectura
para saber si están sobre la línea negra lo que realizara que el led se
encienda, por otro lado, puede tomar el color blanco que significaría que no está
sobre la línea negra, provocando que el led simplemente este apagado.
En el diagrama están definidas
las posiciones de memoria que abarcan los sensores, siendo llamadas CNY1 hasta
el CNY6, además cuenta con el uso de condicionales que se encargan de definir
si los valores de los leds equivalen a 1, su interpretación seria que el sensor detecta la línea negra y
procederá a cumplirse la condición, desencadenando que el led designado al sensor
de dicha condición se encienda o sea HIGH, y al contrario si la condición no es
cumplida, el led se mantendrá apagado LOW.
Diagrama de Bloques
El diagrama de bloques presentado en la imagen 2 corresponde a la representación interna del robot seguidor de línea actual y la relación de los componentes que lo integran, especialmente a los sensores.
Imagen 2. Diagrama de bloques
En el diagrama de bloques se puede ver que la alimentación de 6V va hacia los sensores y al Arduino mega (Controlador), los sensores emiten una señal al Arduino Mega, el cual lo recibe y procesa para enviar la orden correspondiente hacia los leds.
Programación del Arduino
int Vel=0;
int PinVel1=4;
int PinVel2=3;
int sensor1=40;
int sensor2=42;
int sensor3=44;
int sensor4=46;
int sensor5=48;
int sensor6=50;
int valor_cny1=0;
int valor_cny2=0;
int valor_cny3=0;
int valor_cny4=0;
int valor_cny5=0;
int valor_cny6=0;
int led1=5;
int led2=6;
int led3=7;
int led4=8;
int led5=9;
int led6=10;
int ledVel=2;
void setup() {
pinMode(PinVel1, OUTPUT);
pinMode(PinVel2, OUTPUT);
pinMode(sensor1, INPUT);
pinMode(sensor2, INPUT);
pinMode(sensor3, INPUT);
pinMode(sensor4, INPUT);
pinMode(sensor5, INPUT);
pinMode(sensor6, INPUT);
pinMode(ledVel, OUTPUT);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4,OUTPUT);
pinMode(led5,OUTPUT);
pinMode(led6, OUTPUT);
}
void loop() {
valor = analogRead(A0);
Vel=map (valor,0,1024,0,255);
analogWrite(PinVel1,Vel);
analogWrite(PinVel2,Vel);
analogWrite(ledVel,Vel);
valor_cny1=digitalRead(sensor1);
valor_cny2=digitalRead(sensor2);
valor_cny3=digitalRead(sensor3);
valor_cny4=digitalRead(sensor4);
valor_cny5=digitalRead(sensor5);
valor_cny6=digitalRead(sensor6);
if(valor_cny2==0){
digitalWrite(led2,HIGH);
}
else{
digitalWrite(led2,LOW);}
if(valor_cny1==0){
digitalWrite(led1,HIGH);
}
else{
digitalWrite(led1,LOW);}
if(valor_cny3==0){
digitalWrite(led3,HIGH);
}
else{
digitalWrite(led3,LOW);}
if(valor_cny4==0){
digitalWrite(led4,HIGH);
}
else{
digitalWrite(led4,LOW);}
if(valor_cny5==0){
digitalWrite(led5,HIGH);
}
else{
digitalWrite(led5,LOW);}
if(valor_cny6==0){
digitalWrite(led6,HIGH);
}
else{
digitalWrite(led6,LOW);}
Comentarios
Publicar un comentario