Het WebJoystick voorbeeld maakt een virtuele joystick-interface die toegankelijk is via elke webbrowser. Ontwikkeld voor het ESP32 educatieve platform met verbeterde robotica mogelijkheden, ingebouwde motorbesturing en naadloze integratie met robotica educatiemodules. Perfect voor het aansturen van robots, voertuigen of elk systeem dat 2D-positie-invoer nodig heeft.
Kenmerken
Virtuele Joystick: Interactieve joystick bediening via webinterface
Realtime Coördinaten: X/Y waardes van -100 tot +100 voor nauwkeurige controle
Touch & Muis Ondersteuning: Werkt op desktop, tablet en mobiele apparaten
Configureerbare Auto-Terugkeer: Optie om joystick automatisch naar het midden te laten gaan bij loslaten
Gevoeligheidsregeling: Instelbare gevoeligheid om overbodige updates te voorkomen
Visuele Feedback: Weergave van realtime positie en coördinaatwaarden
WebSocket Communicatie: Directe respons zonder pagina verversen
Centrumpositie: Duidelijke aanduiding van de neutrale startpositie
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.
Verbind de ESP32 met uw computer via een USB-kabel.
Start de Arduino IDE op uw computer.
Selecteer het juiste ESP32 board (bijvoorbeeld ESP32 Dev Module) en de juiste COM-poort.
Ga naar het Libraries icoon in de linker balk van de Arduino IDE.
Zoek op "DIYables ESP32 WebApps" en vind de DIYables ESP32 WebApps Library van DIYables.
Klik op de Install knop om de library te installeren.
Er wordt gevraagd om aanvullende library-afhankelijkheden te installeren.
Klik op de Install All knop om alle afhankelijkheden te installeren.
In de Arduino IDE, ga naar File Examples DIYables ESP32 WebApps WebJoystick voorbeeld, of kopieer de code bovenaan en plak deze in de Arduino IDE editor.
/* * DIYables WebApp Library - Web Joystick Example * * This example demonstrates the Web Joystick feature: * - Interactive joystick control via web interface * - Real-time X/Y coordinate values (-100 to +100) * - Control pins based on joystick position * * Hardware: ESP32 Boards * * Setup: * 1. Update WiFi credentials below * 2. Upload the sketch to your Arduino * 3. Open Serial Monitor to see the IP address * 4. Navigate to http://[IP_ADDRESS]/webjoystick */#include <DIYables_ESP32_Platform.h>#include <DIYablesWebApps.h>// WiFi credentials - UPDATE THESE WITH YOUR NETWORKconstchar WIFI_SSID[] = "YOUR_WIFI_SSID";constchar WIFI_PASSWORD[] = "YOUR_WIFI_PASSWORD";// Create WebApp server and page instances// MEMORY SAFETY FIX: Use static factory to avoid stack object lifetime issuesstatic ESP32ServerFactory serverFactory; // Static ensures lifetime matches programDIYablesWebAppServerwebAppsServer(serverFactory, 80, 81);DIYablesHomePage homePage;// Configure joystick with autoReturn=false and sensitivity=5 (minimum 5% change to trigger updates)DIYablesWebJoystickPage webJoystickPage(false, 5);// Variables to store current joystick valuesint currentJoystickX = 0;int currentJoystickY = 0;voidsetup() {Serial.begin(9600);delay(1000);// TODO: initialize your hardware pins hereSerial.println("DIYables ESP32 WebApp - Web Joystick Example");// Add home and web joystick pageswebAppsServer.addApp(&homePage);webAppsServer.addApp(&webJoystickPage);// Optional: Add 404 page for better user experiencewebAppsServer.setNotFoundPage(DIYablesNotFoundPage());// Start the WebApp serverif (!webAppsServer.begin(WIFI_SSID, WIFI_PASSWORD)) {while (1) {Serial.println("Failed to start WebApp server!");delay(1000); } }// Set up joystick callback for position changes webJoystickPage.onJoystickValueFromWeb([](int x, int y) {// Store the received values currentJoystickX = x; currentJoystickY = y;// Print joystick position values (-100 to +100)Serial.println("Joystick - X: " + String(x) + ", Y: " + String(y));// TODO: Add your control logic here based on joystick position// Examples:// - Control motors: if (x > 50) { /* move right */ }// - Control servos: servo.write(map(y, -100, 100, 0, 180));// - Control LEDs: analogWrite(LED_PIN, map(abs(x), 0, 100, 0, 255));// - Send commands to other devices via Serial, I2C, SPI, etc. });// Optional: Handle requests for current joystick values (when web page loads) webJoystickPage.onJoystickValueToWeb([]() {// Send the stored joystick values back to the web client webJoystickPage.sendToWebJoystick(currentJoystickX, currentJoystickY);Serial.println("Web client requested values - Sent to Web: X=" + String(currentJoystickX) + ", Y=" + String(currentJoystickY)); });// You can change configuration at runtime:// webJoystickPage.setAutoReturn(false); // Disable auto-return// webJoystickPage.setSensitivity(10.0); // Only send updates when joystick moves >10% (less sensitive)}voidloop() {// Handle WebApp server communicationswebAppsServer.loop();// TODO: Add your main application code heredelay(10);}
Stel in de code uw WiFi-gegevens in door deze regels te bewerken:
Klik in Arduino IDE op de Upload knop om de code naar de ESP32 te uploaden.
Open de Seriële Monitor.
Bekijk het resultaat op de Seriële Monitor. Het ziet er ongeveer zo uit:
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
DIYables WebApp - Web Joystick Example
INFO: Added app /
INFO: Added app /web-joystick
DIYables WebApp Library
Platform: ESP32
Network connected!
IP address: 192.168.0.2
HTTP server started on port 80
Configuring WebSocket server callbacks...
WebSocket server started on port 81
WebSocket URL: ws://192.168.0.2:81
WebSocket server started on port 81
==========================================
DIYables WebApp Ready!
==========================================
📱 Web Interface: http://192.168.0.2
🔗 WebSocket: ws://192.168.0.2:81
📋 Available Applications:
🏠 Home Page: http://192.168.0.2/
🕹️ Web Joystick: http://192.168.0.2/web-joystick
==========================================
Ln 11, Col 1
ESP32 Dev Module on COM15
2
Als u niets ziet, herstart dan de ESP32.
Noteer het IP-adres dat verschijnt en typ dit adres in de adresbalk van een webbrowser op uw smartphone of computer.
Bijvoorbeeld: http://192.168.0.2
U ziet de startpagina zoals hieronder:
Klik op de Web Joystick-link, u ziet dan de UI van de Web Joystick applicatie zoals hieronder:
U kunt ook direct de pagina openen door het IP-adres te gebruiken gevolgd door /web-joystick. Bijvoorbeeld: http://192.168.0.2/web-joystick
Probeer de virtuele joystick te bedienen door te klikken en te slepen binnen het joystickgebied en observeer de X/Y coördinaten (-100 tot +100) in de Seriële Monitor.
Creatieve Aanpassingen - Pas de Code aan voor Uw Project
2. Joystick Instellingen Configureren
De joystick kan met verschillende parameters worden ingesteld:
Basisconfiguratie
// Maak joystick aan met standaardinstellingen (autoReturn=true, sensitivity=1) DIYablesWebJoystickPage webJoystickPage;
Geavanceerde Configuratie
// Maak joystick aan met aangepaste instellingen // autoReturn=false: Joystick blijft op laatste positie bij loslaten // sensitivity=5: Alleen updates versturen bij beweging > 5% DIYablesWebJoystickPage webJoystickPage(false, 5);
Hoe de Joystick te Gebruiken
Webinterface bediening
De joystick-interface biedt:
Joystick Pad: Cirkelvormig bedieningsvlak voor touch/muis invoer
Positie-indicator: Toont de huidige joystickpositie
Coördinatenweergave: Realtime X/Y waardes (-100 tot +100)
Middelpunt: Visuele referentie voor neutrale positie
Joystick bedienen
Desktop (muissturing)
Klik en sleep: Klik op de joystick en sleep om te bewegen
Loslaten: Joystick keert terug naar het midden (als autoReturn=true)
Klikpositie: Direct klikken om joystickpositie in te stellen
Mobiel/Tablet (touchbediening)
Aanraken en slepen: Raak joystick aan en sleep met vinger om te bewegen
Multitouch: Gebruik een vinger voor nauwkeurige besturing
Loslaten: Automatisch terug naar midden (indien ingeschakeld)
Coördinatensysteem
De joystick geeft coördinaten in een standaard Cartesian systeem:
X-as: -100 (volledig links) tot +100 (volledig rechts)
Y-as: -100 (volledig omlaag) tot +100 (volledig omhoog)
Midden: X=0, Y=0 (neutrale positie)
Hoeken: Diagonale posities combineren X/Y waardes
Programmeer Voorbeelden
Basis Joystick Handler
voidsetup() { // Stel joystick callback in voor positieveranderingen webJoystickPage.onJoystickValueFromWeb([](int x, int y) { // Sla ontvangen waardes op currentJoystickX = x; currentJoystickY = y; // Print joystick positie waardes Serial.println("Joystick - X: " + String(x) + ", Y: " + String(y)); // Plaats hier uw besturingslogica }); }
Gebruik joystick voor richting en sliders voor snelheid/intensiteit:
// Gebruik joystick voor richting, sliders voor snelheidslimieten webJoystickPage.onJoystickValueFromWeb([](int x, int y) { intmaxSpeed = getSliderValue(); // Van WebSlider int scaledX = map(x, -100, 100, -maxSpeed, maxSpeed); int scaledY = map(y, -100, 100, -maxSpeed, maxSpeed); controlRobot(scaledX, scaledY); });
Combineren met WebDigitalPins
Gebruik joystickposities om digitale pinstatussen te triggeren:
webJoystickPage.onJoystickValueFromWeb([](int x, int y) { // Activeer pinnen op basis van joystick kwadranten webDigitalPinsPage.setPinState(2, x > 50); // Rechts kwadrant webDigitalPinsPage.setPinState(3, x < -50); // Links kwadrant webDigitalPinsPage.setPinState(4, y > 50); // Boven kwadrant webDigitalPinsPage.setPinState(5, y < -50); // Onder kwadrant });
Volgende stappen
Na het beheersen van het WebJoystick voorbeeld kunt u proberen:
WebSlider - Voor extra analoge bediening
WebDigitalPins - Voor discrete aan/uit besturing
WebMonitor - Voor debugging van joystickwaardes
MultipleWebApps - Combineren van joystick met andere bedieningselementen
U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!