Calificación:
  • 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
Citar
#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.
Citar
#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
Citar
#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.
Citar
#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
Citar
#6
Ok gracias por la ayuda.
Probare a ver que tal

Enviado desde mi F3_Pro mediante Tapatalk
Citar


Temas similares...
Tema Autor Respuestas Vistas Último mensaje
  LCD sensor distancia numeros de varias cifras Asclem 10 1,465 31-07-2015, 11:11 AM
Último mensaje: calpanxo