This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

  • 2 voto(s) - 4.5 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Proyecto Hexapod Arduino UNO
#1
Buenas, soy nuevo en este foro, pero he dejado mi presentación en su zona correspondiente! He aquí mi proyecto:

Somos dos amigos que estamos intentando hacer un hexapod. Tenemos la estructura y mas o menos la idea de como va a ir el tema de los motores. Los motores son dos servo motores pequeños (Los de 90º) que mueven una pata central de derecha a izquierda en forma de arco (Mas tarde añadiré fotos a este mismo post!). La cosa es que no tenemos ni idea de como crear el código, hemos creado una aplicación que esta formada con un botón principal que al pulsarlo se abre el reconocimiento de voz, ese reconocimiento de voz reconoce lo que dices y lo escribe, al escribirlo se lo manda al Arduino y él lo reconoce.
Por ejemplo:
*Abro la aplicación* *Pulso el botón* "Camina" *La aplicación lo escribe y se lo manda al Arduino* *El Arduino lo recibe y mediante el código reconoce que tiene que ir hacia delante*

Tenemos un USB Host Shield conectado a un pendrive Bluetooth, y él mismo conectado sobre el Arduino UNO. Nuestra duda es la siguiente:

¿Como o qué tenemos que poner en el código para que al reconocer según que palabra haga una acción u otra? Por ejemplo lo de que camine hacia delante/atrás, o que gire hacia la derecha/izquierda o que se pare, etcétera.

No me gusta entrar a un foro y que mi primer post sea pidiendo ayuda pero no me queda otra! Facepalm

Un saludo y espero divertirme y aprender mucho en esta comunidad! Confundidoing: Mola
  Responder
#2
¿Entras en el foro ya preguntando? Pues para algo estamos hombre!

Si no entiendo mal tu caso, tendrás que generar una función para cada movimiento que entre en bucle hasta recibir nueva orden. Si no, aunque crees una función "camina" en la que generas un paso del hexa, te dará eso, un paso nada más. O bien generarle X repeticiones dentro de la función.

Curioso el control por voz, que shield estáis usando? Cuéntanos mas...
  Responder
#3
Pues el control por voz esta creado mediante una aplicación creada por la página "APP INVENTOR 2". Primero de todo tienes que activar el Bluetooth del mobil, una vez eso...Tiene un botón que pone "Selecciona el dispositivo Bluetooth", al darle se abre una ventana con los dispositivos Bluetooth cercanos y tendria que elejir el Arduino. Al tenerlo seleccionado y conectado el botón de control de voz se activara y podrá ser usado. Al darle al botón de control de voz se abrira el sistema de reconocimiento de voz de google y cuando te ponga "Habla Ahora" tienes que decir o "camina", o "derecha", o... Al decir la palabra, la reconocera y la escribira en una ventanita abajo de este botón. Esa misma palabra se mandara al Arduino mediante Bluetooth y activara la función determinada en el código para esa palabra. A continuación os adjunto algunas capturas de la aplicación:
[Imagen: 2qwehl3.jpg] [Imagen: 14dmumf.jpg]
[Imagen: 168yj5k.jpg] [Imagen: 30di0w6.jpg]

Un saludo y gracias!!!! Mola
  Responder
#4
Buenas a tod@s:

Un proyecto muy interesante y aún más con tu edad.

Yo el otro día también me estuve mirando la aplicación app Inventor 2 para trabajar con Android y también vincularlo con proyectos con Arduino como habéis hecho en vuestro caso.

Como bien te comenta jukillo tendrás que relacionar las palabras con las acciones, pero cuando tengas que hacer una acción de movimiento tienes que hacer que lo repita diversas veces (un numero limitado de veces) o que lo haga de forma indefinida hasta que reciba una nueva orden.

Cuando lo tengas montado ya nos enseñarás fotos y vídeos, que queremos ver este proyecto tan bonito.

Yo no he trabajado con reconocimiento de voz por lo tanto no te puedo mostrar ningún ejemplo de código. Sorry Triste
  Responder
