El joystick es un sensor muy útil, muy utilizado, y muy amado por la comunidad maker. ya que nos permite maniobrar nuestros proyectos como brazos roboticos, robots, luces, etc. dándole a nuestros proyecto un valor agregado de estética, moderno y lo mas importante nos es muy familiar ya que los encontramos en nuestras consolas favoritas.
PINES DE CONEXIÓN
Como bien dice el titulo de esta nota este sensor es análogo de 2 ejes (X,Y), su mecánica se basa en 3 elementos, que son 2 resistencias variables, uno para el eje X y otro para el eje Y, y un pulsador.
Este sensor tiene 5 pines:

Como se menciono anteriormente este sensor tiene 2 resistencias variables una para el eje X y otra para el eje Y, que son los pines VRX y VRY respectivamente. Estos pines los conectamos a los pines análogos A0-A5 y obtenemos los valores mediante la función analogRead(An), tomando valores desde 0 a 1023, esto es muy importante pues con este podemos variar a velocidad de nuestros motores por ejemplo hacer que nuestro robot acelere muy diferente hacer un control mediante simples pulsadores.
El pin del pulsador lo leemos mediante los pines digitales i/o con la función digitalRead() pero recuerden que antes se deben configurar los pines Entrada/Salida, y el pin del pulsador debe ser con la resistencia pull-up pinMode(“pin”,INPUT_PULLUP).
Y los otros son nuestros pines de alimentación de 5 voltios y GND, que conectamos a nuestra arduino.
Joystick y Arduino
Acá les dejo este pequeño código y el diagrama para implementar con arduino y el joystick.
Elementos:
- 5 LEDS.
- 5 Resistencias de 220 Ohmios.
- Cables de conexión rápida.
- 1 Arduino UNO.
- 1 Joystick Analogo.


Código Arduino
Este programa nos permite visualizar los valores en el monitor Serial de VRx, VRy y Pulsador, y los LEDs encenderán según la posición del joystick y el pulsador.

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 |
// Pines del Joystick const int Rx = A1; // Pin de Entrada Analoga const int Ry = A0; // Pin de Entrada Analoga const int Push = 8; // Pin de Entrada Digital // Pines de leds Pines de Salida Digital const int pinN = 10; const int pinS = 12; const int pinW = 11; const int pinE = 9; const int pinC = 7; // Variables int varX,varY,varP; void setup() { // declaramos los pines entradas/salidas digitales pinMode(pinN,OUTPUT); pinMode(pinS,OUTPUT); pinMode(pinW,OUTPUT); pinMode(pinE,OUTPUT); pinMode(pinC,OUTPUT); pinMode(Push,INPUT_PULLUP); Serial.begin(9600); } void loop() { varX =analogRead(Rx); varY =analogRead(Ry); varP =digitalRead(Push); delay(500); Serial.print(“Push= “); Serial.print(varP); Serial.print(” varX= “); Serial.print(varX); Serial.print(” varY= “); Serial.println(varY); if(varX>532){digitalWrite(pinW,HIGH);} if(varX<532){digitalWrite(pinE,HIGH);} if(varX<=532){digitalWrite(pinW,LOW);} if(varX>=532){digitalWrite(pinE,LOW);} if(varY>=499){digitalWrite(pinN,LOW);} if(varY<=499){digitalWrite(pinS,LOW);} if(varY>499){digitalWrite(pinS,HIGH);} if(varY<499){digitalWrite(pinN,HIGH);} if(digitalRead(Push) == HIGH){digitalWrite(pinC,LOW);} if(digitalRead(Push) == LOW){digitalWrite(pinC,HIGH);} } |