Paso 5: Probar / controlar
El método más fácil de controlar la talcapults es manualmente con vía electrónica del coche, pero hay un montón de otros métodos que pueden utilizarse para controlar la talcapult.Aquí es código arduino que he utilizado para el control de dos talcapults, utiliza sensores de infrarrojos como el tipo descrito en mi etiqueta de duino instructable.
Código:
(No mi mejor trabajo, pero puede dar ideas)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include
Servo1 servo; crear objeto servo para controlar un servo
Servo servo2;
int pos = 90; variable para almacenar la posición del servo
int pos2 = 90; 2 º servo
límites de int = 90;
sensor int = 5;
int sensor2 = 4;
int inputPin = 12;
activa int = 0;
int led = 2;
int val = 0;
int whichServo = 0;
Ruta int [10];
int i = 0;
void setup()
{
Serial.Begin(9600);
servo1.Attach(9); se fija el servo en el pin 9 al objeto servo
servo2.Attach(8);
pinMode (sensor de entrada);
pinMode (sensor2, entrada);
pinMode (inputPin, entrada);
pinMode (led, salida);
digitalWrite (inputPin, HIGH);
Serial.println("Ready");
}
void loop() {}
Val = digitalRead(inputPin);
Si (val == LOW) {}
if(Active == 1) {}
activo = 0;
Delay(300);
Val = alta;
Ruta [0] = 90;
Ruta [1] = 120;
Ruta [2] = 120;
Ruta [3] = 120;
Ruta [4] = 120;
Ruta [5] = 120;
Ruta [6] = 120;
Ruta [7] = 120;
Ruta [8] = 120;
Ruta [9] = 120;
servoroute1();
servoroute2();
Serial.println("Safe");
}
Else {}
activo = 1;
Delay(300);
Val = alta;
Ruta [0] = 120;
Ruta [1] = 120;
Ruta [2] = 120;
Ruta [3] = 120;
Ruta [4] = 120;
Ruta [5] = 120;
Ruta [6] = 120;
Ruta [7] = 120;
Ruta [8] = 120;
Ruta [9] = 90;
servoroute1();
servoroute2();
Serial.println("Active");
}
}
Si (digitalRead(sensor) == baja & & activa == 1) {}
whichServo = 2;
Si (digitalRead(sensor2) == HIGH) {}
whichServo = 1;
}
Serial.Print ("golpe. Servo de fuego: ");
Serial.println(whichServo);
fireTalcapult();
Delay(30);
}
servo1.Write(POS); Dile el servo a la posición en la variable 'pos'
servo2.Write(POS2);
Si (activo == 1) {}
digitalWrite (led, alto);
Serial.println("active1");
}
Else {}
digitalWrite (led, baja);
Serial.println("safe1");
}
}
void fireTalcapult() {}
Serial.println("Fire");
Subrutina para el movimiento suave de un servo sobre una ruta compleja
Ruta [0] = 20;
Ruta [1] = 120;
Ruta [2] = 130;
Ruta [3] = 100;
Ruta [4] = 90;
Ruta [5] = 90;
Ruta [6] = 90;
Ruta [7] = 90;
Ruta [8] = 90;
Ruta [9] = 90;
if(whichServo == 1) {}
Salto rápido inicial
pos = ruta [0];
servo1.Write(POS);
Delay(300);
Permite un desplazamiento suave
servoroute1();
}
if(whichServo == 2) {}
Salto rápido inicial
POS2 = ruta [0];
servo2.Write(POS2);
Delay(300);
Permite un desplazamiento suave
servoroute2();
}
}
void servoroute1() {}
mientras (i < 10) {}
Si (pos > {route[i])}
pos = pos - 1;
}
Si (pos < route[i]) {}
pos = pos + 1;
}
Si (pos == {} route[i])
i = i + 1;
}
servo1.Write(POS);
Delay(10);
}
i = 0;
}
void servoroute2() {}
mientras (i < 10) {}
Si (pos2 > {route[i])}
POS2 = pos2 - 1;
}
Si (pos2 < route[i]) {}
POS2 = pos2 + 1;
}
Si (pos2 == {} route[i])
i = i + 1;
}
servo2.Write(POS2);
Delay(10);
}
i = 0;
}