Hola compañeros, he estado trabajando en un brazo robotico con 5 servos, hasta ahora consegui hacer 3 codigos que se usan para distintos tipos de movimientos, los cuales por separado me han funcionado casi sin fallos, pero el problema es cuando quiero juntar los 3 codigos en uno solo, mi idea es que cada codigo funcione a modo de perfil, por ejemplo, codigo 1 = perfil 1 el cual lo tengo asignado a un 1 pulsador y que empiece a correr, despues si quiero cambiar a otro modo de movimiento acciono el pulsador del perfil 2 y asi para los 3 "perfiles".
De momento no he tenido la posibildad de comprobarlos directamente en el brazo porque queme el arduino xd y todavia espero a que me llegue el otro que encargue, pero quiera ver si pudieran echarle un vistazo y ver en que me equivoque porque estoy seguro que cometi muchos de un errores.
De antemano muchas gracias.
#include <Servo.h>
Servo servo;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
int botA = 0;
int botB = 1;
int botC = 2;
int configA = LOW;
int configB = LOW;
int configC = LOW;
int izq1 = 5;
int izq2 = 7;
int izq3 = 9;
int izq4 = 11;
int izq5 = 13;
int der1 = 6;
int der2 = 8;
int der3 = 10;
int der4 = 12;
int der5 = A0;
int der_estado1;
int izq_estado1;
int der_estado2;
int izq_estado2;
int der_estado3;
int izq_estado3;
int der_estado4;
int izq_estado4;
int der_estado5;
int izq_estado5;
int angulo = 0;
int angulo2 = 0;
int angulo3 = 0;
int angulo4 = 0;
int angulo5 = 0;
void setup()
{
Serial.begin(9600);
pinMode (izq1, INPUT);
pinMode (der1, INPUT);
pinMode (izq2, INPUT);
pinMode (der2, INPUT);
pinMode (izq3, INPUT);
pinMode (der3, INPUT);
pinMode (izq4, INPUT);
pinMode (der4, INPUT);
pinMode (izq5, INPUT);
pinMode (der5, INPUT);
pinMode (botA, INPUT);
pinMode (botB, INPUT);
pinMode (botC, INPUT);
servo.attach(A4); //palma
servo2.attach(3); //pulgar
servo3.attach(A5); //indice
servo4.attach(A3); //medio
servo5.attach(4); //anular y meñique
servo.write(angulo);
servo2.write(angulo2);
servo3.write(angulo3);
servo4.write(angulo4);
servo5.write(angulo5);
}
void loop()
{
izq_estado1 = digitalRead(izq1);
der_estado1 = digitalRead(der1);
izq_estado2 = digitalRead(izq2);
der_estado2 = digitalRead(der2);
izq_estado3 = digitalRead(izq3);
der_estado3 = digitalRead(der3);
izq_estado4 = digitalRead(izq4);
der_estado4 = digitalRead(der4);
izq_estado5 = digitalRead(izq5);
der_estado5 = digitalRead(der5);
configA = digitalRead(botA);
configB = digitalRead(botB);
configC = digitalRead(botC);
if (configA == HIGH) {
delay(50);
if (configA == HIGH) {
if(der_estado1 == HIGH)
{
angulo++;
if (angulo >= 90)
{
angulo = 90;
}
}
if(izq_estado1 == HIGH)
{
angulo--;
if (angulo <= 0)
{
angulo = 0;
}
}
servo.write(angulo);
delay(10);
if(der_estado2 == HIGH)
{
angulo2++;
if (angulo >= 180)
{
angulo2 = 180;
}
}
if(izq_estado2 == HIGH)
{
angulo2--;
if (angulo2 <= 0)
{
angulo2 = 0;
}
}
servo2.write(angulo2);
delay(10);
if(der_estado3 == HIGH)
{
angulo3++;
if (angulo3 >= 180)
{
angulo3 = 180;
}
}
if(izq_estado3 == HIGH)
{
angulo3--;
if (angulo3 <= 0)
{
angulo3 = 0;
}
}
servo3.write(angulo3);
delay(10);
if(der_estado4 == HIGH)
{
angulo4++;
if (angulo4 >= 180)
{
angulo4 = 180;
}
}
if(izq_estado4 == HIGH)
{
angulo4--;
if (angulo4 <= 0)
{
angulo4 = 0;
}
}
servo4.write(angulo4);
delay(10);
if(der_estado5 == HIGH)
{
angulo5++;
if (angulo5 >= 180)
{
angulo5 = 180;
}
}
if(izq_estado5 == HIGH)
{
angulo5--;
if (angulo5 <= 0)
{
angulo5 = 0;
}
}
servo5.write(angulo5);
delay(10);
}
}
if (configB == HIGH) {
delay(50);
if (configB == HIGH) {
servo.write(0);
delay(1000);
servo.write(90);
delay(1000);
servo2.write(0);
delay(2000);
servo2.write(120);
delay(2000);
servo3.write(0);
delay(1000);
servo3.write(120);
delay(1000);
servo4.write(0);
delay(2000);
servo4.write(120);
delay(2000);
servo5.write(0);
delay(1000);
servo5.write(120);
delay(1000);
}
}
if (configC == HIGH) {
delay(50);
if (configC == HIGH) {
//1//
servo.write(90);
servo2.write(120);
servo3.write(0);
servo4.write(120);
servo5.write(120);
delay(1000);
//2//
servo.write(90);
servo2.write(120);
servo3.write(0);
servo4.write(0);
servo5.write(120);
delay(2000);
//3//
servo.write(0);
servo2.write(0);
servo3.write(0);
servo4.write(0);
servo5.write(120);
delay(1000);
//4//
servo.write(90);
servo2.write(120);
servo3.write(0);
servo4.write(0);
servo5.write(0);
delay(2000);
//5//
servo.write(0);
servo2.write(0);
servo3.write(0);
servo4.write(0);
servo5.write(0);
delay(1000);
}
}
}