Saltar la navegación

Robot rastreador

En las imágenes siguientes se explica el funcionamiento de un vehículo capaz de seguir una línea negra sobre una base blanca. Consta de dos motores para mover, de manera independiente, las ruedas traseras y dos sensores que suministran un voltaje próximo a 0v (LOW) si el color es negro y cercano a 5v (HIGH) si es blanco.

Si los dos sensores están sobre la línea negra los dos motores giran hacia delante y el coche se mueve en línea recta

 

Si el sensor 1 se sale de la línea negra, el motor 1 se mueve hacia atrás y el vehículo gira hacia la derecha.

 

Si el sensor 2 se sale de la línea negra, el motor 2 se mueve hacia atrás y el vehículo gira hacia la izquierda.

La tarjeta Arduino debe leer el estado de los sensores y dar las órdenes oportunas a los dos motores. En la siguiente actividad podéis completar el programa (también se pueden conseguir los giros manteniendo uno de los motores parado, en lugar de hacerlo girar hacia atrás).

Rellenar huecos

3.- Vehículo rastreador. Completar el programa:

    int pinM1Adelante=5;
    int pinM1Atras=7;
    int pinVelocidad1=3;
    int pinM2Adelante=2;
    int pinM2Atras=4;
    int pinVelocidad2=6;
    int pinSensor1=9;
    int pinSensor2=10;
     estadoSensor1=LOW;
     estadoSensor2=LOW;

  void setup() {
    pinMode(pinM1Adelante,OUTPUT);
    pinMode(pinM1Atras,OUTPUT);
    pinMode(pinVelocidad1,OUTPUT);
    pinMode(pinM2Adelante,OUTPUT);
    pinMode(pinM2Atras,OUTPUT);
    pinMode(pinVelocidad2,OUTPUT);
    pinMode(pinSensor1,INPUT);
    pinMode(pinSensor2,INPUT);
    (pinVelocidad1,200);
    (pinVelocidad2, 200);
  }

  void loop() {
    estadoSensor1= (pinSensor1);
    (pinM1Atras,estadoSensor1);
    (pinM1Adelante,!estadoSensor1);
    estadoSensor2= (pinSensor2);
    (pinM2Atras, );
    ( ,!estadoSensor2);
  }

2.- Vamos a modificar el programa anterior para que el vehículo se detenga si los dos sensores están sobre el color blanco.

  void loop() {
    estadoSensor1= (pinSensor1);
    estadoSensor2= (pinSensor2);
  if(estadoSensor1==HIGH  estadoSensor2==HIGH){
   
    digitalWrite(pinM1Adelante,LOW);
   
    digitalWrite(pinM2Adelante,LOW);
  } {
    (pinM1Atras,estadoSensor1);
    (pinM1Adelante,!estadoSensor1);
    (pinM2Atras, );
    ( ,!estadoSensor2);
  }

Habilitar JavaScript

Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0