- Descrição: O Micro Servo Motor SG90 9g é um item essencial…
Como usar com Arduino – Módulo Joystick KY-023
– Descrição:
O Módulo Joystick KY-023 foi desenvolvido com a finalidade de controlar dispositivos eletrônicos como uma espécie de controle de vídeo game. Muito conhecido como “botão analógico” pelos jogadores de vídeo game, o joystick permite controlar a movimentação do personagem e navegar entre menus. Em projetos eletrônicos, o mesmo possibilita controlar motores, robôs ou carrinhos.
– Especificações e características:
– Modelo: KY-023
– Tensão de operação: 3,3V – 5VDC
– Eixos analógicos: X e Y
– Botão: eixo Z
– Aplicações:
Projetos com Arduino ou outras plataformas microcontroladas em que a finalidade seja controlar um braço robótico, carrinho ou motores, por exemplo.
– Proposta da prática:
Utilizar o Módulo Joystick KY-023 em conjunto com o Arduino para acionamento dos eixos X, Y e Z (botão) através da movimentação do joystick. O eixo X (botão) é acionado quando há um pressionamento sobre o joystick. As informações de acionamento serão mostradas no monitor serial do ambiente de programação do Arduino.
– Lista dos itens necessários:
01 – Arduino com Cabo USB
01 – Módulo Joystick KY-023
05 – Cabos Jumper macho-fêmea
– Esquema de ligação da prática
– Tutorial de instalação e configuração do ambiente de programação do Arduino:
Arduino – Instalação e Configuração da IDE no Windows
– Código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
int eixo_X= A0; //PINO REFERENTE A LIGAÇÃO DO EIXO X int eixo_Y = A1; //PINO REFERENTE A LIGAÇÃO DO EIXO Y int botao = 2; //PINO REFERENTE A LIGAÇÃO NO PINO KEY (EIXO Z) void setup(){ pinMode (botao, INPUT_PULLUP); //DEFINE A PORTA COMO ENTRADA / "_PULLUP" É PARA ATIVAR O RESISTOR INTERNO //DO ARDUINO PARA GARANTIR QUE NÃO EXISTA FLUTUAÇÃO ENTRE 0 (LOW) E 1 (HIGH) Serial.begin (9600); //INICIALIZA O MONITOR SERIAL } void loop(){ if((analogRead(eixo_X)) == 0){ //SE LEITURA FOR IGUAL A 0, FAZ Serial.println("PARA CIMA"); //IMPRIME O TEXTO NO MONITOR SERIAL }else{ if((analogRead(eixo_X)) == 1023){ //SE LEITURA FOR IGUAL A 1023, FAZ Serial.println("PARA BAIXO"); //IMPRIME O TEXTO NO MONITOR SERIAL }else{ if((analogRead(eixo_Y)) == 0){ //SE LEITURA FOR IGUAL A 0, FAZ Serial.println("DIREITA"); //IMPRIME O TEXTO NO MONITOR SERIAL }else{ if((analogRead(eixo_Y)) == 1023){ //SE LEITURA FOR IGUAL A 1023, FAZ Serial.println("ESQUERDA"); //IMPRIME O TEXTO NO MONITOR SERIAL }else{ if(digitalRead(botao) == LOW){ //SE LEITURA FOR IGUAL A HIGH, FAZ Serial.println("BOTAO PRESSIONADO"); //IMPRIME O TEXTO NO MONITOR SERIAL } } } } } delay(500); //INTERVALO DE 500 MILISSEGUNDOS } |
– Resultado final:
Gostou desta prática? Então deixa seu comentário, dúvida ou sugestão aí embaixo!
Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop
Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.
Obrigado e até a próxima!
Seu feedback é muito importante! Que tal dar uma nota para esta postagem?! Faça sua avaliação aqui embaixo.
Postagem anterior: Como usar com Arduino – Teclado Capacitivo Touch (Toque) TTP224 com 4 Teclas
Próxima postagem: Como usar com Arduino – Sensor Ultrasonico HC-SR04
Parabéns pelo projeto.
Sucesso a todos pelo belo trabalho.
Abraço
Muito legal eu testei e funcionou de primeira muito bom esse blog meus parabens
Eu acabei usando o código e dei uma melhorada nele para quem quiser!
int eixo_X = A0; //PINO REFERENTE A LIGAÇÃO DO EIXO X
int eixo_Y = A1; //PINO REFERENTE A LIGAÇÃO DO EIXO Y
int botao = 37 ; //PINO REFERENTE A LIGAÇÃO NO PINO KEY (EIXO Z)
void setup(){
pinMode (botao, INPUT_PULLUP); //DEFINE A PORTA COMO ENTRADA / “_PULLUP” É PARA ATIVAR O RESISTOR INTERNO
//DO ARDUINO PARA GARANTIR QUE NÃO EXISTA FLUTUAÇÃO ENTRE 0 (LOW) E 1 (HIGH)
Serial.begin (9600); //INICIALIZA O MONITOR SERIAL
}
void loop(){
if((analogRead(eixo_X)) == 0){ //SE LEITURA FOR IGUAL A 0, FAZ
Serial.println(“PARA FRENTE”); //IMPRIME O TEXTO NO MONITOR SERIAL
}else{
if((analogRead(eixo_X)) == 1023){ //SE LEITURA FOR IGUAL A 1023, FAZ
Serial.println(“PARA TRÁS”); //IMPRIME O TEXTO NO MONITOR SERIAL
}else{
if((analogRead(eixo_Y)) == 0){ //SE LEITURA FOR IGUAL A 0, FAZ
Serial.println(“DIREITA”); //IMPRIME O TEXTO NO MONITOR SERIAL
}else{
if((analogRead(eixo_Y)) == 1023){ //SE LEITURA FOR IGUAL A 1023, FAZ
Serial.println(“ESQUERDA”); //IMPRIME O TEXTO NO MONITOR SERIAL
}else{
if(digitalRead(botao) == LOW){ //SE LEITURA FOR IGUAL A HIGH, FAZ
Serial.println(“BOTÃO PRESSIONADO”); //IMPRIME O TEXTO NO MONITOR SERIAL
}else{
if((analogRead(eixo_X)) > 530){ //SE LEITURA FOR IGUAL A HIGH, FAZ
Serial.println(“UM POUCO PARA TRÁS”); //IMPRIME O TEXTO NO MONITOR SERIAL
}else{
if((analogRead(eixo_X)) < 490){ //SE LEITURA FOR IGUAL A HIGH, FAZ
Serial.println("UM POUCO PARA FRENTE"); //IMPRIME O TEXTO NO MONITOR SERIAL
}else{
if((analogRead(eixo_Y)) 530){ //SE LEITURA FOR IGUAL A HIGH, FAZ
Serial.println(“UM POUCO PARA ESQUERDA”); //IMPRIME O TEXTO NO MONITOR SERIAL
}
}
}
}
}
}
}
}
}
delay(50); //INTERVALO DE 50 MILISSEGUNDOS
}
oi deu um problema eu fui carregar o codigo pro arduino e deu problema aqui:Serial.println(“UM POUCO PARA ESQUERDA”); //IMPRIME O TEXTO NO MONITOR SERIAL
o que voçê acha que deu?
Olá,
Primeiramente gostaria de parabenizar pela explicação, pois está bem completa. Entretanto para o meu projeto eu gostaria de transmitir o sinal do joystick ky-023 via RF-433mhz. Você sabe me explicar se existe e qual seriam os CIs para converter o sinal analógico do joystick para binário que será transmitido pelo RF.
Pelo o que já li por ai os CIs HT12E e D servem apenas apara sinais digitais
olá boa noite, gostaria de saber se tem como eu separar o eixo X? tipo o esquerda e direita? Quero por o esquerda em potenciometro e o direita em outro, tem como fazer isso? modificando o código fonte?