- Material Necessário
- Diagrama de circuito
- Módulo Joystick
- Código e Explicação
- Controlando LEDs usando Joystick com Arduino
A primeira coisa que vem em nossa mente ao ouvir a palavra Joystick é o controlador de jogo. Sim, é exatamente o mesmo e pode ser usado para fins de jogo. Além de jogos, ele tem muitas outras aplicações em eletrônicos DIY. Este joystick nada mais é do que uma combinação de dois potenciômetros para o plano X e Y, respectivamente. Ele lê a voltagem por meio do potenciômetro e fornece um valor analógico ao Arduino, e o valor analógico muda conforme movemos o eixo do joystick (que é simplesmente o ponteiro do potenciômetro).
Neste circuito, estamos fazendo a interface do Joystick com o Arduino simplesmente controlando quatro LEDs de acordo com o movimento do Joystick. Colocamos 4 LEDs de forma que representem a direção do movimento do eixo do joystick. Este joystick também possui um botão que pode ser usado para vários outros fins ou pode ser deixado inativo. Um único LED também está conectado ao botão do joystick, pois o botão do joystick pressionado aquele único LED se LIGA.
Material Necessário
- Arduino UNO
- Módulo Joystick
- LEDs-5
- Resistor: 100ohm-3
- Fios de conexão
- Tábua de pão
Diagrama de circuito
Módulo Joystick
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, fizemos a interface do Joystick com AVR e Raspberry Pi.
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 JOYSTICK é montado em um potenciômetro ou potenciômetro. Os pontos médios desses potes são expulsos 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 um divisor 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.
Aqui, estamos conectando este módulo Joystick com o Arduino UNO que vem com um mecanismo ADC (Conversor Analógico para Digital) embutido, conforme mostrado no vídeo no final. Saiba mais sobre como usar o ADC do Arduino aqui.
Código e Explicação
O código Arduino completo é mencionado no final.
No código abaixo, definimos os eixos X e Y do módulo Joystick para os pinos analógicos A0 e A1, respectivamente.
#define joyX A0 #define joyY A1
Agora, no código abaixo, estamos inicializando o PIN 2 do Arduino para o switch (botão de pressão) do módulo Joystick e o valor de buttonstate e buttonstate1 será 0 no início.
botão int = 2; int buttonState = 0; int buttonState1 = 0;
No código a seguir, estamos configurando a taxa de transmissão para 9600 e definimos o pino 7 como um pino de saída e o pino de botão como um pino de entrada. Inicialmente, o pino do botão permanecerá alto até que o interruptor seja pressionado.
void setup () {pinMode (7, OUTPUT); pinMode (botão, INPUT); digitalWrite (botão, ALTO); Serial.begin (9600); }
Aqui, neste código, estamos lendo os valores dos pinos analógicos A0 e A1 e imprimindo em série.
int xValue = analogRead (joyX); int yValue = analogRead (joyY); Serial.print (xValue); Serial.print ("\ t"); Serial.println (yValue);
As condições para acender e apagar o LED conforme a movimentação do eixo do Joystick, são definidas no código a seguir. Aqui, estamos apenas pegando valores analógicos de tensão nos pinos A0 e A1 do Arduino. Esses valores analógicos mudarão conforme movemos o joystick e o LED acenderá de acordo com o movimento do joystick.
Esta condição é para o movimento do eixo do Joystick na direção do eixo Y
if (xValue> = 0 && yValue <= 10) {digitalWrite (10, HIGH); } else {digitalWrite (10, LOW);}
Esta condição é para o movimento do eixo do Joystick na direção do eixo -X
if (xValue <= 10 && yValue> = 500) {digitalWrite (11, HIGH); } else {digitalWrite (11, LOW);}
Esta condição é para o movimento do eixo do Joystick na direção do eixo + X
if (xValue> = 1020 && yValue> = 500) {digitalWrite (9, HIGH); } else {digitalWrite (9, LOW);}
Esta condição é para o movimento do eixo do Joystick na direção do eixo + Y
if (xValue> = 500 && yValue> = 1020) {digitalWrite (8, HIGH); } else {digitalWrite (8, LOW);}
Quando movemos o eixo do joystick diagonalmente, surge uma posição em que os valores analógicos de X e Y serão 1023 e 1023 respectivamente, os LEDs do pino 9 e do pino 8 acenderão. Porque satisfaz a condição do LED. Portanto, para remover essa incompatibilidade, demos a condição de que se o valor de (X, Y) for (1023, 1023), ambos os LEDs permanecerão na condição OFF
if (xValue> = 1020 && yValue> = 1020) {digitalWrite (9, LOW); digitalWrite (8, BAIXO); }
A condição abaixo é usada para operar o LED conectado ao botão de pressão. Quando pressionamos o botão Joystick, o LED se LIGA e trava até que o botão seja liberado. É opcional usar o botão interruptor no módulo Joystick.
if (buttonState == LOW) {Serial.println ("Switch = High"); digitalWrite (7, ALTO); } else {digitalWrite (7, LOW);}
Controlando LEDs usando Joystick com Arduino
Após fazer o upload do código para o Arduino e conectar os componentes conforme o diagrama de circuito, agora podemos controlar os LEDs com Joystick. Podemos ligar os quatro LEDs em cada direção de acordo com o movimento do eixo do 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 está obtendo 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, do Arduino, estamos lendo o valor analógico para os eixos X e Y e ligando os LEDs de acordo com o movimento do eixo do Joystick. Um interruptor de botão no módulo Joystick é usado para controlar o único LED no circuito, conforme mostrado no vídeo abaixo.