Grua �Robotica
Iniciando la automatización
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.
Materiales
1
¿Qué necesitamos?
Materiales�
Código
02
Para empezar
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);
}
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);
}
Circuito
03
Para empezar
Circuito
Resultado
04
Para empezar
Resultado