LLevo un tiempo intentando hacer esto, he buscado mucho, y en ninguno de los ejemplos lo he visto, asi que no estoy seguro de que sea posible.
El caso es que tengo 2 motores paso a paso conectados al arduino, que funcionan perfectamente. Quiero enviar desde el puerto de serie al arduino varios datos, para que los motores se muevan, concretamente quiero enviar 4 datos (la velocidad, y la posicion de los dos motores)
Pero desde el puerto de serie solo consigo enviar un solo dato. He probado con if's con while y cualquier tipo de loop y no consigo leer mas de un valor. Tambien he pensado de enviar un numero muy grande y luego separarlo para dar la posicion y velocidad a cada uno de los motores, pero no lo he conseguido.
Esta es una de mis ultimas pruebas fallidas:
//en este caso solo hay un stepper (para simplificar)
//y quiero darle dos valores, la velocidad y la posicion (en pasos)
#include <Stepper.h>
#define STEPS 120
Stepper stepper(STEPS, 8, 9, 10, 11);
int valor = 0;
int lectura[2]={0}; //un array para almacenar los datos
void setup()
{
Serial.begin(9600); //velocidad de comunicacion a 9600 baudios.
Serial.println("0-Velocidad, 1-pasos");
}
void loop()
{
while(valor <= 1){
if(Serial.available() ){
lectura[valor] = Serial.read();
Serial.println(valor);
Serial.flush();
valor++;
delay(1000);
}
}
if(valor >= 1){
valor = 0;
stepper.setSpeed(lectura[0]);
stepper.step(lectura[1]);
}
}
Mi arduino usa un atmega 8 y se comunica por puerto de serie.
Saludos.