Intermediário - Projeto 21
Primeiros passos para usar o módulo Joystic KY-023 com Arduino
Objetivo
Mostrar como conectar, configurar e utilizar o módulo Joystick KY-023 com o Arduino. Neste projeto, ao posicionarmos os eixos os eixos x, y e z do joystick exibiremos os seus valores no Monitor Serial do IDE do Arduino. Também vamos controlar 4 LEDs que estarão desligados, mas que se acenderão quando acionarmos o eixo x para a direita ou para a esquerda e/ou o eixo y para cima ou para baixo. Pressionando o botão do joystick (eixo z) faremos com que os leds pisquem 3 vezes.
Definições
1. Módulo Joystick 3 eixos (modelo KY-023): É um módulo eletrônico que trabalha como um direcional analógico para controlar diversos aparelhos, componentes e sistemas robóticos que operam com informações de posicionamento cartesiano nos eixos x e y, e ainda um botão de pressão no eixo z.
1.1. O Joystick KY-023 é formado por dois potenciômetros analógicos que controlam os eixos x e y e um push button que controla o eixo z. O seu princípio de funcionamento consiste no controle dos dois potenciômetros conectados entre si por um bastão de controle, sendo um potenciômetro para o movimento do eixo x e outro para o movimento eixo y. O botão de pressão push button corresponde ao eixo z, cuja a leitura é digital: 1 quando neutro e 0 quando pressionado (circuito pull up).
1.2. A figura abaixo mostra o posicionamento dos eixos perpendiculares x, e y, cuja a posição de referência do joystick é com os pinos conexão para baixo. Observe que quando o joystick fica nesta posição de referência, o eixo y irá controlar o movimento horizontal do bastão e o eixo x irá controlar o movimento vertical do bastão.
1.2. O módulo joystick produz uma saída de cerca de 2.5V nos eixos x e y, quando o bastão do joystick estiver na posição de repouso (centro). Quando movemos o bastão, a saída nos eixos irá variar de 0V a 5V, dependendo da direção.
1.3. Quando conectado a um microcontrolador, como em uma placa Arduino, por exemplo, obteremos a leitura analógica do joystick, quando em repouso, em torno de 511. Ao movermos o bastão (botão) do joystick, a leitura será compreendida entre 0 e 1023 em cada eixo, dependendo de sua posição. Pequenas variações na leitura podem ocorrer devido as imprecisões mecânicas do dispositivo de controle do módulo.
Referências
Relação entre o fluxo de radiação que incide numa superfície e o fluxo de radiação que é .refletido.
Relação entre o fluxo de radiação que incide numa superfície e o fluxo de radiação que é .refletido.
Relação entre o fluxo de radiação que incide numa superfície e o fluxo de radiação que é .refletido.
"refletância", in Dicionário Priberam da Língua Portuguesa [em linha], 2008-2020,
https://dicionario.priberam.org/reflet%C3%A2ncia [consultado em 04-08-2020].
Relação entre o fluxo de radiação que incide numa superfície e o fluxo de radiação que é .refletido.
Aplicação
Para fins didáticos e projetos de jogos, controles de servo motores e sistemas robóticos. Aprendendo os passos desse tutorial, você poderá utilizar o módulo joystick com o Arduino para controlar servos, motores, leds, entre outros componentes. Já a leitura do botão de pressão pode ser utilizada para acionar eventos específicos em seu projeto.
Componentes necessários
Referência
|
Componente
|
Quantidade
|
Imagem
|
Observação
|
Protoboard |
Protoboard 830 pontos |
1 |
|
No mínimo utilizar protoboard com 400 pontos
|
Jumpers |
Kit cabos ligação macho / macho |
1 |
|
|
Módulo Joystick 3 eixos |
Módulo Joystick KY-023
|
1 |
|
- Tensão de Operação: 3,3-5V - Modelo: KY-023 - Fácil instalação: 4 Furos - Dimensões: 3.7 x 2.5 x 3.2cm - Peso: 15g
Sinal de saída (Eixo X e Y): Saída analógica; Sinal de saída (Eixo Z): Sinal digital (0 ou 5V);
Datasheet: Módulo Joystick 3 eixos
|
Led 5mm |
Led 5mm |
4 |
|
4 LEDs alto brilho ou difuso (qualquer cor)
Você poderá utilizar também LEDs de 3 mm na cor que desejar.
|
Resistor |
Resistor 150Ω |
4 |
|
1 Resistor de 150Ω ou superior - usar com os leds
|
Arduino UNO |
Arduino UNO R3 |
1 |
|
Você poderá utilizar uma placa Arduino UNO original ou similar
|
Montagem do Circuito
Conecte os componentes no Protoboard como mostra a figura abaixo. Verifique cuidadosamente os cabos de ligação antes de ligar seu Arduino. Lembre-se que o Arduino deve estar totalmente desconectado da energia elétrica enquanto você monta o circuito.
Atenção
1. Lembre-se que o LED tem polaridade: O terminal maior tem polaridade positiva e o lado do chanfro tem polaridade negativa.
1.1. Portanto, faça a conexão da porta digital do Arduino no terminal positivo do led (anodo) e o GND no terminal negativo (catodo).
1.2. Para evitar danos ao led é necessário a inclusão de um resistor no circuito. Como o resistor é um limitador da corrente elétrica, ele poderá estar conectado no ânodo (terminal maior) ou no cátodo (terminal menor) do led, tanto faz.
2. Determinamos o valor do resistor através da tabela prática: Tabela prática de utilização de leds 3mm e 5mm. Entretanto, o mais correto é sempre verificar o datasheet do fabricante do LED para você ter os exatos valores de tensão e corrente do mesmo - leia Leds ligados em série e em paralelo.
2.1. Valores utilizados para nossos projetos: LEDs difusos ou de alto brilho: Vermelho, Laranja e Amarelo: 150 Ω | Led Verde e Azul: 100 Ω
3. Para a montagem do módulo joystick no circuito faça a conexão como mostra a figura abaixo:
Pinos do Arduino utilizados no projeto
Joystick |
Descrição |
Arduino
|
GND |
Conexão com o GND |
GND |
Vcc |
Conexão com o pino 5V |
Vcc (5V) |
VRx |
Eixo x - porta analógica (INPUT) |
A0 |
VRy |
Eixo y - porta analógica (INPUT) |
A1 |
SW |
Push button - sinal digital (INPUT_PULLUP) |
2 |
3.1. Veja abaixo a montagem do módulo Joystick no Arduino, conforme determinamos neste projeto:
4. A montagem do nosso projeto foi realizada em um protoboard 400 pontos:
Testando o módulo Joystick KY-023
1. Para verificarmos se a montagem do circuito está correta e o módulo joystick funcionando, rode o sketch abaixo e verifique:
1.1. Copie o código e cole no IDE do Arduino. Com o Arduino conectado no PC, rode o programa.
int joyX = A0; // pino analógico do eixo X
int joyY = A1; // pino analógico do eixo Y
int joyButton = 2; // pino digital do botão de pressão
void setup() {
Serial.begin(9600); // inicia comunicação serial
pinMode(joyX, INPUT); // entrada leitura eixo X joystick
pinMode(joyY, INPUT); // entrada leitura eixo y joystick
pinMode(joyButton, INPUT_PULLUP); // entrada resistor interno pull up pusch button
}
void loop() {
int x = analogRead(joyX); // faz a leitura do eixo x (0 a 1023) - analógico
int y = analogRead(joyY); // faz a leitura do eixo y (0 a 1023) - analógico
int button = digitalRead(joyButton); // faz a leitura do eixo z (0 ou 1) - digital
Serial.print("X: ");
Serial.print(x);
Serial.print(", Y: ");
Serial.print(y);
Serial.print(", Button: ");
Serial.println(button);
delay(100);
}
1.2. Abra o Monitor Serial do IDE do Arduino.
1.3. Movimente o bastão (botão) do joystick em várias posições: para cima, para baixo, para a esquerda, para a direita e nas diagonais, verificando os valores apresentados no monitor serial.
1.4. Compare os o valores com a imagem abaixo. ATENÇÃO: Tome como referência a posição dos pinos de conexão do módulo joystick.