Figura 1.
Código:
const int Trigger = 2; //Pin digital 2 para el Trigger del sensor
const int Echo = 3; //Pin digital 3 para el Echo del sensor
int motor1a=13;
int motor1b=12;
int motor1c=11;
int motor1d=10;
int motor2a=9;
int motor2b=8;
int motor2c=7;
int motor2d=6;
void setup() {
Serial.begin(9600);//iniciailzamos la comunicación
pinMode(Trigger, OUTPUT); //pin como salida
pinMode(Echo, INPUT); //pin como entrada
digitalWrite(Trigger, LOW);//Inicializamos el pin con 0
pinMode(motor1a,OUTPUT);
pinMode(motor1b,OUTPUT);
pinMode(motor1c,OUTPUT);
pinMode(motor1d,OUTPUT);
pinMode(motor2a,OUTPUT);
pinMode(motor2b,OUTPUT);
pinMode(motor2c,OUTPUT);
pinMode(motor2d,OUTPUT);
}
void loop()
{
long t; //timepo que demora en llegar el eco
long d; //distancia en centimetros
digitalWrite(Trigger, HIGH);
delayMicroseconds(10); //Enviamos un pulso de 10us
digitalWrite(Trigger, LOW);
t = pulseIn(Echo, HIGH); //obtenemos el ancho del pulso
d = t/59; //escalamos el tiempo a una distancia en cm
Serial.print("Distancia: ");
Serial.print(d); //Enviamos serialmente el valor de la distancia
Serial.print("cm");
Serial.println();
delay(100); //Hacemos una pausa de 100ms
if(d>60){
digitalWrite(motor1a,HIGH);
digitalWrite(motor1b,LOW);
digitalWrite(motor1c,HIGH);
digitalWrite(motor1d,LOW);
digitalWrite(motor2a,LOW);
digitalWrite(motor2b,HIGH);
digitalWrite(motor2c,LOW);
digitalWrite(motor2d,HIGH);
delay(50);
}
if(d<60 ){
digitalWrite(motor1a,LOW);
digitalWrite(motor1b,LOW);
digitalWrite(motor1c,LOW);
digitalWrite(motor1d,LOW);
digitalWrite(motor2a,LOW);
digitalWrite(motor2b,LOW);
digitalWrite(motor2c,LOW);
digitalWrite(motor2d,LOW);
delay(500);
digitalWrite(motor1a,LOW);
digitalWrite(motor1b,HIGH);
digitalWrite(motor1c,LOW);
digitalWrite(motor1d,HIGH);
digitalWrite(motor2a,HIGH);
digitalWrite(motor2b,LOW);
digitalWrite(motor2c,HIGH);
digitalWrite(motor2d,LOW);
delay(50);
digitalWrite(motor1a,LOW);
digitalWrite(motor1b,HIGH);
digitalWrite(motor1c,LOW);
digitalWrite(motor1d,HIGH);
digitalWrite(motor2a,LOW);
digitalWrite(motor2b,HIGH);
digitalWrite(motor2c,LOW);
digitalWrite(motor2d,HIGH);
delay(50);
}
}