Tutorial ESP32 26/55 - Usando Joystick com Arduino Tomando Ação | Kit IoT ESP32 da SunFounder
Neste tutorial, vamos aprender a interagir um joystick XY com o microcontrolador ESP32 da SunFounder, permitindo-nos detectar sua posição e tomar medidas com base em sua entrada. Também vamos integrar um buzzer que é ativado quando o joystick é movido para uma posição específica. Essa combinação nos permitirá criar projetos interativos que respondem à entrada do usuário em tempo real.
O joystick XY fornece duas saídas analógicas correspondentes às posições X e Y e um interruptor que pode ser pressionado para acionar uma ação. Ao ler os valores do joystick, podemos controlar vários elementos em nosso projeto, como ativar um buzzer ou exibir valores na tela. Para entender completamente o processo, não esqueça de conferir o vídeo para obter mais insights (no vídeo em 00:00).
Hardware Explicado
Os principais componentes deste projeto incluem o microcontrolador ESP32, o joystick XY e um buzzer. O ESP32 é uma placa versátil que suporta Wi-Fi e Bluetooth, tornando-a ideal para projetos de IoT. O joystick XY consiste em dois resistores variáveis para os eixos X e Y, e um botão para entrada adicional.
O joystick emite sinais analógicos correspondentes à sua posição, que são lidos pelos pinos analógicos do ESP32. O botão pressionado fornece um sinal digital quando é apertado. O buzzer está conectado a um pino de saída digital no ESP32, permitindo que seja ativado ou desativado com base na posição do joystick.
Detalhes da Ficha Técnica
| Fabricante | SunFounder |
|---|---|
| Número da peça | Módulo de Joystick XY |
| Tensão de operação | 3,3 V - 5 V |
| Valor do Resistor | 10 kΩ (cada eixo) |
| Corrente Máxima | 20 mA |
| Tipo de Interruptor | Botão de pressão momentâneo |
| Dimensões | Aprox. 50 mm x 50 mm |
- Certifique-se de que o joystick esteja alimentado com 3,3 V para compatibilidade com o ESP32.
- Use resistores de pull-up para o interruptor para evitar entradas flutuantes.
- Conecte as saídas analógicas aos pinos ADC do ESP32 (34 para X, 35 para Y).
- Use um mecanismo de debounce para o interruptor a fim de evitar acionamentos falsos.
- Monitore os níveis de voltagem para garantir que permaneçam dentro dos limites seguros de operação.
Instruções de Fiação

Para conectar o joystick ao ESP32, comece ligando o pino de terra do joystick a um pino de terra no ESP32. Em seguida, conecte o pino VCC do joystick ao pino de 3,3 V do ESP32. O joystick possui dois pinos de saída analógica: conecte a saída do eixo X (etiquetada comoVRX) para fixar34no ESP32 e a saída do eixo Y (rotulada comoVRY) para fixar35.
Para a saída do interruptor, conecte o pino do interruptor ao pino33no ESP32. Este pino lerá a pressão do botão como uma entrada digital. Certifique-se de que as conexões estão seguras para evitar problemas intermitentes. Se a sua fiação diferir do vídeo (no vídeo às 02:30), adapte-se de acordo, seguindo os mesmos princípios para conexões analógicas e digitais.
Exemplos de Código e Passo a Passo
No texto, começamos definindo constantes para os pinos do joystick. Os identificadoresxAxis,yAxis, ebtnestão definidos para34,35, e33, respectivamente. Isso facilita a referência a esses pinos durante todo o programa.
#define xAxis 34
#define yAxis 35
#define btn 33
In thesetup()função, inicializamos a comunicação serial e definimos o modo do pino do botão como entrada. Isso prepara o ESP32 para ler dados do joystick e enviá-los para o monitor serial.
void setup() {
Serial.begin(115200);
pinMode(btn, INPUT);
}
Dentro doloop(), lemos os valores analógicos para os eixos X e Y do joystick usandoanalogRead()e armazená-los emxValueeyValue. O estado do botão é lido usandodigitalRead()e armazenado embtnValuePor fim, imprimimos esses valores no monitor serial.
void loop() {
int xValue = analogRead(xAxis);
int yValue = analogRead(yAxis);
int btnValue = digitalRead(btn);
Serial.printf("Joystick value is %d , %d , %d \n",xValue,yValue,btnValue);
delay(300); // Delay between reads
}
Esse loop atualiza continuamente os valores, fornecendo feedback em tempo real sobre o movimento do joystick e os pressionamentos de botões. Para o código completo, consulte o código completo carregado abaixo do artigo.
Demonstração / O que Esperar
Quando a configuração estiver completa e o código for carregado, o monitor serial deve exibir os valores de X e Y junto com o estado do botão. À medida que você move o joystick, os valores mudarão de acordo, refletindo sua posição. Pressionar o botão alternará seu estado entre alto e baixo.
Os erros comuns incluem fiações incorretas, que podem levar a entradas flutuantes ou à ausência de resposta do joystick. Certifique-se de que os pinos corretos estão sendo usados e de que os resistores pull-up estão implementados para o interruptor. Assista ao vídeo para demonstrações práticas desses comportamentos (no vídeo às 13:00).
Marcação de Vídeo
- 00:00 Início
- 1:47 Introdução ao Joystick XY
- 7:32 Medindo os valores do Joystick
- 8:40 Explicação da fiação
- 11:06 Código Arduino para Joystick com ESP32 explicado
- 14:43 Selecionando a placa ESP32 e a porta COM no Arduino IDE
- 16:24 Demonstração do uso simples do Joystick
- 19:20 Detectando a posição do código do joystick com o buzzer
- 21:16 Demonstração da detecção de posição
/*
* // Defina constantes para o eixo x e y e os pinos dos botões
*/
#define xAxis 34
#define yAxis 35
#define btn 33
void setup() {
// Inicialize a comunicação serial a 115200 bits por segundo:
Serial.begin(115200);
// Defina o modo do pino do botão como entrada.
pinMode(btn, INPUT);
}
void loop() {
// Leia o valor analógico para os eixos x e y.
int xValue = analogRead(xAxis);
int yValue = analogRead(yAxis);
// Leia o valor digital do pino do botão
int btnValue = digitalRead(btn);
// imprima os valores
Serial.printf("Joystick value is %d , %d , %d \n",xValue,yValue,btnValue);
delay(300); // Atraso entre leituras
}
Common Course Links
Common Course Files
Recursos e referências
-
DocumentaçãoTutorial ESP32 26/55 - Página do doc SunFounder para joystickdocs.sunfounder.com
Arquivos📁
Nenhum arquivo disponível.