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