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

Entradas populares