Framework Arduino II: Aula 26 Joystick Analógico

Imagem meramente ilustrativa


Introdução

    Uma série de projetos robóticos ficaria mais interessante com um controle do tipo joystick ao invés de botões ou potenciômetros. Pensando nisso resolvi abordar o assunto e mostrar a utilização básica desse recurso. Futuramente abordaremos outros usos.

Motor sendo acionado por Joystick. Fonte: Harish Projects
Motor sendo acionado por Joystick. Fonte: Harish Projects


O que é um Joystick Analógico?

    O joystrick analógico é um dispositivo eletromecânico que combina um manche de comando com dois potenciômetros e um push buttom. Os potenciômetros estabelecem duas leituras que podem ser mapeadas para controlar movimentos em dois eixo do plano cartesiano, através de coordenadas x e y.

Componentes do joystick
Componentes do joystick


    A movimentação dos potenciômetros é feita por um mecanismo mecânico acoplado ao manche que ao ser pressionado aciona o push buttom. Um extensor do manche melhora a manipulação do mecanismo com mais conforto para usuário.

Coordenadas XY para os principais pontos do Joystick. Fonte: Micro Controllers Lab
Coordenadas XY para os principais pontos do Joystick. Fonte: Micro Controllers Lab

    Sendo conectado as entradas analógicas do Arduino, as leituras dos eixos X e Y podem variar de 0 a 1023, sendo 512 o valor quando o eixo está em seu ponto médio. Assim, quando centralizados nos dois eixos teremos a coordenada X=512 e Y=512. A figura acima ilustra outros posicionamentos.

    O módulo mais encontrado atualmente nas cotação pela internet é o KY-23 da marca Keyes, alimentado por 5 V e que possui geralmente cinco terminais:

  • GND para conectar ao terra do Arduino
  • +5V para conectar ao VCC do Arduino
  • VRX que controla o eixo X, podendo ser ligado em A0
  • VRY que controla o eixo Y, podendo ser ligado em A1
  • SW que controla o push buttom e pode ser ligado a um pino digital

     Também encontramos shields montados com um joystick e quatro botões laterais que oferecem mais recursos como ajuste de voltagem e conexão bluetooth, entre outras coisas.

Montagem

    Aqui vamos disponibilizar uma montagem bem simples só para mostrar o funcionamento, mas o estudante pode depois tentar levar essas funcionalidades para alguns exemplos que abortamos no curso com o uso de motores.

Simulação no Wokwi destacando os botões pressionados e seu resultado no monitor
Simulação no Wokwi destacando os botões pressionados e seu resultado no monitor


Link: https://wokwi.com/projects/416160062315902977

Sketch

    Esse código é muito simples, pois não requer bibliotecas. No seu início declaramos as constantes que armazenarão os pinos envolvidos, com seus nomes deixando bem claro a finalidade. Em seguida declaramos variáveis para armazenar as leituras de cada eixo e o estado do botão.

    Na função setup apenas iniciamos o monitor serial e definimos o pino do botão como entrada. Na função loop estamos atribuindo às variáveis suas respectivas leituras em seguida imprimindo seus valores no monitor serial.

    Repare na simulação que o botão central quando pressionado permanece no estado alto até um novo pressionamento. O delay de 1 segundo é um valor muito, mas foi colocado assim para permitir a leitura confortável do monitor. Recomenda-se um delay bem menor.

  1. const int horizontal=A0;
  2. const int vertical=A1;
  3. const int botao=2;
  4. int eixoX=0;
  5. int eixoY=0;
  6. int pressionado=0;

  7. void setup() {
  8.   pinMode(botao, INPUT);
  9.   Serial.begin(9600);
  10. }

  11. void loop() {
  12.   eixoX=analogRead(horizontal);
  13.   eixoY=analogRead(vertical);
  14.   pressionado=digitalRead(botao);
  15.   Serial.print("X: ");
  16.   Serial.println(eixoX);
  17.   Serial.print("Y: ");
  18.   Serial.println(eixoY);
  19.   Serial.print("Pressionado: ");
  20.   Serial.println(pressionado);
  21.   delay(1000);
  22. }

    Com isso encerramos esse curso de Arduino II, completando 80 postagens no site. Lembrando que esse blog começou como atividade do Estágio Supervisionado da Fatec Jundiaí. Se levarmos em conta que cada postagem exigiu no mínimo 3 horas de trabalho, fechamos as 240 horas necessárias para o estagio.

    Nos próximos dias estaremos revisando o site e fechando o Relatório Final de Estágio. Voltaremos em breve com mais postagens.

                                                                         Aula Anterior

Referências

ARDUINO DOCS Joystick Mouse Control. Disponível em <https://docs.arduino.cc/built-in-examples/usb/JoystickMouseControl/> Acesso em 01 dez 2024.

BLOG DA ROBÓTICA Como utilizar o módulo joystick KY-023 com Arduino. Disponível em <https://www.blogdarobotica.com/2022/06/30/como-utilizar-o-modulo-joystick-ky-023-com-arduino/> Acesso em 01 dez 2024.

BLOG ELETROGATE. Braço Robótico com Joystick Disponível em <https://blog.eletrogate.com/braco-robotico-com-joystick/> Acesso em 01 dez 2024.

BLOG ELETROGATE. Jogo de Nave na TV com módulo Joystick e Arduino. Disponível em <https://blog.eletrogate.com/rtc-real-time-clock-ds1302-1307-e-3231/> Acesso em 01 dez 2024.

MAKER HERO. Faça seu próprio Joystick com Arduino para jogar no PC. Disponível em <https://blog.eletrogate.com/jogo-de-nave-na-tv-com-modulo-joystick-e-arduino/> Acesso em 01 dez 2024.

MAKER HERO. Joystick Arduino 3 Eixos. Disponível em <https://www.makerhero.com/produto/joystick-arduino-3-eixos/> Acesso em 01 dez 2024.

WOKWI. Referência do wokwi-analog-joystick Disponível em <https://docs.wokwi.com/pt-BR/parts/wokwi-analog-joystick> Acesso em 01 dez 2024.