#5
Hola, te pongo un codigo estandar para que puedas hacer lo que quieres.
Solo comentarte que yo siempre uso la librería "SoftwareSerial", por lo que si no la tienes tendras que descargarla, esta librería hace que puedas utilizar cualquier pin del arduino como puerto serie RX y TX en el caso que te pongo utilizariamos los pines 2 y 3.

Si tu terminal enviara un "0" iría hacia adelante.
Si tu terminal enviara un "1" iría hacia atras.
Si tu terminal enviara un "2" iría hacia la izquierda.
Si tu terminal enviara un "3" iría hacia la derecha.

Código:
#include <SoftwareSerial.h>

char recibe;
SoftwareSerial bluetoothBridge(2,3);

void setup()
{
bluetoothBridge.begin(9600);
}

void loop()
{
recibe = bluetoothBridge.read();
switch(recibe)
{
case '0':
adelante();
break;
case '1':
atras();
break;
case '2':
izquierda();
break;
case '3':
derecha();
break;
}
}

void adelante()
{
//Codigo para que ande hacia adelante
}

void atras()
{
//Codigo para que ande hacia atras
}

void izquierda()
{
//Codigo para que ande hacia la izquierda
}

void derecha()
{
//Codigo para que ande hacia la derecha
}

Espero que lo entiendas.
Cualquier duda azlo saber.

Un Saludo
Jomagom
  Responder
#6
En tu app en el mvl cada palabra que digas con la voz tendrás que relacionarla con la letra que enviara por serie correspondiente en el switch,y esta ya llama a la función.
  Responder
#7
De acuerdo, entiendo el código más o menos por no decir completamente... Donde pone:

case '0':
adelante();
break;

Significa que, le das el valor de "0" a la palabra "adelante", y el "break" es para separar una acción de otra.
La siguiente acción sería, le das el valor "1" a la palabra "atras", y así sucesivamente, no?
  Responder
#8
Y como podría accionar dos servo motores de 90º? Hacen función como de limpiaparabrisas, en la pata del medio. Y esa pata esta conectada a las otras dos en forma de M... No se si me he explicado bien, por si acaso dejo fotos..

[Imagen: 2cgfwp0.jpg] [Imagen: 1zfitf6.jpg]
[Imagen: 2eyalfp.jpg]

Pues ese es el chasis, algo cutre ya que es artesano y con lo que hemos pillado pero sirve... Anteriormente llevaba unos motores normales que hacían mover las patas del medio en forma de O, pero los servo motores de 180º al ser tan grandes no podíamos ponerlos ahí.. Así que pusimos los de 90º que son esos que veis. Falta la pieza que une el servomotor con el tornillo, tenemos que ir a buscarla ya que teníamos solo una.

Se aceptan ideas! Hay algún otro tipo de motor que nos iría mejor? (La madera esa que esta de soporte se puede quitar)

Gracias!! La verdad es que es bastante más complicado de lo que pensaba.. Pero no me rendiré!!

Y en cuanto al código, quiero hacer que los servo motores actúen como unos limpia parabrisas, Osea de 0º a 90º y al revés. Que tendria que poner en el código?

Gracias de antemano!! Mola
  Responder
#9
Nanoo ten suerte! A ver si hay alguien que sabe...
  Responder


Posibles temas similares…
Tema Autor Respuestas Vistas Último mensaje
  DUDA arduino uno + GPS + SD + SDS011 JRRAmirez 1 0 23-07-2023, 04:57 PM
Último mensaje: asesorplaza1
  exit status 1 Error compilando para la tarjeta Arduino/Genuino Uno fcojavier 26 59,300 18-03-2022, 11:26 PM
Último mensaje: asesorplaza1
  Placa MEGA(china) la reconoce como UNO Jaimelito 1 888 18-11-2020, 10:15 PM
Último mensaje: asesorplaza1
  CONSULTA ¿como uno dos codigos en un solo codigo? laurangcard 1 943 18-11-2020, 10:03 PM
Último mensaje: asesorplaza1
Triste DUDA Error compilando para la tarjeta Arduino/Genuino Uno. Necesito ayuda siro7 9 4,836 28-04-2019, 02:22 PM
Último mensaje: siro7