Joystick analogico 2 ejes Arduino

Conectar un joystick a Arduino permite realizar un proyecto de control remoto de un coche o un robot (manipulador) en Arduino. Vamos a ver cómo conectar un joystick analógico (módulo ky-023) a un microcontrolador y controlar los LEDs o un servomotor con un joystick analogico de 2 ejes en Arduino. Presentaremos algunos code y diagramas para conectar el joystick de 2 ejes a un microcontrolador Arduino Nano o Uno.

Para esta actividad necesitaremos:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • joystick analogico de 2 ejes;
  • LEDs y resistencias de 220 Ohm;
  • servomotor;
  • protoboard;
  • cables de conexion.

Funcionamiento del joystick 2 ejes (datasheet)

Datasheet joystick analogico 2 ejesArduino
Datasheet Arduino joystick analogico 2 ejes

El joystick analógico con pulsador es un mando articulado con dos potenciómetros que determinan la posición del joystick en los ejes X e Y, y un mando Z. Al inclinar el mando se giran los potenciómetros y se modifica la tensión de salida, controlando así el grado de desviación del mando respecto al punto central. Cuando se suelta el mando del joystick analógico para Arduino, éste vuelve suavemente a la posición central (cero).

El módulo ky-023 (joystick 2 ejes con pulsador) tiene sus propios inconvenientes. El botón del joystick no siempre vuelve exactamente a la posición central, por lo que hay que considerar la posición central del botón en el programa como un cierto rango de valores, y no como un valor exacto. En otras palabras, cuando el botón del joystick está centrado, los valores de las coordenadas X e Y pueden estar entre 490 y 530 en lugar de 512.

Cómo conectar joystick Arduino 2 ejes (KY-023)

Como usar un joystick analogico en Arduino
Conexion joystick Arduino

Después de conectar el joystick analogico al Arduino, carga el siguiente programa. En este ejemplo, los datos del joystick se mostrarán en el monitor del puerto y el LED de la placa conectado en paralelo al pin 13 se apagará cuando se pulse el botón. Construye el circuito del joystick (módulo ky-023) en el Arduino Uno como se muestra en el diagrama anterior, carga el código y abre el puerto serie de la aplicación Arduino IDE en el ordenador.

Programa Arduino para joystick analogico 2 ejes

#define pinX    A2
#define pinY    A1
#define swPin    2
#define ledPin  13

void setup() {
  Serial.begin(9600);
  
  pinMode(ledPin, OUTPUT);
  pinMode(pinX, INPUT);
  pinMode(pinY, INPUT);
  
  pinMode(swPin, INPUT);
  digitalWrite(swPin, HIGH);
}
 
void loop() {
  boolean ledState = digitalRead(swPin);
  digitalWrite(ledPin, ledState);

  int X = analogRead(pinX);
  int Y = analogRead(pinY);

  Serial.print(X);
  Serial.print("\t");
  Serial.println(Y);
}

Explicación del código para joystick analogico KY-023:

  1. utilizando la función map, puede especificar cualquier intervalo, incluido el intervalo inverso de los números o utilizar valores negativos.

Ahora puedes complicar el circuito realizando una conmutación suave de los LEDs controlados por el joystick. Para ello, conecta dos LEDs mediante una resistencia a los puertos analógicos Arduino. En el siguiente diagrama, utilice la función map() para convertir las variables X e Y de un rango de números de 0 a 1023 a un rango de números de 0 a 255. Conecta los LEDs a los pines 10 y 11 del Arduino Uno y carga el siguiente código.

Controlar el LED con joystick (ky-023) Arduino
Cómo controlar el LED con el joystick (ky-023) Arduino

Programa Arduino para control el LED con el joystick

#define pinX    A2
#define pinY    A1
#define swPin    2
#define ledPin  13

void setup() {
  Serial.begin(9600);
  
  pinMode(ledPin, OUTPUT);
  pinMode(pinX, INPUT);
  pinMode(pinY, INPUT);
  
  pinMode(swPin, INPUT);
  digitalWrite(swPin, HIGH);
}
 
void loop() {
  boolean ledState = digitalRead(swPin);
  digitalWrite(ledPin, ledState);

  int X = analogRead(pinX);
  int Y = analogRead(pinY);

  Serial.print(X);
  Serial.print("\t");
  Serial.println(Y);
}

Explicación del código para control el LED con el joystick:

  1. con map, puede especificar cualquier rango de números;
  2. tenga en cuenta que el pinout del joystick puede variar de un fabricante a otro.
Controlar servomotor con joystick Arduino
Cómo controlar servomotor con el joystick Arduino

Programa Arduino para control el servo con el joystick

#define pinX A1

#include "Servo.h"
Servo servo1;

void setup() {
   pinMode(pinX, INPUT);
 
   servo1.attach(12);
}
 
void loop() {
   int X = analogRead(pinX);

   X = map(X, 0, 1023, 0, 180);
  
   servo1.write(X);
}

Explicación del código para control servomotor con el joystick:

  1. la función map, que convierte el rango de valores numéricos 0-1023, en un nuevo rango de valores numéricos 0-180 (ángulo de rotación del actuador).

Conclusión. Hemos visto como usar un joystick en arduino y varias opciones para controlar los LEDs y servomotores desde el microcontrolador. Como has podido comprobar por ti mismo, trabajar con el joystick con pulsador de Arduino es accesible para cualquier maker principiante, ya que el principio del módulo ky-023 es similar al de un simple potenciómetro. Este módulo se puede utilizar en muchos proyectos interesantes de bricolaje.


Deja una respuesta

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