1 of 11

Grua �Robotica

Iniciando la automatización

2 of 11

Introduccion

En este proyecto tenemos planeado usar 3 servomotores y motor paso a paso para un giro de 360 grados , para el movimiento de la grúa y poder levantar el objeto y dos joysticks como método para poder mover estos servomotores, controlando la grúa. Con el objetivo de poder levantar objetos.

3 of 11

Materiales

1

¿Qué necesitamos?

4 of 11

Materiales�

  • Arduino uno
  • 4 servomotores
  • Motor paso a paso
  • Protoboard
  • Cables Macho hembra
  • Palillos de madera
  • Tarjeta controlador de motor paso a paso
  • 2 Joysticks

5 of 11

Código

02

Para empezar

6 of 11

Código

#include <Servo.h>

#include <Stepper.h>

// Declaración de los servomotores

Servo servomotor3; // Servomotor pinza

Servo servomotor2; // Servomotor en medio

Servo servomotor1; // Servomotor abajo

// Declaración del motor de pasos

Stepper motor(2048, 4, 6, 5, 7);

// Pines de entrada del joystick 1

const int joyX1 = A0; // motor de pasos

const int joyY1 = A1; // servo 1

// Pines de entrada del joystick 2

const int joyX2 = A3; // servo 2

const int joyY2 = A4; // servo 3

// Variables de estado

int posServo1 = 90; // Posición inicial del servomotor 1

int posServo2 = 45; // Posición inicial del servomotor 2

int posServo3 = 0; // Posición inicial del servomotor 3

void setup() {

// Configuración de servomotores

servomotor1.attach(8);

servomotor2.attach(9);

servomotor3.attach(10);

// Configuración del motor de pasos

motor.setSpeed(10); // Velocidad del motor en RPM

// Inicialización de servos

servomotor1.write(posServo1);

servomotor2.write(posServo2);

servomotor3.write(posServo3);

}

void loop() {

bool moved = false;

// Leer joystick 1

int xValue1 = analogRead(joyX1); // Lectura del eje X para joystick 1

int yValue1 = analogRead(joyY1); // Lectura del eje Y para joystick 1

// Mover motor paso a paso (eje X)

if (xValue1 < 400) {

motor.step(-10); // Gira hacia la izquierda

moved = true;

} else if (xValue1 > 600) {

motor.step(10); // Gira hacia la derecha

moved = true;

}

// Mover servo 1 (eje Y)

if (yValue1 < 400) {

posServo1 = constrain(posServo1 -1, 90, 170);

servomotor1.write(posServo1);

moved = true;

delay(35);

} else if (yValue1 > 600) {

posServo1 = constrain(posServo1 + 1, 90, 170);

servomotor1.write(posServo1);

moved = true;

delay(35);

}

7 of 11

Código

// Joystick 2

int xValue2 = analogRead(joyX2); // Eje del eje X para joystick 2

int yValue2 = analogRead(joyY2); // Eje Y para joystick 2

// Mover servo 2 (eje X)

if (xValue2 < 400) {

posServo2 = constrain(posServo2 - 1, 0, 90);

servomotor2.write(posServo2);

moved = true;

} else if (xValue2 > 600) {

posServo2 = constrain(posServo2 + 1, 0, 90);

servomotor2.write(posServo2);

moved = true;

}

delay(25);

// Mover servo 3 (eje Y)

if (yValue2 < 400) {

posServo3 = constrain(posServo3 - 1, 0, 45);

servomotor3.write(posServo3);

moved = true;

} else if (yValue2 > 600) {

posServo3 = constrain(posServo3 + 1, 0, 45);

servomotor3.write(posServo3);

moved = true;

}

delay(5);

}

8 of 11

Circuito

03

Para empezar

9 of 11

Circuito

10 of 11

Resultado

04

Para empezar

11 of 11

Resultado