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.

  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
recibir una cadena de numeros
#1
Hola, 
estoy realizando un brazo robot para controlarlo con app inventor.
de momento el brazo se mueve correctamente de manera manual tiene unas flechas para cada para subir o bajar el valor del servo correspondiente.
Luego hay un botón para grabar la posición deseada. Guarda los valores bien.
El problema donde estoy estancado es el siguiente, quiero mandar una cadena de 30 caracteres en grupos de 3, para ello los valores guardados están separados por un ( / )
Luego en el arduino quiero leer los datos recibidos de la aplicación y que cada grupo de 3 números me mueva un servo. 

Aquí esta el problema que no se como diferenciar los números en grupos de tres en el sketch.

Alguien podría dar alguna ayuda? 

gracias
  Responder
#2
Una posible solucion seria usar la funcion Serial.parseInt() ,que lee un int del buffer serial hasta que encuentra un caracter no numerico.Si el numero de comandos es fijo ,la puedes incluir en un bucle for ya que sabes el numero de comandos a leer,si es variable puedes meter la funcion en un blucle while condicionado a la lectura de un caracter diferente al separador que indique el final de comandos o bien a que haya bytes por leer del buffer.
  Responder
#3
Ok si eso podria funcionar pero no tengo muy claro como hacerlo podrias poner un ejemplo?
Cada vez que encuetre la barra / tendria que ser una variable y luego mover el servo que corresponda.

Enviado desde mi F3_Pro mediante Tapatalk
  Responder
#4
Código:
int movimientos[10];
void setup(){ // Codigo}
void loop(){
if ( Serial.available()){
 for (byte cont = 0;cont < 10;cont ++){
  movimientos[cont] = Serial.parseInt(); // En este array  tienes almacenados las 10 posiciones de los servos
 }
}
}
No lo he complilado ,puede tener algun fallo,pero seria algo asi.De todas formas lo veo un poco ineficiente ,puede darse el caso de que solo estes moviendo un servo pero igualmente se mandan 30 caracteres (mas los caracteres de separacion),ademas ,dependiendo de los eventos que uses en la app para enviar la cadena ,puedes facilmente colapsar el buffer del puerto serial.quizas seria mas practico enviar solo los datos del servo/s a mover,con algun tipo de comando identificador de servo-posicion del servo.
  Responder
#5
Una posible solución sería utilizar strtok(), que te separa un texto en un array, indicando el carácter de separación. Una vez los tienes, usas atoi, atol, atof etc
  Responder
#6
Ok gracias por la ayuda.
Probare a ver que tal

Enviado desde mi F3_Pro mediante Tapatalk
  Responder


Posibles temas similares…
Tema Autor Respuestas Vistas Último mensaje
  LCD sensor distancia numeros de varias cifras Asclem 10 3,807 31-07-2015, 11:11 AM
Último mensaje: calpanxo