Exemplo Arduino WebJoystick - Tutorial de Controle com Joystick Virtual
Visão Geral
O exemplo WebJoystick cria uma interface de joystick virtual, acessível de qualquer navegador web. Projetado para a plataforma educacional Arduino Uno R4 WiFi e DIYables STEM V4 IoT, com recursos avançados de robótica, controle de motores integrado e integração perfeita com módulos educacionais de robótica. Perfeito para controlar robôs, veículos ou qualquer sistema que precise de uma entrada de posição 2D.

Recursos
- Joystick Virtual: Controle de joystick interativo pela interface web
- Coordenadas em Tempo Real: Valores X/Y de -100 a +100 para controle preciso
- Suporte a Toque e Mouse: Funciona em desktop, tablet e celular
- Retorno Automático Configurável: Opção para o joystick voltar ao centro quando solto
- Controle de Sensibilidade: Sensibilidade ajustável para evitar atualizações em excesso
- Retorno Visual: Exibição da posição e dos valores das coordenadas em tempo real
- Comunicação WebSocket: Resposta instantânea sem recarregar a página
- Posição Central: Indicador claro da posição central para controle neutro
- Plataforma Extensível: Atualmente implementada para o Arduino Uno R4 WiFi, mas pode ser estendida para outras plataformas de hardware. Veja DIYables_WebApps_ESP32
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables STEM V4 IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables STEM V4B IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Instruções de Configuração
Passos Rápidos
Siga estas instruções passo a passo:
- Se esta é a sua primeira vez usando o Arduino Uno R4 WiFi/DIYables STEM V4 IoT, consulte o tutorial sobre como configurar o ambiente para o Arduino Uno R4 WiFi/DIYables STEM V4 IoT no Arduino IDE.
- Conecte a placa Arduino Uno R4/DIYables STEM V4 IoT ao seu computador usando um cabo USB.
- Abra o Arduino IDE no seu computador.
- Selecione a placa Arduino Uno R4 apropriada (por exemplo, Arduino Uno R4 WiFi) e a porta COM.
- Navegue até o ícone Libraries na barra esquerda do Arduino IDE.
- Pesquise "DIYables WebApps" e encontre a biblioteca DIYables WebApps, da DIYables
- Clique no botão Install para instalar a biblioteca.

- Você será perguntado se quer instalar outras bibliotecas das quais ela depende
- Clique no botão Install All para instalar todas as dependências da biblioteca.

- No Arduino IDE, vá em File Examples DIYables WebApps WebJoystick para abrir o exemplo, ou copie o código acima e cole no editor do Arduino IDE
- Configure as credenciais do WiFi no código atualizando estas linhas:
- Clique no botão Upload no Arduino IDE para carregar o código no Arduino UNO R4/DIYables STEM V4 IoT
- Abra o Serial Monitor
- Veja o resultado no Serial Monitor. Ele deve ficar parecido com o abaixo
- Se você não vir nada, reinicie a placa Arduino.
- Anote o endereço IP exibido e digite esse endereço na barra de endereços de um navegador web no seu celular ou PC.
- Exemplo: http://192.168.0.2
- Você verá a home page como na imagem abaixo:

- Clique no link Web Joystick e você verá a interface do app Web Joystick como abaixo:

