Início » Como usar o Módulo Joystick 5D Rocker JY50

Como usar o Módulo Joystick 5D Rocker JY50

O módulo de navegação JY50 é um módulo portátil similar a um controle de videogame, possuindo um joystick de 5 direções e dois botões. É uma opção bastante prática para realizar o controle de servomotores, robôs e carrinhos, além de também poder ser aplicado na navegação em interfaces gráficas ou usado como um controle de videogame.

Nessa postagem vamos ensinar como usar o Módulo Joystick 5D Rocker JY50 com Arduino.

Componentes necessários

Para seguir este tutorial, você precisará dos seguintes itens:

Funcionamento

Ao contrário de outros módulos de joystick para Arduino, o módulo JY50 não é composto por potenciômetros mas sim por chaves tácteis. Isso significa que seu sinal não é analógico, mas digital.

O Joystick 5D permite a movimentação em 5 direções: cima, baixo, esquerda, direita e clique no centro; sendo cada uma delas equivalente a um botão independente. Ele possui ainda dois botões adicionais denominados SET e RST (abreviação de RESET) cuja funcionalidade é atribuída à sua escolha através do código.

Na placa existe um pino chamado COM que é o terminal comum a todos os botões do módulo.

Imagem 1 — Módulo Joystick 5D Rocker JY50

Ligação

Assim como qualquer botão, os pinos do Módulo Joystick 5D Rocker JY50 devem ser ligados através de resistores de pull-up ou pull-down, com o pino COM sendo ligado ao 5V ou ao GND do Arduino, dependendo do tipo de ligação que você escolher.

Para evitar o uso de resistores externos em nosso circuito, podemos aproveitar o resistor de pull-up interno do Arduino para ligar o nosso joystick. Nesse caso, o terminal comum deverá ser ligado ao GND.

Cada um dos outros pinos do módulo joystick deve ser ligado a um pino digital do Arduino Uno de acordo com a imagem abaixo:

Ligação do Joystick 5D Rocker no ArduinoImagem 2 — Ligação do Módulo Joystick 5D Rocker JY50 no Arduino Uno

Programando

Para utilizar os resistores de pull-up internos do Arduino, seus pinos precisam ser configurados como INPUT_PULLUP através da função pinMode().

pinMode(12, INPUT_PULLUP);
pinMode(11, INPUT_PULLUP);
pinMode(10, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);

Lembrando que quando usamos um resistor de pull-up em um botão seu estado passa a ser de nível lógico alto (HIGH) quando ocioso e nível lógico baixo (LOW) quando pressionado. Isso significa que para saber se o botão foi pressionado, devemos checar se a leitura de seu estado retornou LOW ou false.

if(!digitalRead(12)){
  Serial.println("Pressionado!");
}

Código

Abaixo você encontra o código de teste completo para o Módulo Joystick 5D Rocker JY50.

#define UP 12 //Cima
#define DWN 11 //Baixo
#define LFT 10 //Esquerda
#define RHT 9 //Direita
#define MID 8 //Centro
#define SET 7 //Set
#define RST 6 //Reset

void setup() {
  Serial.begin(9600); // Inicia a comunicação serial
  //Inicia os pinos com um resistor de pull-up ativado:
  pinMode(UP, INPUT_PULLUP);
  pinMode(DWN, INPUT_PULLUP);
  pinMode(LFT, INPUT_PULLUP);
  pinMode(RHT, INPUT_PULLUP);
  pinMode(MID, INPUT_PULLUP);
  pinMode(SET, INPUT_PULLUP);
  pinMode(RST, INPUT_PULLUP);
}

void loop() {
  lerJoystick();
}

void lerJoystick() {
  if(!digitalRead(UP))
  {
    Serial.println("Cima");
    delay(200);
  }
  if(!digitalRead(DWN))
  {
    Serial.println("Baixo");
    delay(200);
  }
  if(!digitalRead(LFT))
  {
    Serial.println("Esquerda");
    delay(200);
  }
  if(!digitalRead(RHT))
  {
    Serial.println("Direita");
    delay(200);
  }
  
  if(!digitalRead(MID))
  {
    Serial.println("Centro");
    delay(200);
  }
  if(!digitalRead(SET))
  {
    Serial.println("Set");
    delay(200);
  }
  if(!digitalRead(RST))
  {
    Serial.println("Reset");
    delay(200);
  }
}

Gostou? Deixe seu comentário logo abaixo, não deixe de conferir outras postagens do nosso blog. Confira também a nossa loja virtual e encontre todos os componentes utilizados no projeto no post.

Post navigation

Deixe um comentário

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *