proyecto coche 4x4 con brazo robot.

surbyte:
Estas usando APP Inventor no C++ ni JAVA ni otra cosa. Es una programación gráfica.
Yo creo que debes hacer lo que te dije. Olvida los motores monitorea en el arduino que recibe y cuantas veces lo hace.

perfecto.
probaremos a ver que pasa cuando pulso el botón, a ver que nos dice al monitorearlo.
de todas formas, lo de la función anti rebote era para implementarla en el propio scketch del arduino, no en la app...

por otro lado... hace poco adquirí un modulo wifi, crees que será mejor utilizar este? o se comportará igual que el modulo bluethoot? en cuanto alcance, el modulo wifi si que tendrá mejor alcance, pero no necesito un largo alcance ya que es para utilizarlo en distancias cortas...
me refiero a mejor respuesta en cuanto a velocidad y que no se me quede "colgado" como el modulo bluetooth.

muchisimas gracias por tu respuesta.
un saludo

Surbyte, no había leído el link que habías dejado.
Este fin de semana lo probaré y veremos si funciona... si lo hace bien también debería de operar correctamente el brazo, ya que tenía el mismo problema.
Os voy manteniendo informados
Muchísimas gracias.
Un saludo

Buenas tardes,
he monitorizado lo que ocurre cuando pulso un botón de la aplicación y resulta que empieza ha recibir datos sin parar incluso después de soltar el botón de la app....

por lo tanto procederemos ha realizar lo que me has comentado surbyte.

un saludo y felices fiestas

Buenas tardes,
he vuelto ha hacer una app nuevamente para comprobar los resultados y sigue fallando de la misma forma.
esta es la app que he hecho en la web:

Como podéis ver, al pulsar botón envía dato, pero cuando soltamos el botón no envía nada... aún así, cuando presionas el botón envía y al monitorizarlo, veo que sigue haciendo lo mismo que me hacía hasta ahora...

empiezo a desesperarme jeje

se os ocurre que es lo que estoy haciendo mal???

un saludo

Ya vi cual es el problema.
Mira la variable estado que defines como global!!
Como esta definida como global al recibir un valor via BT, se queda siempre con ese valor hasta recibir otro.
Deberías ponerla a 0 una vez ejecutada la orden.

estado = "";

te dejo el código

 int izqA = 5;
int izqB = 6;
int derA = 9;
int derB = 10;
int vel = 255; // Velocidad de los motores (0-255)
int estado = 'g'; // inicia detenido

void setup() {
Serial.begin(9600); // inicia el puerto serial para comunicacion con el Bluetooth
pinMode(derA, OUTPUT);
pinMode(derB, OUTPUT);
pinMode(izqA, OUTPUT);
pinMode(izqB, OUTPUT);
}

void loop() {

  if (Serial.available()>0){ // lee el bluetooth y almacena en estado
      estado = Serial.read();
  }
  if (estado=='G'){ // Forward
      Serial.println(estado);
      analogWrite(derB, vel);
      analogWrite(izqB, 0);
      analogWrite(izqA, vel);
      analogWrite(derA, 0);
  }
  
  if (estado=='J'){ // right
      Serial.println(estado);
      analogWrite(derB, vel);
      analogWrite(izqB, vel);
      analogWrite(derA, 0);
      analogWrite(izqA, 0);
  }
  
  if (estado=='K'){ // Stop
      Serial.println(estado);
      analogWrite(derB, 0);
      analogWrite(izqB, 0);
      analogWrite(derA, 0);
      analogWrite(izqA, 0);
  }
  
  if (estado=='I'){ // left
      Serial.println(estado);
      analogWrite(derB, 0);
      analogWrite(izqB, 0);
      analogWrite(izqA, vel);
      analogWrite(derA, vel);
  }

  if (estado=='H'){ // Reverse
      Serial.println(estado);
      analogWrite(derB, 0);
      analogWrite(izqB, vel);
      analogWrite(izqA, 0);
      analogWrite(derA, vel);
  }
  
  if (estado =='f'){ // Boton ON se mueve sensando distancia

  }
  
  if (estado=='g'){ // Boton OFF, detiene los motores no hace nada
  }
  estado = "";
}

Algo era ello.... mañana lo probamos!
Muchas gracias!

Acabo de Probarlo surbyte!!!
Funciona perfectamente!!!
eres un crack!

ahora no sé con que seguir... sí con el seguidor de lineas oscuras y los sensores ultrasonicos o ponerme a configurar el brazo, que tenía el mismo problema que con el coche y me imagino que se solucionará de la misma manera... ahora de primeras me voy a poner a soldar todos los componentes que se me han soltado en todo este tiempo y he tenido que hacer empalmes para poder ponerlo en marcha...
este proyecto que estaba abandonado por una chorrada vuelve a funcionar gracias a tí.

Nuevamente muchas gracias y felices fiestas.

un saludo

Bueno me da gusto.

Reorganízate entonces y planea una serie de tareas de menor a mayor para seguir de la mejor manera.