- Você também pode acessar a página diretamente pelo endereço IP seguido de /web-joystick. Por exemplo: http://192.168.0.2/web-joystick
- Tente controlar o joystick virtual clicando e arrastando na área do joystick e observe os valores das coordenadas X/Y (-100 a +100) no Serial Monitor.
Personalização Criativa - Adapte o Código ao Seu Projeto
2. Configure o Joystick
O joystick pode ser configurado com parâmetros diferentes:
Configuração Básica
Configuração Avançada
Como Usar o Joystick
Controles da Interface Web
A interface do joystick oferece:
- Área do Joystick: Área circular de controle para entrada por toque/mouse
- Indicador de Posição: Mostra a posição atual do joystick
- Exibição das Coordenadas: Valores X/Y em tempo real (-100 a +100)
- Ponto Central: Referência visual para a posição neutra
Operando o Joystick
Desktop (Controle com Mouse)
- Clicar e Arrastar: Clique no joystick e arraste para mover
- Soltar: O joystick volta ao centro (se autoReturn=true)
- Clicar na Posição: Clique direto para definir a posição do joystick
Celular/Tablet (Controle por Toque)
- Tocar e Arrastar: Toque no joystick e arraste o dedo para mover
- Multitoque: Use um único dedo para controle preciso
- Soltar: Retorno automático ao centro (se ativado)
Sistema de Coordenadas
O joystick fornece coordenadas em um sistema cartesiano padrão:
- Eixo X: -100 (totalmente à esquerda) a +100 (totalmente à direita)
- Eixo Y: -100 (totalmente para baixo) a +100 (totalmente para cima)
- Centro: X=0, Y=0 (posição neutra)
- Cantos: As posições diagonais fornecem valores X/Y combinados
Exemplos de Programação
Tratador Básico do Joystick
Exemplo de Controle de Motor
Exemplo de Controle de Servo
Indicador de Posição com LEDs
Configuração Avançada
Mudanças de Configuração em Tempo de Execução
Implementação de Zona Morta (Dead Zone)
Rampa de Velocidade
Exemplos de Integração de Hardware
Controle de Carrinho Robô
Controle de Gimbal de Câmera
Controle de Cor de LED RGB
Solução de Problemas
Problemas Comuns
1. O joystick não responde
- Verifique o status da conexão WebSocket no console do navegador
- Confirme a conectividade de rede
- Atualize a página do navegador
- Verifique o Serial Monitor em busca de erros
2. Movimento brusco ou inconsistente
- Aumente o valor de sensibilidade para reduzir a frequência de atualização
- Implemente a filtragem de zona morta (dead zone)
- Adicione rampa de velocidade para transições suaves
- Verifique problemas de latência de rede
3. O retorno automático não funciona
- Confirme a configuração autoReturn: webJoystickPage.setAutoReturn(true)
- Verifique a compatibilidade do navegador (alguns dispositivos de toque variam)
- Teste com diferentes métodos de entrada (mouse e toque)
4. Os valores não alcançam a faixa completa
- Verifique a calibração do joystick na interface web
- Confirme os cálculos de coordenadas no callback
- Teste com diferentes combinações de navegador/dispositivo
Dicas de Depuração
Adicione depuração completa:
Ideias de Projetos
Projetos de Robótica
- Carrinho robô controlado remotamente
- Controle de braço robótico
- Controle de voo de drone (movimentos básicos)
- Navegação de robô de estimação
Automação Residencial
- Controle de cortina inteligente (abrir/fechar/posição)
- Controle de pan/tilt de câmera
- Controle de brilho e cor das luzes
- Controle de velocidade e direção de ventilador
Projetos Educacionais
- Ferramenta para ensinar sistemas de coordenadas
- Demonstrações de controle de motores
- Experimentos de posicionamento de servo
- Interfaces de controle para jogos
Projetos de Arte e Criatividade
- Controle de padrões em matriz de LED
- Controle de visualização musical
- Controle de robô desenhista
- Instalações de arte interativas
Integração com Outros Exemplos
Combine com o WebSlider
Use o joystick para a direção e os sliders para a velocidade/intensidade:
Combine com o WebDigitalPins
Use as posições do joystick para acionar o estado de pinos digitais:
Próximos Passos
Depois de dominar o exemplo WebJoystick, experimente:
- WebSlider - Para controle analógico adicional
- WebDigitalPins - Para controle discreto liga/desliga
- WebMonitor - Para depurar os valores do joystick
- MultipleWebApps - Combinando o joystick com outros controles
Suporte
Para obter mais ajuda:
- Consulte a documentação de Referência da API
- Visite os tutoriais da DIYables: https://newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-diyables-webapps
- Fóruns da comunidade Arduino