ESP32 Bluetooth Slider Voorbeeld - Dual Slider Bediening Interface Tutorial
Overzicht
Het Bluetooth Slider voorbeeld biedt twee onafhankelijke schuifregelaars die toegankelijk zijn via de DIYables Bluetooth STEM-app. Ontworpen voor ESP32 boards met ondersteuning voor zowel BLE (Bluetooth Low Energy) als Classic Bluetooth verbindingen. Elke slider geeft waarden van 0-100, wat ze perfect maakt voor PWM-besturing, helderheidsregeling, motorsnelheidsregeling en elk ander project dat analoge-achtige controlwaarden vereist.
Dit voorbeeld ondersteunt twee Bluetooth-modi:
ESP32 BLE (Bluetooth Low Energy): werkt op zowel Android als iOS
ESP32 Classic Bluetooth: werkt alleen op Android. iOS ondersteunt geen Classic Bluetooth. Gebruik BLE als u iOS-ondersteuning nodig heeft.
Kenmerken
Dubbele Sliders: Twee onafhankelijke schuifregelaars (bereik 0-100 elk)
Realtime Waarden: Directe waarde-updates via Bluetooth-communicatie
PWM Compatibel: Waarden (0-100) makkelijk te mappen naar analogWrite() functies
Visuele Feedback: Realtime waardewaardeweergave voor elke slider in de app
BLE & Classic Bluetooth: Kies de Bluetooth-modus die bij uw project past
Cross-Platform: BLE modus werkt op Android en iOS; Classic Bluetooth werkt op Android alleen
Laag Vermogensverbruik: BLE gebruikt minder energie dan Classic Bluetooth
Configureerbaar Bereik & Stapgrootte: Pas sliderbereik en stapgrootte aan tijdens runtime
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 het ESP32-board met uw computer via een USB-kabel.
Start de Arduino IDE op uw computer.
Selecteer het juiste ESP32-board en de juiste COM-poort.
Ga naar het Libraries icoon in de linkerbalk van de Arduino IDE.
Zoek naar "DIYables Bluetooth" en zoek dan de DIYables Bluetooth bibliotheek van DIYables.
Klik op de Install knop om de bibliotheek te installeren.
Er wordt gevraagd om aanvullende bibliotheekafhankelijkheden te installeren.
Klik op de Install All knop om alle afhankelijkheden te installeren.
Kies een van de twee Bluetooth-modi hieronder, afhankelijk van uw wensen:
ESP32 Classic Bluetooth Code (werkt alleen met app op Android)
Let op: Classic Bluetooth wordt NIET ondersteund op iOS. Heeft u iOS-ondersteuning nodig, gebruik dan de BLE-code hieronder.
In de Arduino IDE, ga naar Bestand Voorbeelden DIYables Bluetooth Esp32Bluetooth_Slider, of kopieer de bovenstaande code en plak deze in de editor van de Arduino IDE
/* * DIYables Bluetooth Library - ESP32 Classic Bluetooth Slider Example * Works with DIYables Bluetooth STEM app on Android * Note: Classic Bluetooth is NOT supported on iOS. Use BLE examples for iOS support. * * This example demonstrates the Bluetooth Slider feature: * - Control values using sliders (0-100) * - Support for dual sliders * - Configurable range and step * * Compatible Boards: * - ESP32 (all variants with Classic Bluetooth) * - ESP32-WROOM-32 * - ESP32-DevKitC * - ESP32-WROVER * * Note: Select "Huge APP (3MB No OTA/1MB SPIFFS)" partition scheme * in Arduino IDE: Tools > Partition Scheme * * Setup: * 1. Upload the sketch to your ESP32 * 2. Open Serial Monitor (115200 baud) to see connection status * 3. Use DIYables Bluetooth App to connect and control sliders * * Tutorial: https://diyables.io/bluetooth-app * Author: DIYables */#include <DIYables_BluetoothServer.h>#include <DIYables_BluetoothSlider.h>#include <platforms/DIYables_Esp32Bluetooth.h>// Create Bluetooth instancesDIYables_Esp32Bluetooth bluetooth("ESP32_Slider");DIYables_BluetoothServer bluetoothServer(bluetooth);// Create Slider app instance (min=0, max=100, step=1)DIYables_BluetoothSlider bluetoothSlider(0, 100, 1);// Variables to store current slider valuesint currentSlider1 = 0;int currentSlider2 = 0;// PWM output pins (for LED brightness control example)constint PWM_PIN_1 = 16;constint PWM_PIN_2 = 17;// ESP32 LEDC PWM channelsconstint PWM_CHANNEL_1 = 0;constint PWM_CHANNEL_2 = 1;voidsetup() {Serial.begin(115200);delay(1000);Serial.println("DIYables Bluetooth - ESP32 Slider Example");// Initialize PWM using ESP32 LEDC ledcSetup(PWM_CHANNEL_1, 5000, 8); // 5kHz, 8-bit resolution ledcSetup(PWM_CHANNEL_2, 5000, 8); ledcAttachPin(PWM_PIN_1, PWM_CHANNEL_1); ledcAttachPin(PWM_PIN_2, PWM_CHANNEL_2);// Initialize Bluetooth server with platform-specific implementation bluetoothServer.begin();// Add slider app to server bluetoothServer.addApp(&bluetoothSlider);// Set up connection event callbacks bluetoothServer.setOnConnected([]() {Serial.println("Bluetooth connected!");// Send initial slider positions bluetoothSlider.send(currentSlider1, currentSlider2); }); bluetoothServer.setOnDisconnected([]() {Serial.println("Bluetooth disconnected!"); });// Set up slider callback for value changes bluetoothSlider.onSliderValue([](int slider1, int slider2) {// Store the received values currentSlider1 = slider1; currentSlider2 = slider2;// Print slider values (0-100)Serial.print("Slider 1: ");Serial.print(slider1);Serial.print(", Slider 2: ");Serial.println(slider2);// Map slider values (0-100) to PWM range (0-255)int pwm1 = map(slider1, 0, 100, 0, 255);int pwm2 = map(slider2, 0, 100, 0, 255);// Control LED brightness using ESP32 LEDC ledcWrite(PWM_CHANNEL_1, pwm1); ledcWrite(PWM_CHANNEL_2, pwm2);// TODO: Add your control logic here based on slider values// Examples:// - Servo control: myServo.write(map(slider1, 0, 100, 0, 180));// - Motor speed: ledcWrite(MOTOR_CHANNEL, pwm1);// - Volume control: setVolume(slider1);// - Brightness control: setBrightness(slider2); });// Optional: Handle requests for current slider values (when app loads) bluetoothSlider.onGetConfig([]() {// Send the stored slider values back to the app bluetoothSlider.send(currentSlider1, currentSlider2);Serial.print("App requested values - Sent: Slider1=");Serial.print(currentSlider1);Serial.print(", Slider2=");Serial.println(currentSlider2); });// You can change slider configuration at runtime:// bluetoothSlider.setRange(0, 255); // Change range to 0-255// bluetoothSlider.setStep(5); // Change step to 5 (coarser control)Serial.println("Waiting for Bluetooth connection...");}voidloop() {// Handle Bluetooth server communications bluetoothServer.loop();delay(10);}
Klik op de Upload knop in de Arduino IDE om de code naar de ESP32 te uploaden
Open de Serial Monitor
Bekijk het resultaat in de Serial Monitor. Deze ziet er als volgt 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 Bluetooth - ESP32 Slider Voorbeeld
Waiting for Bluetooth connection...
Ln 11, Col 1
ESP32 Dev Module on COM15
2
ESP32 BLE Code (werkt met app op Android en iOS)
In de Arduino IDE, ga naar Bestand Voorbeelden DIYables Bluetooth Esp32BLE_Slider, of kopieer de bovenstaande code en plak deze in de editor van Arduino IDE
/* * DIYables Bluetooth Library - ESP32 BLE Slider Example * Works with DIYables Bluetooth STEM app on Android and iOS * * This example demonstrates the Bluetooth Slider feature: * - Control values using sliders (0-100) * - Support for dual sliders * - Configurable range and step * * Compatible Boards: * - ESP32-WROOM-32 * - ESP32-DevKitC * - ESP32-WROVER * - ESP32-S3 * - ESP32-C3 * - Any ESP32 board supporting BLE * * Note: Select "Huge APP (3MB No OTA/1MB SPIFFS)" partition scheme * in Arduino IDE: Tools > Partition Scheme * * Setup: * 1. Upload the sketch to your ESP32 * 2. Open Serial Monitor (115200 baud) to see connection status * 3. Use DIYables Bluetooth App to connect and control sliders * * Tutorial: https://diyables.io/bluetooth-app * Author: DIYables */#include <DIYables_BluetoothServer.h>#include <DIYables_BluetoothSlider.h>#include <platforms/DIYables_Esp32BLE.h>// BLE Configurationconst char* DEVICE_NAME = "ESP32BLE_Slider";const char* SERVICE_UUID = "19B10000-E8F2-537E-4F6C-D104768A1214";const char* TX_UUID = "19B10001-E8F2-537E-4F6C-D104768A1214";const char* RX_UUID = "19B10002-E8F2-537E-4F6C-D104768A1214";// Create Bluetooth instancesDIYables_Esp32BLE bluetooth(DEVICE_NAME, SERVICE_UUID, TX_UUID, RX_UUID);DIYables_BluetoothServer bluetoothServer(bluetooth);// Create Slider app instance (min=0, max=100, step=1)DIYables_BluetoothSlider bluetoothSlider(0, 100, 1);// Variables to store current slider valuesint currentSlider1 = 0;int currentSlider2 = 0;// PWM output pinsconstint PWM_PIN_1 = 16;constint PWM_PIN_2 = 17;voidsetup() {Serial.begin(115200);delay(1000);Serial.println("DIYables Bluetooth - ESP32 BLE Slider Example");// Initialize PWM pinspinMode(PWM_PIN_1, OUTPUT);pinMode(PWM_PIN_2, OUTPUT);// Initialize Bluetooth server with platform-specific implementation bluetoothServer.begin();// Add slider app to server bluetoothServer.addApp(&bluetoothSlider);// Set up connection event callbacks bluetoothServer.setOnConnected([]() {Serial.println("Bluetooth connected!"); bluetoothSlider.send(currentSlider1, currentSlider2); }); bluetoothServer.setOnDisconnected([]() {Serial.println("Bluetooth disconnected!"); });// Set up slider callback for value changes bluetoothSlider.onSliderValue([](int slider1, int slider2) { currentSlider1 = slider1; currentSlider2 = slider2;Serial.print("Slider 1: ");Serial.print(slider1);Serial.print(", Slider 2: ");Serial.println(slider2);// Map slider values (0-100) to PWM range (0-255)int pwm1 = map(slider1, 0, 100, 0, 255);int pwm2 = map(slider2, 0, 100, 0, 255);analogWrite(PWM_PIN_1, pwm1);analogWrite(PWM_PIN_2, pwm2);// TODO: Add your control logic here }); bluetoothSlider.onGetConfig([]() { bluetoothSlider.send(currentSlider1, currentSlider2);Serial.print("App requested values - Sent: Slider1=");Serial.print(currentSlider1);Serial.print(", Slider2=");Serial.println(currentSlider2); });Serial.println("Waiting for Bluetooth connection...");}voidloop() { bluetoothServer.loop();delay(10);}
Klik op de Upload knop om de code naar de ESP32 te uploaden
Open de Serial Monitor
Bekijk het resultaat in de Serial Monitor. Deze ziet er als volgt 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 Bluetooth - ESP32 BLE Slider Voorbeeld
Waiting for Bluetooth connection...
Ln 11, Col 1
ESP32 Dev Module on COM15
2
Mobiele App
Installeer de DIYables Bluetooth App op uw smartphone: Android | iOS
Als u de ESP32 Classic Bluetooth-code gebruikt, moet u de ESP32 eerst koppelen met uw Android-telefoon voordat u de app opent:
Ga naar de Instellingen > Bluetooth van uw telefoon
Zorg dat Bluetooth ingeschakeld is
De telefoon zoekt naar beschikbare apparaten
Zoek en tik op "ESP32_Slider" in de lijst met apparaten
Bevestig het koppelverzoek (geen PIN vereist)
Wacht tot het apparaat "Paired" weergeeft
Als u de ESP32 BLE-code gebruikt, is koppelen niet nodig. Ga gewoon door naar de volgende stap.
Open de DIYables Bluetooth App
Bij het eerste openen vraagt de app om toestemming. Verleen alstublieft:
Nearby Devices toestemming (Android 12+) / Bluetooth toestemming (iOS) - nodig om te scannen en verbinden met Bluetooth-apparaten
Locatie toestemming (alleen Android 11 en lager) - vereist door oudere Android-versies voor BLE-scanning
Zorg dat Bluetooth ingeschakeld is op uw telefoon
Tik op het startscherm op de Connect knop. De app gaat zoeken naar BLE en Classic Bluetooth apparaten.
Zoek en tik op uw apparaat in de zoekresultaten om te verbinden:
Voor Classic Bluetooth: tik op "ESP32_Slider"
Voor BLE: tik op "ESP32BLE_Slider"
Nadat u verbonden bent, keert de app automatisch terug naar het startscherm. Selecteer de Slider app uit het menu.
Beweeg de sliders in de app en kijk naar de realtime feedback in de Serial Monitor
Creatieve Aanpassing - Pas de Code aan voor uw Project
Stel Standaard Sliderwaarden in
Configureer de beginposities van de sliders:
// Huidige sliderwaarden (0-100) int currentSlider1 = 25; // Standaard 25% int currentSlider2 = 50; // Standaard 50%
Pas Slider Bereik en Stapgrootte aan
// Maak een Slider app instantie met aangepast bereik (min=0, max=255, stap=5) DIYables_BluetoothSlider bluetoothSlider(0, 255, 5); // Of wijzig tijdens runtime: bluetoothSlider.setRange(0, 255); // Wijzig bereik naar 0-255 bluetoothSlider.setStep(5); // Wijzig stap naar 5 (grovere controle) // Lees huidige configuratie: int currentMin = bluetoothSlider.getMin(); // Huidige minimum waarde int currentMax = bluetoothSlider.getMax(); // Huidige maximum waarde int currentStep = bluetoothSlider.getStep(); // Huidige stapgrootte
Behandel Configuratieverzoek van App
Wanneer de app verbindt en het Slider scherm opent, vraagt deze om de sliderconfiguratie van de ESP32. Gebruik de callback onGetConfig() om de huidige sliderwaarden op dat moment naar de app te sturen:
bluetoothSlider.onGetConfig([]() { // Wordt aangeroepen wanneer de app om sliderconfiguratie vraagt // Stuur de huidige sliderwaarden zodat de app ze correct kan weergeven bluetoothSlider.send(currentSlider1, currentSlider2); Serial.println("App requested config - sent current values"); });
Waarden naar App Verzenden
U kunt sliderwaarden van de ESP32 naar de app sturen (bijvoorbeeld om sliderposities bij te werken):
// Verstuur beide sliderwaarden naar de app bluetoothSlider.send(currentSlider1, currentSlider2); // Verstuur een enkele waarde (toegepast op beide sliders) bluetoothSlider.send(50);
Behandel Verbindingsgebeurtenissen
U kunt detecteren wanneer de app verbinding maakt of verbreekt met de ESP32:
// Wordt aangeroepen wanneer de app verbindt met de ESP32 bluetoothServer.setOnConnected([]() { Serial.println("Bluetooth connected!"); // Verstuur huidige sliderwaarden naar de app bluetoothSlider.send(currentSlider1, currentSlider2); }); // Wordt aangeroepen wanneer de app de verbinding verbreekt bluetoothServer.setOnDisconnected([]() { Serial.println("Bluetooth disconnected!"); // Optioneel: stop motors, reset outputs, enz. }); // Controleer verbindingstatus overal in uw code if (bluetoothServer.isConnected()) { // Doe iets alleen als verbonden }
Hoe de Sliders te Gebruiken
App Interface Besturingselementen
De slider interface in de DIYables Bluetooth App biedt:
Slider 1: Eerste regelaar met waardedisplay
Slider 2: Tweede regelaar met waardedisplay
Waardeweergave: Realtime numerieke waarden voor beide sliders
Waardebereiken
Elke slider levert:
Standaard Bereik: 0 tot 100
Configureerbaar: Bereik en stap kunnen aangepast worden in de code
PWM Mapping: Gemakkelijk te mappen naar 0-255 voor analogWrite()
Programmeervoorbeelden
Basis Slider Handler
voidsetup() { // Stel slider callback in voor waardeveranderingen bluetoothSlider.onSliderValue([](int slider1, int slider2) { // Sla de ontvangen waarden op currentSlider1 = slider1; currentSlider2 = slider2; // Print sliderwaarden Serial.println("Slider 1: " + String(slider1) + ", Slider 2: " + String(slider2)); // Voeg hier uw besturingslogica toe }); }
Gebruik sliders voor snelheidslimieten en joystick voor richting:
// Globale snelheidslimiet van sliders intmaxSpeed = 100; // In Bluetooth Slider callback bluetoothSlider.onSliderValue([](int slider1, int slider2) { maxSpeed = slider1; // Gebruik slider 1 als globale snelheidslimiet }); // In Bluetooth Joystick callback bluetoothJoystick.onJoystickValue([](int x, int y) { // Schaal joystick waarden met slidergeregelde snelheidslimiet int scaledX = map(x, -100, 100, -maxSpeed, maxSpeed); int scaledY = map(y, -100, 100, -maxSpeed, maxSpeed); controlRobot(scaledX, scaledY); });
Combineer met Bluetooth Digitale Pinnen
Gebruik sliders voor PWM en digitale pinnen voor aan/uit:
bluetoothSlider.onSliderValue([](int slider1, int slider2) { // Pas PWM alleen toe als corresponderende digitale pin aan staat if (digitalRead(18) == HIGH) { analogWrite(16, map(slider1, 0, 100, 0, 255)); } else { analogWrite(16, 0); } if (digitalRead(19) == HIGH) { analogWrite(17, map(slider2, 0, 100, 0, 255)); } else { analogWrite(17, 0); } });
Volgende Stappen
Na het beheersen van het Bluetooth Slider voorbeeld, probeer:
Bluetooth Joystick - Voor 2D richtingsbesturing
Bluetooth Digital Pins - Voor discrete aan/uit besturing
Bluetooth Monitor - Voor debugging van sliderwaarden
Meerdere Bluetooth Apps - Combineren van sliders met andere besturingen
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!