Paso 9: Programar el paseo
Caminar hacia adelante
Si se potencia para el Arduino ejecuta el código que hace pivotar solamente un servo (véase la sección anterior de "Mover el Servo"), comienza a mecerse en su frente o las patas traseras. Caminar hacia adelante requiere coordinación entre la frente y las patas traseras. Cuando los servos se mueven en el mismo tempo, pero en direcciones opuestas, el robot comienza a caminar. Aquí está algo de código que hará que el robot caminar hacia adelante:
Echemos un vistazo al código:
1. esta es la posición de central para los servos. Noventa grados es precisamente la mitad de la rotación de 180 grados posibles.
2. máxima posición la pata delantera derecha subirá a.
3. máxima posición la pierna delantera izquierda se elevará a. 4. máxima posición la pierna trasera derecha se dobla a. 5. máxima posición la pata trasera izquierda se dobla a.
6. la función moveForward convierte los servos primero en direcciones opuestas. Las variables definidas en las líneas anteriores establecer hasta qué punto cada uno de los servos girarán. Antes en otra dirección, diremos que los servos giren hacia un punto central predefinido por un corto periodo de tiempo. Esto asegura que los servos no comienzan a la deriva fuera de sincronización. Volvemos al punto central al final de cada paso para hacer el paseo más elegante y eficiente.
7. llamar a la función moveForward varias veces dentro del bucle, que hará que nuestro robot mover un paso hacia adelante. El retraso posterior controla el tiempo que espera el robot antes de tomar su próximo paso. Eliminar el retraso equivale a tener el robot correr tan rápido como sea posible.
// walkerForward.pde - Two servo walker. Forward.<br>// (c) Kimmo Karvinen & Tero Karvinen <a href="http://BotBook.com" rel="nofollow"> http://BotBook.com </a> // updated - Joe Saavedra, 2010 #include Servo frontServo; Servo rearServo; int centerPos = 90; 1 int frontRightUp = 72; 2 int frontLeftUp = 108; 3 int backRightForward = 75; 4 int backLeftForward = 105;5 void moveForward() 6 { frontServo.write(frontRightUp); <p>rearServo.write(backLeftForward);<br>delay(125); frontServo.write(centerPos); rearServo.write(centerPos); delay(65); frontServo.write(frontLeftUp); rearServo.write(backRightForward); delay(125); frontServo.write(centerPos); rearServo.write(centerPos); delay(65); } void setup() { frontServo.attach(2); rearServo.attach(3); } void loop() { moveForward(); 7 delay(150); //time between each step taken, speed of walk }</p>