Arduino Nano ESP32 Bluetooth-Schieberegler-Beispiel - Duale Schieberegler-Steuerung über BLE-Tutorial

Übersicht

Dieses Beispiel bietet duale Schieberegler-Steuerungen auf dem Arduino Nano ESP32 über BLE (Bluetooth Low Energy) über die DIYables Bluetooth STEM App. Steuern Sie zwei unabhängige Werte mit konfigurierbarem Bereich und Schritt von einem Smartphone. Geeignet für LED-Helligkeit, Motorgeschwindigkeit, Servo-Positionierung und jede Anwendung, die eine verstellbare numerische Eingabe erfordert.

Hinweis: Der Arduino Nano ESP32 unterstützt nur BLE — Classic Bluetooth wird nicht unterstützt. Die DIYables Bluetooth App funktioniert auf Android und iOS mit BLE.

Arduino Nano ESP32 Bluetooth Schieberegler Beispiel - Duale Schieberegler Steuerung über BLE Tutorial

Funktionen

  • Duale Schieberegler: Zwei unabhängige Schieberegler-Steuerungen
  • Konfigurierbarer Bereich: Legen Sie Minimal-, Maximal- und Schritte fest
  • Echtzeitaktualisierungen: Schieberegler-Werte werden bei Änderung sofort übertragen
  • PWM-bereit: Ordnen Sie Schieberegler-Werte direkt der PWM-Ausgabe zu
  • Android & iOS-Unterstützung: BLE ist mit beiden Plattformen kompatibel
  • Keine Kopplung erforderlich: BLE verbindet sich ohne manuelle Kopplung
  • Niedriger Stromverbrauch: BLE verbraucht weniger Strom als Classic Bluetooth

Erforderliche Hardware

1×Arduino Nano ESP32
1×USB-Kabel Typ-C
1×Breadboard
1×Jumper-Drähte
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Breakout-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Stromverteiler für Arduino Nano ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (18 Sensoren/Displays)
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.

Arduino Nano ESP32 Code

Schnellschritte

  • Neu beim Arduino Nano ESP32? Beginnen Sie mit dem Arduino Nano ESP32-Leitfaden für den Einstieg.
  • Verbinden Sie den Arduino Nano ESP32 über USB mit Ihrem Computer.
  • Öffnen Sie die Arduino IDE.
  • Wählen Sie die Arduino Nano ESP32 Platine und den richtigen COM-Port aus.
  • Klicken Sie auf das Bibliotheken Symbol in der linken Randleiste.
  • Suchen Sie nach "DIYables Bluetooth" und wählen Sie die DIYables Bluetooth-Bibliothek von DIYables aus.
  • Klicken Sie auf Installieren.
Arduino Nano ESP32 DIYables Bluetooth-Bibliothek
  • Wenn Sie zum Installieren von Abhängigkeiten aufgefordert werden, klicken Sie auf Alles installieren.
Arduino Nano ESP32 DIYables Bluetooth Abhängigkeit

BLE Code

  • Öffnen Sie in Arduino IDE Datei Beispiele DIYables Bluetooth ArduinoBLE_Slider, oder fügen Sie den Code in den Editor ein.
/* * 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 * * Tutorial: https://diyables.io/bluetooth-app * Author: DIYables */ #include <DIYables_BluetoothServer.h> #include <DIYables_BluetoothSlider.h> #include <platforms/DIYables_Esp32BLE.h> // BLE Configuration const 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 instances DIYables_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 values int currentSlider1 = 0; int currentSlider2 = 0; // PWM output pins const int PWM_PIN_1 = D6; const int PWM_PIN_2 = D7; void setup() { Serial.begin(115200); delay(1000); Serial.println("DIYables Bluetooth - ESP32 BLE Slider Example"); // Initialize PWM pins pinMode(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..."); } void loop() { bluetoothServer.loop(); delay(10); }
  • Klicken Sie auf Hochladen, um die Skizze auf die Platine zu flashen.
  • Öffnen Sie den Seriellen Monitor.
  • Die Serielle Monitor-Ausgabe sollte wie folgt aussehen:
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
DIYables Bluetooth - Slider Example Waiting for Bluetooth connection...
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

Mobile App

  • Installieren Sie die DIYables Bluetooth App auf Ihrem Smartphone: Android | iOS

