codigo del brazo robotico
#include <Servo.h>
// ======== OBJETOS SERVO ========
Servo servoBase;
Servo servoHombro;
Servo servoCodo;
Servo servoGarra;
// ======== PINES DE SERVOS ========
const int pinBase = 5; // Servo base
const int pinHombro = 6; // Servo hombro
const int pinCodo = 9; // Servo codo
const int pinGarra = 10; // Servo garra
// ======== PINES DE BOTONES ========
const int btnBaseIzq = 2;
const int btnBaseDer = 3;
const int btnHombroArr = 4;
const int btnHombroAba = 7;
const int btnCodoExt = 8;
const int btnCodoRec = 11;
const int btnGarraAbr = 12;
const int btnGarraCer = 13;
// ======== VARIABLES DE ÁNGULOS ========
int angBase = 90;
int angHombro = 90;
int angCodo = 90;
int angGarra = 90;
// ======== CONFIGURACIÓN INICIAL ========
void setup() {
// Conectar servos
servoBase.attach(pinBase);
servoHombro.attach(pinHombro);
servoCodo.attach(pinCodo);
servoGarra.attach(pinGarra);
// Configurar botones (con resistencias internas)
pinMode(btnBaseIzq, INPUT_PULLUP);
pinMode(btnBaseDer, INPUT_PULLUP);
pinMode(btnHombroArr, INPUT_PULLUP);
pinMode(btnHombroAba, INPUT_PULLUP);
pinMode(btnCodoExt, INPUT_PULLUP);
pinMode(btnCodoRec, INPUT_PULLUP);
pinMode(btnGarraAbr, INPUT_PULLUP);
pinMode(btnGarraCer, INPUT_PULLUP);
// Posición inicial de los servos
servoBase.write(angBase);
servoHombro.write(angHombro);
servoCodo.write(angCodo);
servoGarra.write(angGarra);
Serial.begin(9600);
Serial.println("🤖 Brazo robótico listo ✅");
}
// ======== BUCLE PRINCIPAL ========
void loop() {
// ---- Servo Base ----
if (digitalRead(btnBaseIzq) == LOW) moverServo(servoBase, angBase, -1);
if (digitalRead(btnBaseDer) == LOW) moverServo(servoBase, angBase, 1);
// ---- Servo Hombro ----
if (digitalRead(btnHombroArr) == LOW) moverServo(servoHombro, angHombro, 1);
if (digitalRead(btnHombroAba) == LOW) moverServo(servoHombro, angHombro, -1);
// ---- Servo Codo ----
if (digitalRead(btnCodoExt) == LOW) moverServo(servoCodo, angCodo, 1);
if (digitalRead(btnCodoRec) == LOW) moverServo(servoCodo, angCodo, -1);
// ---- Servo Garra ----
if (digitalRead(btnGarraAbr) == LOW) moverServo(servoGarra, angGarra, 1);
if (digitalRead(btnGarraCer) == LOW) moverServo(servoGarra, angGarra, -1);
}
// ======== FUNCIÓN PARA MOVER SERVOS ========
void moverServo(Servo &servo, int &angulo, int cambio) {
int nuevoAngulo = angulo + cambio;
if (nuevoAngulo >= 0 && nuevoAngulo <= 180) {
angulo = nuevoAngulo;
servo.write(angulo);
delay(15); // Controla la velocidad del movimiento
}
}

Comentarios
Publicar un comentario