Hola buenas tardes, como he puesto en el Titulo tengo un problema al conectar un sensor ultrasonido (hc-sr04) y un Sharp gp2y0a21yk. Lo que pretendo conseguir con esto es un robot que se mueva primero hacia delante, luego si detecta un obstáculo en el sensor ultrasonido que gire a la derecha y si detecta un obstáculo en el Sharp que gire a la izquierda y siga hacia delante. El movimiento del robot es mediante dos motores DC conectados a un Driver L298N (esta información es por si no se entiende en el Sketch).
Espero que me haya expresado bien y he de decir que soy un principiante, gracias por adelantado.
Por ultimo aquí les dejo el Sketch:
int IN1 = 22;
int IN2 = 23;
int IN3 = 24;
int IN4 = 25;
const int valorUmbral = 20;
const int echoReceptor = 3;
const int triggerEmisor = 4;
long tiempoEntrada;
float distanciaEntrada;
int sensor_1 = A0;
int lectura;
int conversion;
void setup()
{
pinMode (IN1, OUTPUT); // entrada 1
pinMode (IN2, OUTPUT); // entrada 2
pinMode (IN3, OUTPUT); // entrada 3
pinMode (IN4, OUTPUT); // entrada 4
Serial.begin(9600);
pinMode(triggerEmisor, OUTPUT);
pinMode(echoReceptor, INPUT);
}
void loop ()
{
sensorUltrasonidos();
sensorAnalogico();
if(distanciaEntrada>valorUmbral)
{
Adelante();
}
else
{
Derecha();
}
if (conversion>=0 && conversion<10)
{
Derecha();
}
else if (distanciaEntrada>valorUmbral)
{
Izquierda();
}
else
{
Adelante();
}
}
void Adelante ()
{
//Direccion motor A
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
//Direccion motor B
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
}
void Atras ()
{
//Direccion motor A
digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
//Direccion motor B
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);
}
void Derecha ()
{
//Direccion motor A
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
//Direccion motor B
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);
}
void Izquierda ()
{
//Direccion motor A
digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
//Direccion motor B
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
}
void Parar ()
{
//Direccion motor A
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
//Direccion motor B
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
}
void sensorAnalogico()
{
lectura= analogRead(sensor_1);
conversion= pow(3027.4 / lectura, 1.2134);
}
void sensorUltrasonidos()
{
digitalWrite(triggerEmisor, LOW);
delayMicroseconds(10);
digitalWrite(triggerEmisor, HIGH);
delayMicroseconds(10);
tiempoEntrada=pulseIn(echoReceptor, HIGH);
distanciaEntrada= int(0.017*tiempoEntrada);
Serial.println("El valor de la distancia es");
Serial.println(distanciaEntrada);
delay(200);
}