Buenas, tengo un programa con varios motores paso a paso, la cuestión es que en esta parte del programa, cuando llega a los pasos indicados el motor se para, que es lo que yo quiero:
if (BTval=='e'){
while (BTval != '0' && cont4<500)
{
digitalWrite(dirPin3,LOW);
digitalWrite(stepPin3,HIGH);
BTval=Serial.read();
delayMicroseconds(vel3);
digitalWrite(stepPin3,LOW);
BTval=Serial.read();
delayMicroseconds(vel3);
cont4++;
fc4= digitalRead(final4);
}
}
Ahora intento hacer lo mismo con otro motor controlado por un MPU Gy521, quiero que cuando la posición x sea superior o igual a 16 se pare. Cuando es mayor de 16 no me deja actuar pero si es menor pasa de 16 y no se para. ¿Como puedo hacer para que lea esa posición mientras pulso ‘g’?
if (BTval=='g') {
while (BTval != '0' && accel_ang_x <= 16.00){
mpu.getAcceleration(&ax, &ay, &az); // Leer las aceleraciones
//Calcular los angulos de inclinacion
float accel_ang_x = atan(ax / sqrt(pow(ay, 2) + pow(az, 2)))*(180.0 / 3.14);
float accel_ang_y = atan(ay / sqrt(pow(ax, 2) + pow(az, 2)))*(180.0 / 3.14);
digitalWrite(dirPin4,LOW);
digitalWrite(dirPin5,LOW);
digitalWrite(stepPin4,HIGH);
digitalWrite(stepPin5,HIGH);
BTval=Serial.read();
delayMicroseconds(vel4);
digitalWrite(stepPin4,LOW);
digitalWrite(stepPin5,LOW);
BTval=Serial.read();
delayMicroseconds(vel4);
BTval=Serial.read();
accel_ang_x=Wire.read();
accel_ang_x=Serial.read();
accel_ang_y=Wire.read();
accel_ang_y=Serial.read();
}
}