0% encontró este documento útil (0 votos)
13 vistas4 páginas

Programación de brazo robótico Arduino

Este código controla 12 servomotores para simular las articulaciones de un brazo robótico. Define los pines de la placa Arduino para cada servomotor y las velocidades de movimiento. Incluye funciones para mover los brazos y piernas a ángulos específicos con una velocidad determinada, y para cambiar la velocidad de movimiento al presionar un botón.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
13 vistas4 páginas

Programación de brazo robótico Arduino

Este código controla 12 servomotores para simular las articulaciones de un brazo robótico. Define los pines de la placa Arduino para cada servomotor y las velocidades de movimiento. Incluye funciones para mover los brazos y piernas a ángulos específicos con una velocidad determinada, y para cambiar la velocidad de movimiento al presionar un botón.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

#include <Servo.

h> // Incluimos la librería Servo

// Definimos los pines de Arduino para cada servo


const int pinHombroDerecho = 2;
const int pinCodoDerecho = 3;
const int pinMunecaDerecha = 4;
const int pinPinzaDerecha = 5;
const int pinHombroIzquierdo = 6;
const int pinCodoIzquierdo = 7;
const int pinMunecaIzquierda = 8;
const int pinPinzaIzquierda = 9;
const int pinCaderaDerecha = 10;
const int pinRodillaDerecha = 11;
const int pinCaderaIzquierda = 12;
const int pinRodillaIzquierda = 13;

Servo servoHombroDerecho;
Servo servoCodoDerecho;
Servo servoMunecaDerecha;
Servo servoPinzaDerecha;
Servo servoHombroIzquierdo;
Servo servoCodoIzquierdo;
Servo servoMunecaIzquierda;
Servo servoPinzaIzquierda;
Servo servoCaderaDerecha;
Servo servoRodillaDerecha;
Servo servoCaderaIzquierda;
Servo servoRodillaIzquierda;

// Definimos las velocidades para los 3 tipos de movimiento


const int velocidadLenta = 10; // Retardo en milisegundos para movimientos lentos
const int velocidadMedia = 5; // Retardo en milisegundos para movimientos medianos
const int velocidadRapida = 2; // Retardo en milisegundos para movimientos rápidos

// Definimos el pin para el botón de cambio de velocidad


const int pinBoton = 14;
int velocidadActual = velocidadMedia; // Velocidad inicial

void setup() {
// Asignamos los pines para cada servo
[Link](pinHombroDerecho);
[Link](pinCodoDerecho);
[Link](pinMunecaDerecha);
[Link](pinPinzaDerecha);
[Link](pinHombroIzquierdo);
[Link](pinCodoIzquierdo);
[Link](pinMunecaIzquierda);
[Link](pinPinzaIzquierda);
[Link](pinCaderaDerecha);
[Link](pinRodillaDerecha);
[Link](pinCaderaIzquierda);
[Link](pinRodillaIzquierda);

// Inicializamos el botón como entrada


pinMode(pinBoton, INPUT_PULLUP);

// Posición inicial de los servos (ángulo neutral)


setServoAngles(90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90);
}

void loop() {
// Leemos el estado del botón y cambiamos la velocidad si está presionado
if (digitalRead(pinBoton) == LOW) {
delay(200); // Debounce para evitar lecturas erráticas
cambiarVelocidad();
}

// Movimiento de brazos y piernas con la velocidad actual


// Brazos - Movimiento lento
moveArm(servoHombroDerecho, 130, velocidadActual);
moveArm(servoHombroDerecho, 90, velocidadActual);
moveArm(servoHombroIzquierdo, 50, velocidadActual);
moveArm(servoHombroIzquierdo, 90, velocidadActual);

// Piernas - Movimiento lento


moveLeg(servoCaderaDerecha, 50, velocidadActual);
moveLeg(servoRodillaDerecha, 120, velocidadActual);
moveLeg(servoCaderaIzquierda, 130, velocidadActual);
moveLeg(servoRodillaIzquierda, 120, velocidadActual);
}

// Función para cambiar la velocidad actual


void cambiarVelocidad() {
if (velocidadActual == velocidadLenta) {
velocidadActual = velocidadMedia;
} else if (velocidadActual == velocidadMedia) {
velocidadActual = velocidadRapida;
} else {
velocidadActual = velocidadLenta;
}
}

// Función para establecer los ángulos de los servos de los brazos con una velocidad
determinada
void moveArm(Servo servo, int angle, int velocidad) {
int initialAngle = [Link]();
if (angle > initialAngle) {
for (int a = initialAngle; a <= angle; a++) {
[Link](a);
delay(velocidad);
}
} else {
for (int a = initialAngle; a >= angle; a--) {
[Link](a);
delay(velocidad);
}
}
}

// Función para establecer los ángulos de los servos de las piernas con una velocidad
determinada
void moveLeg(Servo servo, int angle, int velocidad) {
int initialAngle = [Link]();
if (angle > initialAngle) {
for (int a = initialAngle; a <= angle; a++) {
[Link](a);
delay(velocidad);
}
} else {
for (int a = initialAngle; a >= angle; a--) {
[Link](a);
delay(velocidad);
}
}
}

// Función para establecer los ángulos de todos los servos a la vez


void setServoAngles(int hombroDerecho, int codoDerecho, int munecaDerecha, int
pinzaDerecha,
int hombroIzquierdo, int codoIzquierdo, int munecaIzquierda, int pinzaIzquierda,
int caderaDerecha, int rodillaDerecha, int caderaIzquierda, int rodillaIzquierda) {
[Link](hombroDerecho);
[Link](codoDerecho);
[Link](munecaDerecha);
[Link](pinzaDerecha);
[Link](hombroIzquierdo);
[Link](codoIzquierdo);
[Link](munecaIzquierda);
[Link](pinzaIzquierda);
[Link](caderaDerecha);
[Link](rodillaDerecha);
[Link](caderaIzquierda);
[Link](rodillaIzquierda);
}

● Se agrega un nuevo pin pinBoton para el botón de cambio de velocidad, que debe ser
conectado a la placa Arduino y configurado como una entrada con resistencia pull-up
interna.
● La variable velocidadActual se utiliza para almacenar la velocidad actual seleccionada,
inicializada con la velocidad media.
● En el loop(), leemos el estado del botón con digitalRead(pinBoton) y llamamos a la
función cambiarVelocidad() si el botón está presionado. La función cambiarVelocidad()
cambia la velocidad actual al siguiente nivel.
● Los movimientos de brazos y piernas se realizan llamando a las funciones moveArm() y
moveLeg(), respectivamente, utilizando la velocidad actual seleccionada.
● La función cambiarVelocidad() actualiza velocidadActual para cambiar la velocidad entre
lenta, media y rápida en cada pulsación del botón.
● Las funciones moveArm() y moveLeg() ahora incluyen un parámetro adicional velocidad,
que determina el retardo entre cada incremento o decremento de posición de los
servomotores.

También podría gustarte