Laboratorio 14


SEGUIDOR DE LINEA

En el presente laboratorio utilizaremos los sensores ópticos del carrito para hacer un seguidor de linea, usamos 3 y dos sensores ópticos para lograr dicho propósito y hallaremos un código adecuado para poder realizar el funcionamiento con 2 sensores ópticos.

Integrantes:

Espinal Ahuanlla, Hugo Neill
Coronel Chambi, Jose Luis


Video Demostrativo




Código en Arduino.

#define lineTracking1 11
#define lineTracking2 4
#define lineTracking3 2

int in1=9;
int in2=8;
int in3=7;
int in4=6;
int ENA=10;
int ENB=5;
int ABS=100;

bool num1, num2, num3;
bool flag;

 void _mForward(){
  analogWrite(ENA,ABS);
  analogWrite(ENB,ABS);
  digitalWrite(in1,LOW);
  digitalWrite(in2,HIGH);
  digitalWrite(in3,LOW);
  digitalWrite(in4,HIGH);
  Serial.println("go forward!");
}

void _mBack(){
  analogWrite(ENA,ABS);
  analogWrite(ENB,ABS);
  digitalWrite(in1,HIGH);
  digitalWrite(in2,LOW);
  digitalWrite(in3,HIGH);
  digitalWrite(in4,LOW);
  Serial.println("go back!");
}

void _mleft(){
  analogWrite(ENA,ABS);
  analogWrite(ENB,ABS);
  digitalWrite(in1,LOW);
  digitalWrite(in2,HIGH);
  digitalWrite(in3,HIGH);
  digitalWrite(in4,LOW);
  Serial.println("go left!");
}

void _mright(){
   analogWrite(ENA,ABS);
   analogWrite(ENB,ABS);
  digitalWrite(in1,HIGH);
  digitalWrite(in2,LOW);
  digitalWrite(in3,LOW);
  digitalWrite(in4,HIGH);
   //Serial.println("go right!");
}

void _mStop(){
   digitalWrite(ENA,LOW);
   digitalWrite(ENB,LOW);
   Serial.println("Stop!");
}

void setup(){
  pinMode (11, INPUT);
  pinMode (4, INPUT);
  pinMode (2, INPUT);
  pinMode(in1,OUTPUT);
  pinMode(in2,OUTPUT);
  pinMode(in3,OUTPUT);
  pinMode(in4,OUTPUT);
  pinMode(ENA,OUTPUT);
  pinMode(ENB,OUTPUT);

  Serial.begin(9600);
}

void loop() {
  num1 = digitalRead(lineTracking1); 
  num2 = digitalRead(lineTracking2);
  num3 = digitalRead(lineTracking3);

  if(num2){
    _mForward();
  }
  else if(num3) {
    while(1) {
      num3 = digitalRead(lineTracking3);     
      if(num3) {
        _mright();
      }
      else{
        break;
      }             
    }                                     
  }
  else{
    num1 = digitalRead(lineTracking1); 
    num3 = digitalRead(lineTracking3);
    if(!num1 && !num3){
      _mleft();
      while(1){
         num3 = digitalRead(lineTracking1);
         if(num3) {
          break;
         }
      }
    }
    if(num1 && !num3){
      _mleft();
      while(1){
         num3 = digitalRead(lineTracking1);
         if(num3) {
          break;
         }
    else if(num3 && num1 && num2){
      _mright();
      while(1){
         num1 = digitalRead(lineTracking1);
         if(num1) {
          break;
         }
      }   
    }
  }
}
}
}


Comentarios

Entradas populares de este blog

Laboratorio 15