Buenas! Llevo unos meses con este proyecto, es un tanque controlado por bluetooth a través de una app y arduino. La duda que tengo es la siguiente. Tengo un servo (MicroServo SG90) que voy a usar para controlar el giro de la torreta. El servo debe girar en concordancia con los dos botones que tengo en la app, derecha e izquierda únicamente, los valores de velocidad de giro ya los tengo calculados. El hecho es que al mandar por serie el valor tengo que hacerlo pulsando muchas veces y lo que quiero es poder mantener pulsado el botón en la app y que gire hasta que yo suelte. Os adjunto el programa. A al pulsar izquierda manda un valor de 70 y al pulsar derecha 110. Gracias de antemano.
#include <Servo.h>
Servo myservo;
int pos = 0;
void setup(){
Serial.begin(9600);
while (!Serial);
Serial.println("-------------------------");
Serial.println("ARos is loading....");
delay(1000);
Serial.println("ARos loaded succesfully");
Serial.println("-------------------------");
myservo.attach(9);
Serial.println("calibrating servo...");
for(pos = 0; pos <= 180; pos += 1)
myservo.write(0);
delay(1000);
myservo.write(180);
delay(1000);
myservo.write(90);
delay(1000);
Serial.println("servo calibrated");
Serial.println("-------------------------");
Serial.println("Comand input online, write command to perform action");
Serial.println("-------------------------");
}
void loop() {
for(pos = 0; pos <= 180; pos += 1)
if (Serial.available())
{
int state = Serial.parseInt();
if (state < 10)
{
Serial.print(">");
Serial.println(state);
Serial.println("cannost execute command, too low number");
}
if (state >= 10 && state < 170)
{
Serial.print(">");
Serial.println(state);
Serial.print("turning servo to ");
Serial.print(state);
Serial.println(" degrees");
delay(100);
myservo.write(state);
delay(150);
myservo.write(90);
}
}
}
#include <Servo.h>
Servo myservo;
int pos = 0;
void setup(){
Serial.begin(9600);
while (!Serial);
Serial.println("-------------------------");
Serial.println("ARos is loading....");
delay(1000);
Serial.println("ARos loaded succesfully");
Serial.println("-------------------------");
myservo.attach(9);
Serial.println("calibrating servo...");
for(pos = 0; pos <= 180; pos += 1)
myservo.write(0);
delay(1000);
myservo.write(180);
delay(1000);
myservo.write(90);
delay(1000);
Serial.println("servo calibrated");
Serial.println("-------------------------");
Serial.println("Comand input online, write command to perform action");
Serial.println("-------------------------");
}
void loop() {
for(pos = 0; pos <= 180; pos += 1)
if (Serial.available())
{
int state = Serial.parseInt();
if (state < 10)
{
Serial.print(">");
Serial.println(state);
Serial.println("cannost execute command, too low number");
}
if (state >= 10 && state < 170)
{
Serial.print(">");
Serial.println(state);
Serial.print("turning servo to ");
Serial.print(state);
Serial.println(" degrees");
delay(100);
myservo.write(state);
delay(150);
myservo.write(90);
}
}
}