martes, 4 de junio de 2019

PRÁCTICA FINAL COCHE

Buenos días, en el día de hoy, os voy a mostrar el código de la práctica final en el que hemos realizado un coche el cual va recto y cuando detecta una línea negra,se para, va hacia detrás, gira hacia la derecha y vuelve recto otra vez.

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

Práctica Infrarrojos

Hola, buenos días,hoy os colgaré la práctica de infrarrojos que me quedaba por terminar.