Buenas, he hecho un programa para controlar unos servos. Es para un proyecto de un tanque, un servo mueve el cañón verticalmente y el otro gira la torreta. La app que uso para mandar datos por serial manda números como: 5,10,12,15,20(cañón) y 11,45,135,179(torreta).
El caso es que quiero que cuando mande los números de torreta únicamente se mueva esta y lo mismo con el cañón. Lo he hecho con un switch case convirtiendo los números a tipo char.
Mande lo que le mande no hace nada. Está conectado con una fuente de alimentación para evitar problemas de falta de corriente. Por separado funcionan bien, asi que probablemente el fallo sea mío de programación...
Si hay alguna alternativa mejor a usar switch case comentármelo por favor, muchas gracias.
#include <Servo.h>
//Definimos una constante para el pin del servo:
// el 9 tiene que ir al del cañon
#define PIN_SERVO 9
#define PIN_SERVO2 10
int valor;
//Creamos un objeto de clase 'Servo':
Servo servo1; //cañon
Servo servo2; //torreta
void setup() {
//Vinculamos el servo1 al pin definido por PIN_SERVO:
servo1.attach(PIN_SERVO);
servo2.attach(PIN_SERVO2);
//Inicializamos el serial a 9600 baudios:
Serial.begin(9600);
servo1.write(10);
}
void loop() {
//Comprobamos si llega algún mensaje por serial:
if(Serial.available() > 0)
{
//Leemos el entero que llega por Serial:
String mensaje = Serial.readString();
//Eliminamos los carácteres \r \n \0, etc (finales de línea):
mensaje.trim();
//Convertimos el mensaje a entero:
int posicion = mensaje.toInt();
//Movemos el servo:
Serial.println(Serial.available());
valor=Serial.available();
switch (valor){
case '0':
servo1.write(posicion);
delay(100);
break;
case'5':
servo1.write(posicion);
delay(100);
break;
case '8':
servo1.write(posicion);
delay(100);
break;
case '♀':
servo1.write(posicion);
delay(100);
break;
case '☼':
servo1.write(posicion);
delay(100);
break;
case '¶':
servo1.write(posicion);
delay(100);
break;
}
switch (valor){
case '1':
servo2.write(posicion);
delay(100);
break;
case '-':
servo2.write(posicion);
delay(100);
break;
case '6':
servo2.write(posicion);
delay(100);
break;
case 'ç':
servo2.write(posicion);
delay(100);
break;
case '|':
servo2.write(posicion);
delay(100);
break;
}
//Escribimos la nueva posicion del servo:
Serial.print("Posicion: ");
Serial.print(posicion);
Serial.print("\n");
}
}