Espero que os guste, muchas gracias.
int ENA = 10;
int IN1 = 9;
int IN2 = 8;
int ENB = 5;
int IN3 = 7;
int IN4 = 6;
const int sensorPin=3;
void setup ()
{
Serial.begin (9600);
pinMode (ENA, OUTPUT);
pinMode (ENB, OUTPUT);
pinMode (IN1, OUTPUT);
pinMode (IN2, OUTPUT);
pinMode (IN3, OUTPUT);
pinMode (IN4, OUTPUT);
pinMode(sensorPin, INPUT);
}
void Adelante ()
{
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
analogWrite (ENA, 200);
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
analogWrite (ENB, 250);
}
void Atras ()
{
digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
analogWrite (ENA, 150);
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);
analogWrite (ENB, 190);
}
void Derecha()
{
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(ENA,125);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
digitalWrite(ENB,155);
}
void Izquierda ()
{
digitalWrite(IN1, LOW);
digitalWrite(IN2,HIGH);
digitalWrite(ENA,70);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
digitalWrite(ENB,90);
}
void Parar ()
{
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
analogWrite (ENA, 0);
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
analogWrite (ENB, 0);
}
void loop ()
{
int value=0;
value=digitalRead(sensorPin);
if(value==LOW)
{
Serial.println("Línea blanca");
Adelante();
}
else
{
Serial.println("Línea negra");
Parar();
delay(1000);
Atras();
delay(1000);
Derecha();
delay(1000);
}
}
EXPLICACIÓN:
1- Definimos los pines correspondientes para cada motor con un número de la placa protoboard el cual le asignamos nosotros.
2- Abrimos el void setup en el cual declaramos las entradas y salidas correspondientes.
3- Más tarde, ponemos el void adelante el cual creamos las funciones para mover los motores.
4- En el void atras, hacemos lo mismo pero en sentido contrario.
5- En el void derecha, giramos cada motor en un sentido con una velocidad determinada.
6- En el void izquierda, giramos cada motor en un sentido con una velocidad determinada.
7- En el void parar, lo que hacemos es decirle que este todo LOW (bajo) para que paren los motores.
8- Por último, en el void loop, decimos que el valor (value) es 0 y le decimos que cuando haya una línea blanca vaya hacia adelante y cuando detecte una línea negra que pare 1 segundo, vaya hacia atras y después. hacia la derecha.
Para terminar os dejo un vídeo para que lo veáis:



No hay comentarios:
Publicar un comentario