Problema en 2wd con bluetooh

Hola,llevo un mes con Arduino y he montado un 2wd con L298N, arduino uno con shield v5.0, con un módulo de bluetooh y sensor de ultrasonidos, para que no se chocara, pero no sé como pararlo antes que se choque, solo he conseguido que funcione adelante y atrás.No sé que estoy haciendo mal, este es el código:

#include <NewPing.h>
char estado;
int ENB = 5;
int IN1 = 7;
int IN2 = 8;
int IN3 = 9;
int IN4 = 11;
int ENA = 6;
int vel = 255;
int ECO = A1;
int TRIG = A0;
#define MAX_DISTANCE 200
NewPing sonar(TRIG, ECO, MAX_DISTANCE);

void setup()  {
  pinMode (ENB, OUTPUT);
  pinMode (ENA, OUTPUT);
  pinMode (IN1, OUTPUT);
  pinMode (IN2, OUTPUT);
  pinMode (IN3, OUTPUT);
  pinMode (IN4, OUTPUT);
  pinMode(TRIG, OUTPUT);
  pinMode(ECO, INPUT);
  Serial.begin(9600);
}

void loop()  {
  delay(50);
  Serial.print("Ping: ");
  Serial.print(sonar.ping_cm());
  Serial.println("cm");

  if (Serial.available() > 0) {
    delay(100);
    while (Serial.available()) {

      estado = Serial.read();

      if (estado == 'f') {
        analogWrite (ENA, HIGH);
        analogWrite (ENB, HIGH);
        digitalWrite (IN1, HIGH);
        digitalWrite (IN2, LOW);
        digitalWrite (IN3, HIGH);
        digitalWrite (IN4, LOW);

      }
      if (estado == 'l') {
        analogWrite (ENA, vel);
        analogWrite (ENB, vel);
        digitalWrite (IN1, LOW);
        digitalWrite (IN2, HIGH);
        digitalWrite (IN3, LOW);
        digitalWrite (IN4, HIGH);

      }
      if (estado == 's') {
        analogWrite (ENA, 0);
        analogWrite (ENB, 0);
        digitalWrite (IN1, 0);
        digitalWrite (IN2, 0);
        digitalWrite (IN3, 0);
        digitalWrite (IN4, 0);
      }
      if (estado == 'r') {
        analogWrite (ENA, vel);
        analogWrite (ENB, vel);
        digitalWrite (IN1, HIGH);
        digitalWrite (IN2, LOW);
        digitalWrite (IN3, HIGH);
        digitalWrite (IN4, LOW);

      }

      if (estado == 'b') {
        analogWrite (ENA, vel);
        analogWrite (ENB, vel);
        digitalWrite (IN1, LOW);
        digitalWrite (IN2, HIGH);
        digitalWrite (IN3, LOW);
        digitalWrite (IN4, HIGH);

      }
      else {
        analogWrite (ENA, vel);
        analogWrite (ENB, vel);
        digitalWrite (IN1, HIGH);
        digitalWrite (IN2, LOW);
        digitalWrite (IN3, HIGH);
        digitalWrite (IN4, LOW);

      }

    }
  }
}

Hola
No hay un sólo comentario y no sabemos que pasa por tu cabeza al resolverlo de esa manera, difícil responderte, al menos para mi.
¿Qué tal si pones comentarios los cuales además pondrán en orden tus ideas?
Un saludo

Lo único que veo en el código es que sensa la distancia y la imprime, luego espera un comando y reacciona según corresponda al comando y nada más.
La distancia pasa a ser un dato anecdótico porque no maniobras en respuesta a ésta.
Digamos que solo tienes el comienzo del código, te falta todo lo demás.

Saludos

Hola gatul, tienes razón, me falta definir int distancia = sonar.pingcm(); y a partir de ahí hacer todos los if... ahora me he dado cuenta.

Claro, es como ese juego donde una persona está con los ojos vendados y otra lo guía.
La que guía le dice a la otra "A tantos metros hay un obstáculo" luego le dice "¡Camina!" pero nunca le dice "¡Frena que te lo chocas!" :grin:

Cualquier duda, por aquí andamos.
Saludos

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.