Hola gente, hace algún tiempo que vengo jugando con arduino mega y algunos sensores que me he ido comprando, antes que nada quiero agradecerles a todos los que aportan en este foro ya que me ha sacado infinidad de dudas.
Ahora bien, busque en el foro pero no he podido encontrar a nadie con mi mismo problema.
Antes de comentarles el problema en si, les comento que es lo que estoy haciendo y como lo tengo conectado.
• x1 Arduino Mega.
• x2 motores los que vienen con ruedas y la caja reductora amarilla (muy vendidos aca en argentina). https://articulo.mercadolibre.com.ar/MLA-622976953-kit-motor-dc-3v-a-6v-caja-reductora-rueda-goma-arduino-_JM
• x1 rueda "loca".
• x3 sensores ultrasonicos HC-SR04 (Conectado todos los VCC a pin 5v, todos los GND al mismo GND de arduino, trigger y echo a 6 PWM de arduino pines del 4 al 9).
• Modulo para manejar motores L298n (Puente H, alimentado por Vin al Vin del modulo, GND a un pin GND exclusivo de arduino y las 4 salidas a otros pines PWM).
• Alimentación: solo con fines de "testeo", fuente ATX de la compu 750W reales. conexión por power jack con los 12v de la fuente.
Ahora bien, estoy usando este código para medir las distancias con los sensores:
long tiempo;
int disparador = 7; // triger
int entrada = 8; // echo
float distancia;
int Sonar(int trigger, int echo)
{
// lanzamos un pequeño pulso para activar el sensor
digitalWrite(trigger, HIGH);
delayMicroseconds(10);
digitalWrite(trigger, LOW);
// medimos el pulso de respuesta
tiempo = (pulseIn(echo, HIGH)/2); // dividido por 2 por que es el
// tiempo que el sonido tarda
// en ir y en volver
// ahora calcularemos la distancia en cm
// sabiendo que el espacio es igual a la velocidad por el tiempo
// y que la velocidad del sonido es de 343m/s y que el tiempo lo
// tenemos en millonesimas de segundo
distancia = float(tiempo * 0.0343);
// y lo mostramos por el puerto serie una vez por segundo
Serial.println(distancia);
delay(100);
return distancia;
}
obviamente que arreglado con las correspondientes asignaciones de pines y demás.
El problema en si que tengo es el siguiente: cuando cargo el sketch y comienza a funcionar (cabe destacar que estoy usándolo conectado a la PC por USB para ver como funcionan los sensores), los sensores de lo bien que están leyendo bien las distancias de repente leen cualquier cosa, x ejemplo... vienen leyendo "10 cm" y de repente saltan a 2 cm o 100 cm, probé darle mas delay entre medidas y pasa igual y no es problema de acoples de señales ya que lo he probado con un solo sensor y me pasa igual, desconozco si estoy haciendo algo mal desde código o desde la alimentación o demás.
PD: la idea es un "auto" que mide distancias en 3 dirección y "saltee" obstáculos a medida que se va moviendo, la velocidad es mínima (tengo seteado los motores con el pin de salida en 150 donde 255 es 0 movimiento y 0 máximo, y estará en unos 0,1 m/s). estoy tratando de simular el comportamiento de las aspiradoras automáticas tipo roomba.
Quien me pueda dar una mano, desde ya muy agradecido.
Saludos.