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);
}