En este vídeo se muestra una de las principales características del robot Andromina; sus 4 ruedas direccionales girando de 90 grados a 0º y a 180º. Los 4 servos que controlan las 4 ruedas pueden girar independientemente unos de otros.
El "Mars Rover" con sus ruedas multidireccionales. |
Montaje de pruebas realizado |
Esquema realizado. |
Programa de prueba del Robot Andromina, de control de los 4 servos por la libreria
Estos valores los he probado con 4 servos y con una pila de 7,2v
Funciona bien sin saltos y movimiento continuo.
Posición mínima: 450 micro Seg.
Posición para 0º: 500 micro Seg.
Posición para 90º: 1300 micro mSeg.
Posición para 180º: 2100 micro Seg.
Posición máxima: 2200 micro Seg.
*//// Declaración de las variables ////////////////////////////////////////////////////
#include <Servo.h>
int salida_6=6; // pin por el que mandaremos un tren de pulsos
int salida_9=9; // pin por el que mandaremos un tren de pulsos
int salida_10=10; // pin por el que mandaremos un tren de pulsos
int salida_11=11; // pin por el que mandaremos un tren de pulsos
Servo servo_6;
Servo servo_9;
Servo servo_10;
Servo servo_11;
//// Configuración del Arduino ////////////////////////////////////////////////////////
void setup(){
Serial.begin(115200); // Velocidad de conexión entre el PC y el Arduino
servo_6.attach(salida_6);
servo_9.attach(salida_9);
servo_10.attach(salida_10);
servo_11.attach(salida_11);}
//// Inico de programa //////////////////////////////////////////////////////////
void loop(){
delay(3000); // Espera tres segundos antes de empezar
servo_6.writeMicroseconds(500); // coloca el servo en posición 0º
servo_9.writeMicroseconds(500); // coloca el servo en posición 0º
servo_10.writeMicroseconds(500); // coloca el servo en posición 0º
servo_11.writeMicroseconds(500); // coloca el servo en posición 0º
Serial.print("Pulso= 500, 0 grados \n "); // Imprime en pantalla la posición
delay(3000); // Espera dos segundos antes de empezar
servo_6.writeMicroseconds(1300); // coloca el servo en posición 90º
servo_9.writeMicroseconds(1300); // coloca el servo en posición 90º
servo_10.writeMicroseconds(1300); // coloca el servo en posición 90º
servo_11.writeMicroseconds(1300); // coloca el servo en posición 90º
Serial.print("Pulso= 1300, 90 grados \n"); // Imprime en pantalla la posición
delay(3000);
servo_6.writeMicroseconds(2100); // coloca el servo en 180º
servo_9.writeMicroseconds(2100); // coloca el servo en 180º
servo_10.writeMicroseconds(2100); // coloca el servo en 180º
servo_11.writeMicroseconds(2100); // coloca el servo en 180º
Serial.print("Pulso= 2100, 180 grados \n"); // Imprime en pantalla la posición
delay(3000);
servo_6.writeMicroseconds(1300); // coloca el servo en posición 90º
servo_9.writeMicroseconds(1300); // coloca el servo en posición 90º
servo_10.writeMicroseconds(1300); // coloca el servo en posición 90º
servo_11.writeMicroseconds(1300); // coloca el servo en posición 90º
Serial.print("Pulso= 1300, 90 grados \n"); // Imprime en pantalla la posición
delay(3000);
servo_6.writeMicroseconds(2100); // coloca el servo en posición 180º
servo_9.writeMicroseconds(2100); // coloca el servo en posición 180º
servo_10.writeMicroseconds(2100); // coloca el servo en posición 180º
servo_11.writeMicroseconds(2100); // coloca el servo en posición 180º
Serial.print("Pulso= 2100, 180 grados \n");} // Imprime en pantalla la posición
//// Fin del programa ////////////////////////////////////////////////////
No hay comentarios :
Publicar un comentario