Motores con sensor ultrasónico


 Este código que compartiste es para controlar dos motores DC con un sensor ultrasónico HC-SR04, como sistema de evasión de obstáculos.


🔧 Explicación completa del código y funcionamiento:

📌 Pines definidos:


#define trigPin 3 #define echoPin 2
  • trigPin (3): Envía el pulso ultrasónico.

  • echoPin (2): Recibe el eco reflejado del obstáculo.


⚙️ Motores controlados:


pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT);
  • Controla dos motores DC:

    • Motor A: pines 7 (adelante), 8 (atrás)

    • Motor B: pines 9 (adelante), 10 (atrás)

Esto sugiere que probablemente estás usando un puente H como el L298N o L293D para controlar la dirección de los motores.


🧠 Lógica del sensor ultrasónico:

digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = duration * 0.034 / 2;
  • Emite un pulso ultrasónico y mide el tiempo de retorno.

  • Calcula la distancia en centímetros.


🤖 Control del movimiento:

if (distance > 10 || distance == 0) { // Avanza digitalWrite(7, 1); digitalWrite(9, 1); digitalWrite(8, 0); digitalWrite(10, 0); } else { // Detener digitalWrite(7, 0); digitalWrite(8, 0); digitalWrite(9, 0); digitalWrite(10, 0); }
  • Si no hay obstáculo cerca (más de 10 cm o no detecta nada), los motores avanzan.

  • Si hay un obstáculo cerca (menos de 10 cm), se detiene por seguridad.


🖥️ Salida serial:

Serial.print("Distance: ");
Serial.print(distance); Serial.println(" cm");
  • Imprime continuamente la distancia medida para monitorear desde el monitor serial.


Resumen de comportamiento:

Distancia medidaAcción
> 10 cmAvanza
<= 10 cmDetiene
0 cmAvanza (por precaución ante posible error del sensor)

No hay comentarios:

Publicar un comentario