Arduino WebSlider-Beispiel – Tutorial zur Steueroberfläche mit zwei Schiebereglern
Überblick
Das WebSlider-Beispiel bietet zwei unabhängige Schieberegler, die über einen Webbrowser zugänglich sind. Für die Arduino Uno R4 WiFi- und DIYables STEM V4 IoT-Bildungsplattform entwickelt mit erweiterten analogen Fähigkeiten, Präzisionssteuerungsfunktionen und integrierten Lernmodulen zum Erlernen von PWM und analoger Elektronik. Jeder Schieberegler bietet Werte von 0–255, was sie perfekt macht für PWM-Steuerung, Helligkeitsregelung, Motorsteuerung und jede Anwendung, die analoge Kontrollwerte erfordert.
Funktionen
Duale Schieberegler: Zwei unabhängige Schieberegler (jeweils im Bereich 0-255)
Werte in Echtzeit: Sofortige Werteaktualisierungen über WebSocket-Kommunikation
PWM-kompatibel: 8-Bit-Werte (0-255) perfekt für analogWrite()-Funktionen
Visuelles Feedback: Echtzeit-Wertanzeige für jeden Regler
Voreinstellungs-Buttons: Schnelle Voreinstellungswerte für gängige Konfigurationen
Touch- und Mausunterstützung: Funktioniert auf Desktop, Tablet und Mobilgeräten
Responsives Design: Passt sich an verschiedene Bildschirmgrößen an
Wertpersistenz: Die Regler merken sich die letzte Position, wenn die Seite neu geladen wird
Plattform-Erweiterbarkeit: Derzeit implementiert für Arduino Uno R4 WiFi, kann aber auf andere Hardware-Plattformen erweitert werden. Siehe DIYables_WebApps_ESP32
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.
Installationsanleitung
Schnelle Schritte
Folgen Sie diesen Anweisungen Schritt für Schritt:
Schließen Sie das Arduino Uno R4/DIYables STEM V4 IoT-Board über ein USB-Kabel an Ihren Computer an.
Öffnen Sie die Arduino IDE auf Ihrem Computer.
Wählen Sie das passende Arduino Uno R4-Board (z. B. Arduino Uno R4 WiFi) und den COM-Port aus.
Navigieren Sie zum Libraries-Symbol in der linken Leiste der Arduino IDE.
Suchen Sie "DIYables WebApps", und finden Sie anschließend die DIYables WebApps-Bibliothek von DIYables.
Klicken Sie auf Install, um die Bibliothek zu installieren.
Sie werden dazu aufgefordert, einige weitere Bibliotheksabhängigkeiten zu installieren.
Klicken Sie auf die Schaltfläche Alle installieren, um alle Bibliotheksabhängigkeiten zu installieren.
Im Arduino IDE gehen Sie zu Datei Beispiele DIYables WebApps WebSlider Beispiel, oder kopieren Sie den obigen Code und fügen Sie ihn in den Editor der Arduino IDE ein
/* * DIYables WebApp Library - Web Slider Example * * This example demonstrates the Web Slider feature: * - Two independent sliders (0-255) * - Real-time value monitoring * - Template for hardware control * * Hardware: Arduino Uno R4 WiFi or DIYables STEM V4 IoT * * 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]/webslider */#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 instancesUnoR4ServerFactory serverFactory;DIYablesWebAppServerwebAppsServer(serverFactory, 80, 81);DIYablesHomePage homePage;DIYablesWebSliderPage webSliderPage;// Current slider valuesint slider1Value = 64; // Default 25%int slider2Value = 128; // Default 50%voidsetup() {Serial.begin(9600);delay(1000);// TODO: Initialize your hardware pins hereSerial.println("DIYables WebApp - Web Slider Example");// Add home and web slider pageswebAppsServer.addApp(&homePage);webAppsServer.addApp(&webSliderPage);// 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 slider callback for value changes webSliderPage.onSliderValueFromWeb([](int slider1, int slider2) {// Store the received values slider1Value = slider1; slider2Value = slider2;// Print slider values (0-255)Serial.println("Slider 1: " + String(slider1) + ", Slider 2: " + String(slider2));// TODO: Add your control logic here based on slider values// Examples:// - Control PWM: analogWrite(LED_PIN, slider1);// - Control servos: servo.write(map(slider1, 0, 255, 0, 180));// - Control motor speed: analogWrite(MOTOR_PIN, slider2);// - Control brightness: strip.setBrightness(slider1);// - Send values via Serial, I2C, SPI, etc. });// Set up callback for config requests (when client requests current values) webSliderPage.onSliderValueToWeb([]() { webSliderPage.sendToWebSlider(slider1Value, slider2Value);Serial.println("Web client requested values - Sent: Slider1=" + String(slider1Value) + ", Slider2=" + String(slider2Value)); });}voidloop() {// Handle WebApp server communicationswebAppsServer.loop();// TODO: Add your main application code heredelay(10);}
Konfigurieren Sie die WLAN-Anmeldeinformationen im Code, indem Sie diese Zeilen aktualisieren:
Klicken Sie in der Arduino IDE auf die Hochladen-Schaltfläche, um Code auf den Arduino UNO R4/DIYables STEM V4 IoT hochzuladen
Öffnen Sie den seriellen Monitor.
Überprüfen Sie das Ergebnis im seriellen Monitor. Es sieht wie folgt aus:
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno R4 WiFi
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno R4 WiFi' on 'COM15')
New Line
9600 baud
DIYables WebApp - Web Slider Example
INFO: Added app /
INFO: Added app /web-slider
DIYables WebApp Library
Platform: Arduino Uno R4 WiFi
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 Slider: http://192.168.0.2/web-slider
==========================================
Ln 11, Col 1
Arduino Uno R4 WiFi on COM15
2
Wenn Sie nichts sehen, starten Sie das Arduino-Board neu.
Notieren Sie die angezeigte IP-Adresse und geben Sie diese Adresse in die Adressleiste eines Webbrowsers auf Ihrem Smartphone oder PC ein.
Beispiel: http://192.168.0.2
Sie sehen die Startseite wie im unten gezeigten Bild:
Klicken Sie auf den Web Slider-Link; dann sehen Sie die Benutzeroberfläche der Web Slider-App wie unten dargestellt:
Alternativ können Sie die Seite auch direkt über die IP-Adresse aufrufen, gefolgt von /web-slider. Zum Beispiel: http://192.168.0.2/web-slider
Versuchen Sie, die beiden Schieberegler zu bewegen, um analoge Werte (0–255) zu steuern, und beobachten Sie das Feedback in Echtzeit im seriellen Monitor.
Kreative Anpassung – Den Code an Ihr Projekt anpassen
Standardwerte der Schieberegler festlegen
Anfangspositionen der Schieberegler konfigurieren:
PWM-Kompatibilität: Direkte Verwendung mit der Funktion analogWrite()
Programmierbeispiele
Grundlegender Schieberegler-Handler
voidsetup() {// Set up slider callback for value changes webSliderPage.onSliderValueFromWeb([](int slider1, int slider2) {// Store the received values slider1Value = slider1; slider2Value = slider2;// Print slider values (0-255)Serial.println("Slider 1: " + String(slider1) + ", Slider 2: " + String(slider2));// Add your control logic here });}
LED-Helligkeitssteuerung
// Pin definitions for PWM LEDsconstint LED1_PIN = 9; // PWM pin for first LEDconstint LED2_PIN = 10; // PWM pin for second LEDvoidsetup() {// Configure LED pins as outputspinMode(LED1_PIN, OUTPUT);pinMode(LED2_PIN, OUTPUT);// Set initial brightnessanalogWrite(LED1_PIN, slider1Value);analogWrite(LED2_PIN, slider2Value); webSliderPage.onSliderValueFromWeb([](int slider1, int slider2) {// Store values slider1Value = slider1; slider2Value = slider2;// Control LED brightness directly (0-255 PWM)analogWrite(LED1_PIN, slider1);analogWrite(LED2_PIN, slider2);Serial.println("LED1 Brightness: " + String(slider1) +", LED2 Brightness: " + String(slider2)); });}
void setupThresholdControl() { webSliderPage.onSliderValueFromWeb([](int slider1, int slider2) { slider1Value = slider1; slider2Value = slider2;// Threshold-based control for discrete outputsconstint LOW_THRESHOLD = 85; // 33%constint MEDIUM_THRESHOLD = 170; // 66%// Control digital outputs based on slider 1 thresholdsif (slider1 < LOW_THRESHOLD) {// Low level: Turn off all outputsdigitalWrite(2, LOW);digitalWrite(3, LOW);digitalWrite(4, LOW); } elseif (slider1 < MEDIUM_THRESHOLD) {// Medium level: Turn on first outputdigitalWrite(2, HIGH);digitalWrite(3, LOW);digitalWrite(4, LOW); } else {// High level: Turn on all outputsdigitalWrite(2, HIGH);digitalWrite(3, HIGH);digitalWrite(4, HIGH); }// Use slider 2 for analog PWM controlanalogWrite(9, slider2); });}
Voreinstellungswertsystem
// Predefined preset valuesconstint PRESETS[][2] = { {0, 0}, // Preset 0: Both off {64, 128}, // Preset 1: Low/Medium {128, 128}, // Preset 2: Both medium {255, 128}, // Preset 3: High/Medium {255, 255} // Preset 4: Both maximum};void applyPreset(int presetNumber) {if (presetNumber >= 0 && presetNumber < 5) { slider1Value = PRESETS[presetNumber][0]; slider2Value = PRESETS[presetNumber][1];// Update hardwareanalogWrite(9, slider1Value);analogWrite(10, slider2Value);// Send updated values to web interface webSliderPage.sendToWebSlider(slider1Value, slider2Value);Serial.println("Applied preset " + String(presetNumber) +": " + String(slider1Value) + ", " + String(slider2Value)); }}void setupPresetSystem() {// You could trigger presets based on other inputs// For example, reading digital pins for preset buttons webSliderPage.onSliderValueFromWeb([](int slider1, int slider2) { slider1Value = slider1; slider2Value = slider2;// Your normal slider handlinganalogWrite(9, slider1);analogWrite(10, slider2); });}voidloop() { server.loop();// Check for preset trigger conditions// Example: Read buttons connected to digital pinsstaticbool lastButton = false;bool currentButton = digitalRead(7); // Preset button on pin 7if (currentButton && !lastButton) { // Button pressedstaticint currentPreset = 0; applyPreset(currentPreset); currentPreset = (currentPreset + 1) % 5; // Cycle through presets } lastButton = currentButton;}
Beispiele zur Hardware-Integration
LED-Streifensteuerung
// For WS2812B or similar addressable LED strips// (requires additional libraries like FastLED or Adafruit NeoPixel)constint LED_STRIP_PIN = 6;constint NUM_LEDS = 30;void setupLEDStrip() {// Initialize LED strip (depends on library used) webSliderPage.onSliderValueFromWeb([](int slider1, int slider2) { slider1Value = slider1; slider2Value = slider2;// Slider 1 controls brightness (0-255)// Slider 2 controls color temperature or hueuint8_t brightness = slider1;uint8_t hue = slider2;// Update LED strip (example with conceptual functions)// strip.setBrightness(brightness);// strip.fill(CHSV(hue, 255, 255));// strip.show();Serial.println("LED Strip - Brightness: " + String(brightness) +", Hue: " + String(hue)); });}
Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!