Line-following car

 #include <DRV8833.h> // Esta instrucción incluye un fichero que nos permite manejar el DRIVER del motor con instrucciones fáciles 

DRV8833 driver = DRV8833(); // Esta instrucción indica la creación del DRIVER virtual dentro del programa 


// Declaración de variables enteras globales para nombrar los pines: 


int sensorIzquierdo = 10; //Pin de conexión sensor seguidor de línea Izquierdo

int sensorDerecho = 2; //Pin de conexión sensor seguidor de línea Derecha 


int valorIzquierdo; 

int valorDerecho; 


int motorA1 = 5 ; //Pin de conexión de los motores.

int motorA2 = 6;

int motorB1 = 11;

int motorB2 = 3;


int velocidadMotorA =110; //Se define la velocidad para los motores A y B 

int velocidadMotorB = 100;


void setup() {

  // Código de configuración que se ejecuta una sola vez:

  

  // Configurar los pines como entradas o como salidas

  

  pinMode (sensorIzquierdo, INPUT);   //Pin de salida seguidor de línea izquierda

  pinMode (sensorDerecho, INPUT); //Pin de salida seguidor de línea derecha

  

 driver.attachMotorA(motorA1, motorA2); // Esta instrucción especial ya configura los pines del motor A como salidas

 driver.attachMotorB(motorB1, motorB2); // Esta instrucción especial ya configura los pines del motor B como salidas

 

 Serial.begin(9600); // Inicia la comunicación con el puerto serial del computador a 9600 baudios

}


void loop() {

  // Código que se ejecuta de manera repetida:


valorIzquierdo = digitalRead(sensorIzquierdo);

valorDerecho = digitalRead(sensorDerecho);



if (valorIzquierdo == HIGH && valorDerecho == HIGH) { // Estado 1-1

  robotAdelante(); 

}  


if (valorIzquierdo == LOW && valorDerecho == LOW) { //Estado 0-0

  robotRetrocede();

  }


if (valorIzquierdo == LOW && valorDerecho == HIGH) { //Estado 0-1

  robotIzquierda(); 

  }


if (valorIzquierdo == HIGH && valorDerecho == LOW) { //Estado 1-0

  robotDerecha();

  }


Serial.print("Sensor izquierdo: ");

Serial.print(valorIzquierdo);

Serial.print("\t");

Serial.print("Sensor derecho: ");

Serial.println(valorDerecho);

  

}



void robotAdelante(){                    //Función que permite al robot moverse hacia adelante

  driver.motorAForward(velocidadMotorA);

  driver.motorBForward(velocidadMotorB);

  }


void robotFrena() {                      //Función que permite al robot detenerse

  driver.motorAStop();

  driver.motorBStop();

  }


void robotRetrocede(){                    //Función que permite al robotretroceder

  driver.motorBReverse(velocidadMotorA);

  driver.motorAReverse(velocidadMotorB);

  }  


void robotIzquierda(){                    //Función que permite al robot moverse hacia la izquierda

  driver.motorAStop();

  driver.motorBForward(velocidadMotorB);

  }


void robotDerecha(){                      //Función que permite al robot moverse hacia la derecha

  driver.motorAForward(velocidadMotorA);

  driver.motorBStop();  

}

Comentarios

Entradas populares de este blog

Traffic light algortihm