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:
Imagem 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.


Deixe um comentário