Buenas tardes,
finalmente me decantaré por hacer 100% funcional la parte en cuanto al coche se refiere y después me pondré manos a la obra con el brazo robot.

Al empezar con el seguidor de lineas, me surge la primera duda.
Yo cuando me fabriqué el robot solo instalé un único sensor, pero al ver en Internet tutoriales veo que utilizan 2 o incluso más... tiene su lógica, ya que cuando deja de ver una línea oscura, mi robot perdería el control ya que no sabría para que lado girar, por el contrario si instalamos 2 o más, cuando uno de los sensores pierde la linea negra, el otro aún la va a tener y el robot sabrá hacia que lado girar....
Creo que voy ha instalar 2 sensores, salvo que alguien me recomiende que instale más....

un saludo

Te voy a sugerir algo siempre y cuando, dispongas del elemento entre tus cosas en deshuso.
Casi todos tenemos un mouse optico que ha dejado de funcionar.
Algunos de ellos usan una micro cámara ccd que puede ver como una matriz xy de pocos elementos pero muchos mas que los dos sensores que mencionas. El resultado es que tendrías un sensor de seguimiento de lineas que no solo vería la linea negra sino tmb cuando comienzas a apartarte de el con lo que podías hacer un seguimiento mas fino. Claro que su manejo es mas complejo pero podría resultar interesante.

surbyte:
Te voy a sugerir algo siempre y cuando, dispongas del elemento entre tus cosas en deshuso.
Casi todos tenemos un mouse optico que ha dejado de funcionar.
Algunos de ellos usan una micro cámara ccd que puede ver como una matriz xy de pocos elementos pero muchos mas que los dos sensores que mencionas. El resultado es que tendrías un sensor de seguimiento de lineas que no solo vería la linea negra sino tmb cuando comienzas a apartarte de el con lo que podías hacer un seguimiento mas fino. Claro que su manejo es mas complejo pero podría resultar interesante.

te entiendo, pero creo que eso va a ser demasiado profesional para mí jeje
yo de electronica soy nivel amateur puro y duro, eso se me va muy grande, de hecho en este proyecto me estoy limitando ha hacer copia pega de proyectos de internet, los cuales solo modifico pequeñas cosas las cuales están a mi alcance...
busco lo que quiero hacer en youtube, google etc... y cuando veo algo que cuadra con lo que yo estoy haciendo me leo el scketch que se han preparado y si veo que puedo implementarlo al mío lo copio, modifico para que pueda adaptarlo al mío y listo....

nose si me he explicado bien...

saludos

Era una sugerencia y si no te sientes cómodo no vale la pena forzarte.

Buenos días,
Sigo con el robot. Hoy ha tocado al sensor ultrasónico.
Estoy revisando el sketch que he preparado y debería funcionar correctamente, pero no lo hace.
Es sensor lo he conectado a la salida de 5v del arduino, es posible que esos 5v no sean suficientes para alimentar el sensor? es lo único que se me ocurre.

si esto no funciona, podría alimentarlo con una batería de 7.4v o sería excesivo?
el sensor que utilizo es un modulo hc-sr04.

un saludo

por si alguien me lo pregunta,
este es el sckatch qye he utilizado

[b]int izqA = 5;
int izqB = 6;
int derA = 9;
int derB = 10;
int vel = 255; // Velocidad de los motores (0-255)
int estado = 'g'; // inicia detenido
int posicion = 7;
int intermitente = 8;

int pecho = 2;            // define el pin 2 como (pecho) para el Ultrasonido
int ptrig = 3;            // define el pin 3 como (ptrig) para el Ultrasonido
int duracion, distancia;  // para Calcular distacia

void setup() {
Serial.begin(9600); // inicia el puerto serial para comunicacion con el Bluetooth
pinMode(derA, OUTPUT);
pinMode(derB, OUTPUT);
pinMode(izqA, OUTPUT);
pinMode(izqB, OUTPUT);
pinMode(posicion, OUTPUT);
pinMode(intermitente, OUTPUT);
pinMode(pecho, INPUT);   // define el pin 2 como entrada (pecho) 
pinMode(ptrig,OUTPUT);   // define el pin 3 como salida  (ptrig) 
pinMode(13,OUTPUT);  //define el pin 13 como salida para un LED que identifica que tenemos un obstaculo

}

