Plataforma móvil controlada con Arduino, joystick y servos

Funcionamiento

Este proyecto tiene como objetivo diseñar y construir una plataforma móvil, cuya estructura base está hecha de cartón en forma cuadrada. Utilizando una placa Arduino como núcleo de control, la plataforma será capaz de levantarse mediante el movimiento de cuatro servomotores de 5V, los cuales serán controlados por un joystick. Este proyecto combina conceptos de electrónica, programación y diseño mecánico, ideal para aprender y poner en práctica conocimientos de robótica básica.


Componentes

  • Arduino (cualquier modelo, como Arduino Uno).
  • 4 Servomotores de 5V.
  • 1 Joystick (módulo con dos ejes X/Y y botón pulsador integrado).(KY-006)
  • Cableado y jumpers para conexiones eléctricas.
  • Fuente de alimentación 5v.
  • Cartón
  • Hilo.

Conexiones

  • Conecta los pines del joystick:
  • VCC a 5V de la fuente de alimentación.
  • GND a GNDde la fuente de alimentación.
  • VRx a A0 (para eje X).
  • VRy a A1 (para eje Y).
  • Conecta los servos:
  • Conecta todos los sevo motores a la fuente de alimentación, GND a GND y VCC a 5v
  • Servo 1(eje Y positivo): pin de señal a pin 5 del arduino.
  • Servo 2(eje X positivo): pin de señal a pin 6 del arduino.
  • Servo 3(eje Y negativo): pin de señal a pin 9 del arduino.
  • Servo 4(eje X negativo): pin de señal a pin 10 del arduino.
  • Conecta el arduino:
  • Pin GND del arduino a GND de la fuente de alimentación


Código

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <Arduino.h>

#include <Servo.h> // Importar la librería para controlar el servo

const int servoMasYPin = 5;
const int servoMasXPin = 6;
const int servoMenosYPin = 9;
const int servoMenosXPin = 10;

// Pines del joystick
const int VRx = A0;
const int VRy = A1;
const int SW = 2;

// Creación del objeto servo
Servo servoMasY, servoMenosY, servoMasX, servoMenosX;

void setup() {

  // Inicialización del servos 
  servoMasY.attach(servoMasYPin);
  servoMenosY.attach(servoMenosYPin);
  servoMasX.attach(servoMasXPin);
  servoMenosX.attach(servoMenosXPin);

  // Posición inicial del servo: 90 grados
  servoMasY.write(90); 
  servoMenosY.write(90);
  servoMasX.write(90);
  servoMenosX.write(90);

  delay(5000);
  // Inicialización del puerto serie
  Serial.begin(9600);
}

void loop() {
  // Leer valores analógicos del joystick
  int x = analogRead(VRx); // Eje X
  int y = analogRead(VRy); // Eje Y

  Serial.print("x: ");
  Serial.print(x);
  Serial.print("  y: ");
  Serial.println(y);
  // Mapear valores de 0-1023 a 90-0 
  int masY = map(y, 512, 1023, 90, 0);
  int menosY = map(y, 512, 0, 90, 0);
  int menosX = map(x, 512, 0, 90, 0);
  int masX = map(x, 512, 1023, 90, 0);



   // Controlar los servos, se cambiaron los ejes, debido a que en mi caso el josystick está parado
   //juega un poco con los valoes hasta obtener el movimiento deseado
   servoMasX.write((y > 562) ? masY : 90);
   servoMenosX.write((y < 462) ? menosY : 90);
   servoMasY.write((x > 562) ? masX : 90);
   servoMenosY.write((x < 462) ? menosX : 90);
   
  delay(50);
}


Diseños


Videos


Conclusión

Este proyecto es una excelente manera de aprender sobre el control de servomotores, integración de hardware y software, y diseño de prototipos. Además, fomenta la creatividad y la resolución de problemas al trabajar con materiales accesibles como el cartón.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Carrito de compra