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
Publicar un comentario