- Componentes necessários
- Arduino Leonardo
- Módulo de joystick de eixo duplo XY
- Diagrama de circuito
- Código e explicação de trabalho
Anteriormente, fizemos a interface do Joystick com o Arduino UNO para entender como ele funciona e controlamos quatro LEDs em seu movimento para a esquerda, para a direita, para cima e para baixo. Neste projeto, usaremos o mesmo joystick do Gamepad ou controlador de jogo para jogar qualquer jogo de computador que requeira movimentos para a esquerda, direita, para cima e para baixo. Para jogar jogos que requerem mais opções de controle, dois ou mais joysticks podem ser usados. Aqui, usaremos o Arduino Leonardo para fazer a interface do Joystick como controlador do jogo. O Arduino Leonardo tem a vantagem sobre o Uno que podemos instalar drivers USB nele e pode ser detectado como mouse, teclado ou joystick pelo computador quando conectado.
Componentes necessários
- Arduino Leonardo
- Módulo de joystick de eixo duplo XY
- IDE Arduino
- Fios de conexão
Arduino Leonardo
Para este projeto estamos utilizando o Arduino Leonardo, que é uma placa microcontrolada baseada no ATmega32u4. Possui 20 pinos de entrada / saída digital (dos quais 7 podem ser usados como saídas PWM e 12 como entradas analógicas), um oscilador de cristal de 16 MHz, uma conexão micro USB, um conector de alimentação, um conector ICSP e um botão de reset. Ele contém tudo o que é necessário para dar suporte ao microcontrolador; simplesmente conecte-o a um computador com um cabo USB ou ligue-o com um adaptador AC-DC ou bateria para começar.
O Leonardo é diferente de todas as placas anteriores porque o ATmega32u4 possui comunicação USB embutida, eliminando a necessidade de um processador secundário. Isso permite que o Leonardo apareça para um computador conectado como um mouse e teclado, além de uma porta serial / COM virtual (CDC).
Especificações técnicas
Microcontrolador | ATmega32u4 |
Tensão operacional | 5V |
Tensão de entrada (recomendado) | 7-12V |
Tensão de entrada (limites) | 6-20V |
Pinos de E / S digitais | 20 |
Canais PWM | 7 |
Canais de entrada analógica | 12 |
Corrente DC por pino de I / O | 40 mA |
Corrente DC para pino de 3,3 V | 50 mA |
Memória flash | 32 KB (ATmega32u4) dos quais 4 KB usados pelo bootloader |
SRAM | 2,5 KB (ATmega32u4) |
EEPROM | 1 KB (ATmega32u4) |
Velocidade do relógio | 16 MHz |
comprimento | 68,6 mm |
Largura | 53,3 mm |
Peso | 20 g |
Referência de saída de PIN
Módulo de joystick de eixo duplo XY
Os joysticks estão disponíveis em diferentes formas e tamanhos. Um módulo Joystick típico é mostrado na figura abaixo. Este módulo de Joystick normalmente fornece saídas analógicas e as tensões de saída fornecidas por este módulo mudam de acordo com a direção em que o movemos. E podemos obter a direção do movimento interpretando essas mudanças de voltagem usando algum microcontrolador. Anteriormente, conectávamos o joystick com diferentes microcontroladores:
- Interface do joystick com o Arduino
- Interface do joystick com Raspberry Pi
- Interface de joystick com microcontrolador PIC
- Interface de joystick com microcontrolador AVR
Este módulo de joystick possui dois eixos, como você pode ver. Eles são o eixo X e o eixo Y. Cada eixo do JOY STICK é montado em um potenciômetro ou potenciômetro. Os pontos intermediários desses potes são eliminados como Rx e Ry. Portanto, Rx e Ry são pontos variáveis para esses potes. Quando o Joystick está em espera, Rx e Ry atuam como divisores de tensão.
Quando o joystick é movido ao longo do eixo horizontal, a tensão no pino Rx muda. Da mesma forma, quando ele é movido ao longo do eixo vertical, a voltagem no pino Ry muda. Portanto , temos quatro direções de Joystick em duas saídas ADC. Quando o stick é movido, a tensão em cada pino fica alta ou baixa dependendo da direção.
Diagrama de circuito
Este Arduino Joystick Game Controller requer conexões entre o Arduino e o Joystick da seguinte maneira:
Código e explicação de trabalho
O código completo com um vídeo de demonstração é fornecido no final; aqui estamos explicando algumas partes importantes dele.
Em primeiro lugar, precisamos inicializar a biblioteca de teclado
#incluir
Em seguida no código a seguir, inicializamos os eixos X e Y do módulo Joystick para o pino analógico A0 e A1, respectivamente.
const int X_pin e const int Y_pin respectivamente
O valor analógico do pino VRX é lido e se o valor for 1023 então o comando para “subir” é dado e se o valor for 0, então o comando para “descer” é dado.
Da mesma forma, o valor analógico do pino VRY é lido e se o valor for 1023 então o comando para “direita” é dado e se o valor for 0 então o comando para “esquerda” é dado.
O joystick também tem um botão de pressão na parte superior para que este botão (SW) também seja lido e se o botão for pressionado, o valor será 0, então o comando para “entrar” é dado.
Por fim, grave o código no Arduino e conecte o Arduino ao computador.
Em seguida, verifique ' Dispositivos e Impressoras' em seu painel de controle, você será capaz de ver “ Arduino Leonardo” na seção de dispositivos como mostrado na imagem abaixo. Agora você está pronto para jogar com o joystick.
Podemos controlar os controles de qualquer jogo usando este Joystick. O Joystick tem dois potenciômetros dentro dele, um é para o movimento do eixo X e outro é para o movimento do eixo Y. Cada potenciômetro obtém 5 V do Arduino. Portanto, conforme movemos o joystick, o valor da tensão mudará e o valor analógico nos pinos analógicos A0 e A1 também mudará. Portanto, o joystick funcionará como um gamepad.
Então é assim que um Joystick normal pode ser convertido em um controlador de jogo usando o Arduino Leonardo e pode ser usado para jogar jogos com todos os controles para mover para a esquerda, direita, para cima e para baixo. Como dito anteriormente, mais de um Joystick pode ser conectado para obter mais controles além dessas quatro funções básicas.