Racing Senna - Fase 5




_______________________________________________________________________________________________________________________

Introducción a la Ingeniera Electrónica

Pablo Esteban Brand Tegue
Juan Camilo Pavi Valencia

Docente Oscar Casas García

_______________________________________________________________________________________________________________________

Para la Fase #5 se realizaron una serie de cambios  destinados a la finalización del seguidor de linea. A continuación se presentan los detalles resaltados.

____________________________________________

CONEXIONES ACTUALIZADAS
____________________________________________



Cambios:
Uso de los puertos "ena" y "enb" del modulo L298N para el control de la velocidad de los motores
Se añade un sensor extra (sensor central) al seguidor de linea

________________________________________

PROGRAMA UTILIZADO
________________________________________


int rs = 13; // Pin del sensor derecho
int ls = 2; // Pin del sensor izquierdo
int cs = 12; // Pin del sensor central

int ledr=8;
int ledl=7;

// Pines de señal del módulo L298N
int in1 = 4; 
int in2 = 6;
int in3 = 10;
int in4 = 11;

// Pines de velocidad del módulo L298N
int ena = 5;
int enb = 9;

int velocidad;
int velocidad2;
int velocidad3;

int leftValue; //izquierda
int rightValue;  //derecha
int centerValue; //centro

void setup() {
  pinMode(rs, INPUT);
  pinMode(ls, INPUT);
  pinMode (cs, INPUT);
 
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  pinMode(ledr, OUTPUT);
  pinMode(ledl, OUTPUT);
  pinMode(ena, OUTPUT);
  pinMode(enb, OUTPUT);
   velocidad = 60;
    
 

  Serial.begin(9600); // // Comunicación serial
  
  
}

void sensorReading(){
  leftValue = digitalRead(ls); // Lectura - Pin izquierdo
  rightValue = digitalRead(rs); //Lectura - Pin derecho
 centerValue = digitalRead(cs);// Lectura - Pin central
  
  

}

void forward(){
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);  
   analogWrite(ena, velocidad); 
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
   analogWrite(ena, velocidad); 
}


void turnRight(){

    
    
   //Motor izquierdo
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  analogWrite(ena, velocidad); 
  // Motor derecho
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW); 
  analogWrite(enb, 0);
   delay(50);

    //Motor izquierdo
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  analogWrite(ena, 0); 
  // Motor derecho
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
    delay(50);

}
void turnLeft(){
  
  //Motor izquierdo
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  analogWrite(ena, 0); 
  // Motor derecho
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
  analogWrite(enb, velocidad);
  delay(50);


   //Motor izquierdo
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  analogWrite(ena, 0); 
  // Motor derecho
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
    delay(50);

   
}


void stopMotors(){
   //Motor izquierdo
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  // Motor derecho
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
  delay(1500);
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW); 
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
   delay(100);
}


void loop() {
  
 sensorReading();
 
    if(leftValue == 1 && centerValue== 0 &&  rightValue == 0){
    turnLeft();
  } else if(leftValue == 1 && centerValue== 1 &&  rightValue == 0){
    turnLeft();
  }else if(leftValue == 0  && centerValue== 0 && rightValue == 1){
    turnRight();
  }else if(leftValue == 0  && centerValue== 1 && rightValue == 1){
    turnRight();
  }else if(leftValue == 0 && centerValue== 0 && rightValue == 0 ){
   forward();
  }else if(leftValue == 1 && centerValue== 1 && rightValue == 1 ){
    stopMotors();
  }
 
  else if(leftValue == 0 && rightValue == 0 && centerValue== 1){
    forward();
  }
 
  {
  
  if (rightValue==HIGH)
  
  {
    digitalWrite(ledr, HIGH);
  }
  
  else 
  {
    digitalWrite(ledr, LOW);
  }}
  
  
{  
  
  if (leftValue==HIGH)
  
  {
    digitalWrite(ledl, HIGH);
  }
  
  else 
  {
    digitalWrite(ledl, LOW);
  }
}
  Serial.print(leftValue);
  Serial.print(rightValue);
  Serial.println(centerValue);
}//END



________________________________________________________

ENSABLAJE TEMPORAL DEL ROBOT
________________________________________________________

Imagen 1

Imagen 2

Imagen 3

Imagen 4


________________________________________________________

ROBOT EN FUNCIONAMIENTO
________________________________________________________





Comentarios

Entradas populares de este blog

Robot laberinto Kastelean

Fase 4 Robot seguidor de linea

FASE 2 ROBOT SEGUIDOR DE LINEA