Hinweis: Die DIYables Bluetooth App funktioniert auf Android und iOS mit BLE. Keine manuelle Kopplung erforderlich.

  • Starten Sie die DIYables Bluetooth App.
  • Beim ersten Start gewähren Sie die folgenden Berechtigungen:
    • Nahegelegene Geräte (Android 12+) / Bluetooth (iOS) — erforderlich zum Scannen und Verbinden mit Bluetooth-Geräten
    • Standort (nur Android 11 und älter) — erforderlich von älteren Android-Versionen zum Scannen nach BLE
  • Stellen Sie sicher, dass Bluetooth auf Ihrem Gerät aktiviert ist.
  • Tippen Sie auf Verbinden auf dem Startbildschirm. Die App scannt nach BLE-Geräten.
DIYables Bluetooth App - Startbildschirm mit Scan-Schaltfläche
  • Tippen Sie auf "Arduino_Slider" in den Scannerergebnissen.
  • Nach der Verbindung kehren Sie zum Startbildschirm zurück und öffnen Sie die Schieberegler App.
DIYables Bluetooth App - Startbildschirm mit Schieberegler App

Tippen Sie auf das Einstellungssymbol auf dem Startbildschirm, um Apps anzuzeigen oder auszublenden. Weitere Details finden Sie in der DIYables Bluetooth App Benutzerhandbuch.

  • Ziehen Sie die Schieberegler, um Werte zu ändern.
DIYables Bluetooth App - Schieberegler-Bildschirm

Schauen Sie jetzt zurück auf den Seriellen Monitor in der Arduino IDE. Sie sollten folgende Ausgabe sehen:

Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
Bluetooth connected! Slider 1: 50, Slider 2: 0 Slider 1: 75, Slider 2: 0 Slider 1: 100, Slider 2: 25
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2
  • Passen Sie die Schieberegler an und beobachten Sie die Wertaktualisierungen in Echtzeit im Seriellen Monitor.

Kreative Anpassung - Passen Sie den Code an Ihr Projekt an

Schieberegler-Bereich konfigurieren

// Constructor: DIYables_BluetoothSlider(min, max, step) DIYables_BluetoothSlider bluetoothSlider(0, 100, 1); // Change range at runtime bluetoothSlider.setRange(0, 255); // Change step size bluetoothSlider.setStep(5); // Coarser control // Read configuration int minVal = bluetoothSlider.getMin(); int maxVal = bluetoothSlider.getMax(); int step = bluetoothSlider.getStep();

Schieberegler-Änderungen verarbeiten

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 to PWM and control output int pwm1 = map(slider1, 0, 100, 0, 255); analogWrite(PWM_PIN_1, pwm1); });

Senden Sie aktuelle Werte an die App

bluetoothSlider.onGetConfig([]() { bluetoothSlider.send(currentSlider1, currentSlider2); }); // Or send anytime: bluetoothSlider.send(50, 75); // Set both sliders

Verbindungsereignisse verarbeiten

bluetoothServer.setOnConnected([]() { Serial.println("Bluetooth connected!"); bluetoothSlider.send(currentSlider1, currentSlider2); }); bluetoothServer.setOnDisconnected([]() { Serial.println("Bluetooth disconnected!"); });

Programmierbeispiele

LED-Helligkeitssteuerung

const int LED_PIN_1 = 9; const int LED_PIN_2 = 10; bluetoothSlider.onSliderValue([](int slider1, int slider2) { int brightness1 = map(slider1, 0, 100, 0, 255); int brightness2 = map(slider2, 0, 100, 0, 255); analogWrite(LED_PIN_1, brightness1); analogWrite(LED_PIN_2, brightness2); Serial.print("LED 1: "); Serial.print(brightness1); Serial.print(", LED 2: "); Serial.println(brightness2); });

Servo-Steuerung

#include <Servo.h> Servo servo1, servo2; void setup() { servo1.attach(9); servo2.attach(10); bluetoothSlider.onSliderValue([](int slider1, int slider2) { int angle1 = map(slider1, 0, 100, 0, 180); int angle2 = map(slider2, 0, 100, 0, 180); servo1.write(angle1); servo2.write(angle2); Serial.print("Servo 1: "); Serial.print(angle1); Serial.print("°, Servo 2: "); Serial.print(angle2); Serial.println("°"); }); }

Motorgeschwindigkeit mit Richtung