void loop() {

  if (Serial.available()>0){ // lee el bluetooth y almacena en estado
      estado = Serial.read();
  }
  if (estado=='Q'){ // Adelante
      Serial.println(estado);
      analogWrite(derB, vel);
      analogWrite(izqB, 0);
      analogWrite(izqA, vel);
      analogWrite(derA, 0);
  }
  
  if (estado=='T'){ // derecha
      Serial.println(estado);
      analogWrite(derB, vel);
      analogWrite(izqB, vel);
      analogWrite(derA, 0);
      analogWrite(izqA, 0);
  }
  
  if (estado=='U'){ // parar
      Serial.println(estado);
      analogWrite(derB, 0);
      analogWrite(izqB, 0);
      analogWrite(derA, 0);
      analogWrite(izqA, 0);
  }
  
  if (estado=='S'){ // izquierda
      Serial.println(estado);
      analogWrite(derB, 0);
      analogWrite(izqB, 0);
      analogWrite(izqA, vel);
      analogWrite(derA, vel);
  }

  if (estado=='R'){ // atras
      Serial.println(estado);
      analogWrite(derB, 0);
      analogWrite(izqB, vel);
      analogWrite(izqA, 0);
      analogWrite(derA, vel);
  }
  
 if (estado =='V') { //Leds posicion ON
  Serial.println(estado);
  digitalWrite(7, HIGH);
  
 }

 if (estado == 'W') { //Leds Posicion OFF
  Serial.println(estado);
  digitalWrite(7, LOW); 
 }

if (estado == 'Y'){ //Leds intermitente ON
Serial.println(estado);
digitalWrite(8, HIGH);

  
}

if (estado == 'Z') { //Leds intermitente OFF

  Serial.println(estado);
  digitalWrite(8, LOW);
}
if (estado =='A'){          // Boton AUTOMATICO ON,  se mueve midiendo distancia 
  
     digitalWrite(ptrig, HIGH);   // genera el pulso de trigger por 10us
     delay(0.01);
     digitalWrite(ptrig, LOW);
     
     duracion = pulseIn(pecho, HIGH);              // Lee el tiempo del Echo
     distancia = (duracion/2) / 29;            // calcula la distancia en centimetros
     delay(10); 
     
     if (distancia <= 15 && distancia >=2){    // si la distancia es menor de 15cm
        digitalWrite(13,HIGH);                 // enciende LED
        
        analogWrite(derB, 0);                  // Parar los motores por 200 mili segundos
        analogWrite(izqB, 0); 
        analogWrite(derA, 0);    
        analogWrite(izqA, 0); 
        delay (200);
        
        analogWrite(derB, vel);               // Reversa durante 500 mili segundos
        analogWrite(izqB, vel); 
        delay(500);           
        
        analogWrite(derB, 0);                // Girar durante 1100 milisegundos   
        analogWrite(izqB, 0); 
        analogWrite(derA, 0);  
        analogWrite(izqA, vel);  
        delay(1100);
        
        digitalWrite(13,LOW);
     }
     else{                   // Si no hay obstaculos se desplaza al frente  
         analogWrite(derB, 0);     
         analogWrite(izqB, 0); 
         analogWrite(derA, vel);  
         analogWrite(izqA, vel); 
     }
  }
  if(estado=='B'){          // Boton OFF, detiene los motores no hace nada 
     analogWrite(derB, 0);     
     analogWrite(izqB, 0); 
     analogWrite(derA, 0);    
     analogWrite(izqA, 0);
  }

 
  
  estado = "";
}[/b]

hace algo extraño.
tiene un led que se ilumina cuando detecta alguna presencia.
si apago y enciendo el modo automático, algunas veces se ilumina este led sin tener ningún objeto a su alcance.
por el contrario si pongo algún objeto frente al sensor, el led no se ilumina...
un saludo

Buenas tardes chic@s. retomo este tema. Ahora en agosto sale algo de tiempo libre y podemos tocar un poco el Arduino. Esta vez lo he retomado con los sensores infrarrojos para poder detectar los obstáculos. He Instalado 2 y esta misma semana espero poder tenerlo armado y ver si opera correctamente.
Respecto al tema de los sensores ultrasonicos, alguien puede asesorarme sobre el votaje que debo utilizar para alimentarlos?

Un saludo.

5V

aitorGTI:
Buenas tardes chic@s. retomo este tema. Ahora en agosto sale algo de tiempo libre y podemos tocar un poco el Arduino. Esta vez lo he retomado con los sensores infrarrojos para poder detectar los obstáculos. He Instalado 2 y esta misma semana espero poder tenerlo armado y ver si opera correctamente.
Respecto al tema de los sensores ultrasonicos, alguien puede asesorarme sobre el votaje que debo utilizar para alimentarlos?

Un saludo.

con los 5v de arduino tendré suficiente para alimentar 3 sensores ultrasónicos? o tendré que utilizar una fuente externa??

muchas gracias por tu ayuda surbyte.
un abrazo.

Tienes suficiente. Consumen poco. No alimentes motores con los 5V del arduino pero esos sensores si.
Usa la librería Newping y verás que fácil es, incluso tiene un ejemplo para 15 sensores Ultrasónicos.
Adaptarlo a 3 es muy simple.

surbyte:
Tienes suficiente. Consumen poco. No alimentes motores con los 5V del arduino pero esos sensores si.
Usa la librería Newping y verás que fácil es, incluso tiene un ejemplo para 15 sensores Ultrasónicos.
Adaptarlo a 3 es muy simple.

perfecto. estoy ahora mismo con los seguidores de lineas oscuras y después me pondré con eso.
muchisimas gracias.