Realizaremos un seguimiento de línea en el que nuestro robot deberá ser capaz de seguir por sí mismo un trazado oscuro en una superficie sin salirse de este mediante el uso de de un sensor de seguimiento con infrarrojos.
Nuestro código sería:
#define LT_R !digitalRead(10) // Pines que toman la variable
#define LT_M !digitalRead(4)
#define LT_L !digitalRead(2)
#define ENA 5 //Pines que utiliza
#define ENB 6
#define IN1 7
#define IN2 8
#define IN3 9
#define IN4 11
#define carSpeed 150 // Velocidad por defecto
void forward(){ //Función de movimiento hacia delante con variable incluida
analogWrite(ENA, carSpeed);
analogWrite(ENB, carSpeed);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
Serial.println("go forward!");
}
Definimos los pines que toman las variables que en este caso se utilizan el 5,6,7,8,9 y 11, nuestra velocidad por defecto será de 250 y le damos función de movimiento hacia adelante con las variables nombradas anteriormente.
void back(){ //Función de movimiento hacia detrás con variable incluida
analogWrite(ENA, carSpeed);
analogWrite(ENB, carSpeed);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
Serial.println("go back!");
}
void left(){ //Función de movimiento hacia la izquierda con variable incluida
analogWrite(ENA, carSpeed);
analogWrite(ENB, carSpeed);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
Serial.println("go left!");
}
Funciones de movimiento hacia atras y hacia la izquierda con las variables y de low y high para activo e inactivo.
void right(){ //Función de movimiento hacia la derecha con variable incluida
analogWrite(ENA, carSpeed);
analogWrite(ENB, carSpeed);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
Serial.println("go right!");
}
void stop(){ //Función de parada
digitalWrite(ENA, LOW);
digitalWrite(ENB, LOW);
Serial.println("Stop!");
}
void setup(){ // Función de inicio de placa
Serial.begin(9600); // Define los baudios para el sensor
pinMode(10,INPUT); // Define los pines como entrada*/
pinMode(4,INPUT);
pinMode(2,INPUT);
}
Función hacia la derecha y función de parada con Stop. Definimos los baudios para el sensor de 9600. La función de setup de la placa y los pines de entrada que serían el 2,4 y 10.
void right(){ //Función de movimiento hacia la derecha con variable incluida
analogWrite(ENA, carSpeed);
analogWrite(ENB, carSpeed);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
Serial.println("go right!");
}
void stop(){ //Función de parada
digitalWrite(ENA, LOW);
digitalWrite(ENB, LOW);
Serial.println("Stop!");
}
void setup(){ // Función de inicio de placa
Serial.begin(9600); // Define los baudios para el sensor
pinMode(10,INPUT); // Define los pines como entrada*/
pinMode(4,INPUT);
pinMode(2,INPUT);
}
Con esta última parte definimos el seguimiento de línea con forward hacia adelante left izquierda y right derecha y ya tendriamos nuestro robot siguiento la línea.
Video de demostración: Seguimiento de línea
Este proyecto ha sido realizado basándose en el código por defecto de Smart Robot Car Kit 3.0 Plus.
Realizado por: Kevin Maldonado Pico y Laura Tovar Pérez