const int MOTOR_SPEED_PIN = 9; const int MOTOR_DIR_PIN = 8; bluetoothSlider.onSliderValue([](int slider1, int slider2) { // Slider 1: speed (0-100%) // Slider 2: direction threshold (below 50 = reverse, above 50 = forward) int speed = map(slider1, 0, 100, 0, 255); bool forward = (slider2 >= 50); analogWrite(MOTOR_SPEED_PIN, speed); digitalWrite(MOTOR_DIR_PIN, forward ? HIGH : LOW); Serial.print("Speed: "); Serial.print(slider1); Serial.print("%, Direction: "); Serial.println(forward ? "Forward" : "Reverse"); });

Fortgeschrittene Programmiertechniken

Schieberegler mit totem Bereich

bluetoothSlider.onSliderValue([](int slider1, int slider2) { // Add dead zone around center (45-55 = stop) if (slider1 >= 45 && slider1 <= 55) { Serial.println("Center - stopped"); analogWrite(MOTOR_PIN, 0); } else { int speed = map(slider1, 0, 100, 0, 255); analogWrite(MOTOR_PIN, speed); } });

Ratenbegrenzung

unsigned long lastSliderAction = 0; const unsigned long SLIDER_COOLDOWN = 50; // 50ms minimum bluetoothSlider.onSliderValue([](int slider1, int slider2) { if (millis() - lastSliderAction >= SLIDER_COOLDOWN) { lastSliderAction = millis(); // Process slider value analogWrite(PWM_PIN, map(slider1, 0, 100, 0, 255)); } });

Fehlerbehebung

Häufige Probleme

1. Gerät ist in der App nicht sichtbar

  • Stellen Sie sicher, dass die Platine eingeschaltet ist und die Skizze hochgeladen wurde
  • Überprüfen Sie, ob Bluetooth auf Ihrem Telefon aktiviert ist
  • Aktivieren Sie bei Android 11 und älter auch Standortdienste
  • Versuchen Sie, Bluetooth auf Ihrem Telefon neu zu starten

2. Schieberegler-Änderungen werden nicht empfangen

  • Überprüfen Sie den Bluetooth-Verbindungsstatus in der App
  • Bestätigen Sie, dass der onSliderValue Callback korrekt registriert ist
  • Überprüfen Sie den Seriellen Monitor auf Fehlermeldungen

3. PWM-Ausgabe funktioniert nicht

  • Überprüfen Sie, ob der Pin PWM unterstützt
  • Überprüfen Sie die Verkabelungsverbindungen
  • Testen Sie zuerst mit einer einfachen analogWrite Skizze

4. Schieberegler setzt sich bei Wiederverbindung auf 0 zurück

  • Implementieren Sie den onGetConfig Callback, um gespeicherte Werte bei Wiederverbindung zu senden
  • Speichern Sie Schieberegler-Werte in Variablen über mehrere Verbindungen hinweg

5. Verbindung wird häufig unterbrochen

  • Verringern Sie den Abstand zum Arduino
  • Überprüfen Sie auf Störungen durch andere BLE-Geräte
  • Stellen Sie eine stabile USB-Stromversorgung sicher

6. Hochladen schlägt fehl oder Platine wird nicht erkannt

  • Installieren Sie das neueste Arduino Nano ESP32 Board-Paket über den Board-Manager
  • Versuchen Sie ein anderes USB-Kabel oder einen anderen Port
  • Drücken Sie die Reset-Taste vor dem Hochladen

Projektideen

Beleuchtungssteuerung

  • Duale LED-Helligkeitsregler
  • RGB-LED-Farbmischer (verwenden Sie zwei Schieberegler für Farbton/Sättigung)
  • LED-Streifen-Helligkeit und Farbtemperatur
  • Bühnenbeleuchtung-Dimmer

Motorsteuerung

  • DC-Motor-Geschwindigkeitsregler
  • Duale Servo-Positionierung
  • Pan-Tilt-Kamerahaltung
  • Roboter-Radgeschwindigkeit

Audio

  • Volumenregelung
  • Tonfrequenz und Dauer
  • Equalizer-Bänder

Nächste Schritte

Nach Abschluss des Bluetooth-Schieberegler-Beispiels erkunden Sie:

  1. Bluetooth Joystick — 2D-Richtungssteuerung
  2. Bluetooth Rotator — Winkel-/Rotationssteuerung
  3. Bluetooth Temperatur — Temperaturanzeige-Display
  4. Mehrere Bluetooth Apps — Kombinieren Sie Schieberegler mit anderen App-Widgets

Unterstützung

Für weitere Hilfe:

  • Überprüfen Sie die API-Referenzdokumentation
  • Besuchen Sie DIYables Tutorials
  • Arduino-Community-Foren

※ UNSERE NACHRICHTEN

  • 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!