Fazer um projecto

olá a todos.
eu estou a iniciar-me no arduino e queria fazer o seguinte projecto:
um carro com dois motores, que andasse para frente, traz e lados... e que tivesse um servo na parte da frente para girar uma camara para cina e baixo... isto depois (camara e arduino) é ligado ao PC por USB e controlado por teclas (w,a,s,d e v,b).
mas para fazer isto preciso da vossa ajuda. encontrei um codigo de um arduino que controla dois servos será que posso meter o codigo no meu arduino?

#include <Servo.h>
int minPulse1 = 0; // minimum servo position
int maxPulse1 = 180; // maximum servo position
int turnRate1 = 10; // servo turn rate increment (larger value, faster rate)
int minPulse2 = 0; // minimum servo position
int maxPulse2 = 180; // maximum servo position
int turnRate2 = 10; // servo turn rate increment (larger value, faster rate)
int buttonPin = 13; // pin that the trigger will be connected to
/** The Arduino will calculate these values for you **/
int centerServo1;
int centerServo2;
int pulseWidth1; // servo pulse width
int pulseWidth2; // servo pulse width

Servo servo1;
Servo servo2;

void setup() {
pinMode(buttonPin, OUTPUT);
servo1.attach(9);
servo2.attach(10);
centerServo1 = maxPulse1 - ((maxPulse1 - minPulse1)/2);
centerServo2 = maxPulse2 - ((maxPulse2 - minPulse2)/2);
pulseWidth1 = centerServo1;
pulseWidth2 = centerServo2;
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
Serial.println(" Arduino Serial Servo Control");
Serial.println("Press a, s, d, or w to move, spacebar to center, and f to fire");
Serial.println();
}

void loop() {

// check for serial input
if (Serial.available() > 0) {

int data = Serial.read(); // read the incoming byte:
digitalWrite(buttonPin, LOW); // turn the pin off on any incoming data
switch(data)
{
case 'a' : pulseWidth1 = pulseWidth1 - turnRate1; break;
case 'd' : pulseWidth1 = pulseWidth1 + turnRate1; break ;
case ' ' : pulseWidth1 = pulseWidth2 = centerServo1; break;
case 's' : pulseWidth2 = pulseWidth2 - turnRate1; break;
case 'w' : pulseWidth2 = pulseWidth2 + turnRate1; break ;
case 'f' : digitalWrite(buttonPin, HIGH); delay (1000); digitalWrite(buttonPin, LOW); break;

}
// stop servo pulse at min and max
if (pulseWidth1 > maxPulse1) { pulseWidth1 = maxPulse1; }
if (pulseWidth1 < minPulse1) { pulseWidth1 = minPulse1; }

// stop servo pulse at min and max
if (pulseWidth2 > maxPulse2) { pulseWidth2 = maxPulse2; }
if (pulseWidth2 < minPulse2) { pulseWidth2 = minPulse2; }

servo1.write(pulseWidth1);
servo2.write(pulseWidth2);

// print pulseWidth back to the Serial Monitor (uncomment to debug)
Serial.print("Servo 1: ");
Serial.print(pulseWidth1);
Serial.print(" Servo 2: ");
Serial.print(pulseWidth2);
Serial.println("degrees");
}
}

Olá divadfoj,

Analisando este código, percebi que ele controla 2 servos, sendo, teclas "a" e "d" controlam o servo 1, e as teclas "w" e "s" controlam o servo 2. Além disso ao pressionar a tecla "f", é enviado um pulso para o pino 13 com duração de 1s e logo o pulso é desligado (para que fim isto foi feito, não deu pra entender). Bom... é um código que funciona, e no seu caso, pelo que entendi, você terá uma câmera que será controlada por um servo, neste caso, você pode "enxugar" este código para ele apenas controlar somente 1 servo, e quanto à parte de controle dos motores, precisa ver como você vai querer fazer, controle de rotação, sentido, vai usar uma ponte-H para controlá-los, etc.

Abs.

Olá
Este codigo era para disparar foguetes. Eu quero é controlar o arduino pelo Pc e no arduino tenho 2 servos com rotaçao continua para andar... e tenho um servo de mexe a câmara para cima e para baixo.
No movimento do robot eu queria fazer tipo diferrential drive (para virar um servo anda para a frente e outro anda para tras).
Tenho é duvidas na parte da programação , que tipo de codigo é que meto para controlar o robot pelas teclas (AWSD) e de forma que ele só pare quando eu tirasse o dedo da tecla.

Se podessem postar alguns Pseudo-codes ou ajudas agradecia bastante.

Cumps Divadfoj