stepper y bluetooth, ayuda!!!!

Hola buenas noches, me llamo fede y estoy armando un proyecto que vendría a ser una silla de ruedas,
el problema que tengo es que estoy utilizando dos motores stepper para su movimiento y los controlo con un joystick, hasta ahí ningún problema, tengo una aplicación creada por mi para android la cual utilizo los acelerometros para comandar la silla por bluetooth, aquí surge mi problema y llevo varias semanas sin poder dormir tranquilo
el arduino con el bluetooth recibe bien la orden desde el móvil pero los motores se mueven de a un paso por cada carácter que el móvil le envía o en algunos casos se clavan, quería algún consejo para hacer funcionar estos motores como corresponde. gracias y saludos!
el código seria este:

#include <SoftwareSerial.h>
#include <AccelStepper.h>

int speedStepper = 0;

AccelStepper stepper2(AccelStepper::FULL4WIRE, 46, 48, 50, 52);
AccelStepper stepper3(AccelStepper::FULL4WIRE, 47, 49, 51, 53);

SoftwareSerial bluetooth(0, 1);

void setup() {

Serial.begin(9600);

//Configuramos la conexion serial del bluetooth con el android

bluetooth.begin(9600);
}
void loop() {

if(bluetooth.available()) //Leemos del Bluetooth y escribimos en el serial
{
char received = bluetooth.read();
char toSend = (char)bluetooth.read();
Serial.print(toSend);
}

if(Serial.available()) { //Si el android le manda algo al arduino este metodo toma el caracter que mando
//y en base a eso ejecuta el metodo deseado

char toSend = (char)Serial.read();
bluetooth.print(toSend);
switch(toSend){
case 'F': //adelante
adelante();
break;
case 'S': //centro
centro();
break;
}
}
}
void adelante(){

stepper2.run();
stepper2.setMaxSpeed(300.0);
stepper2.setAcceleration(300.0);
stepper2.moveTo(1000000);

stepper3.run();
stepper3.setMaxSpeed(300.0);
stepper3.setAcceleration(300.0);
stepper3.moveTo(1000000);
}

void centro(){

digitalWrite(46, LOW);
digitalWrite(47, LOW);
digitalWrite(48, LOW);
digitalWrite(49, LOW);
digitalWrite(50, LOW);
digitalWrite(51, LOW);
digitalWrite(52, LOW);
digitalWrite(53, LOW);
}

Tengo en marcha una grua para subir una silla a maletero
Tu problema lo tengo resuelto desde la parte del programa android.
En la parte Arduino tengo esto que recibo por BlueTooth

if (dato == '3'){ digitalWrite(optoSaca,HIGH); delay(200); }
else if (dato == 'x'){ digitalWrite(optoSaca,LOW); }

Y la parte importante esta en el programa Android (escrita con Visual Basic para Android B4A)

Hay un evento del Botón que es Down y UP (en otros lenguajes será igual)

Sub BtSaca_Down 'Saca brazo
AStream.Write("3".GetBytes("UTF8"))
End Sub
Sub BtSaca_Up
AStream.Write("x".GetBytes("UTF8"))
End Sub

Si en el teléfono pulso el botón, mandará el 3 de forma continua (motor en marcha) y al soltarlo mado una x, el motor parará.
http://www.jopapa.me/genny.html

Espero te sirva

Jopapa
www.jopapa.me