Arduino UNO R4 WiFi Bluetooth Slider Voorbeeld - Dual Slider Besturing via BLE Tutorial

Overzicht

Het Bluetooth Slider voorbeeld biedt dual slider besturingen toegankelijk via de DIYables Bluetooth STEM app. Ontworpen voor Arduino UNO R4 WiFi met BLE (Bluetooth Low Energy) om twee onafhankelijke waarden te besturen met configureerbaar bereik en stap. Perfect voor LED-helderheid, motorsnelheid, servo-positionering en elke toepassing die instelbare numerieke invoer vereist.

Let op: De Arduino UNO R4 WiFi ondersteunt alleen BLE (Bluetooth Low Energy). Het ondersteunt geen Classic Bluetooth. De DIYables Bluetooth App ondersteunt zowel BLE als Classic Bluetooth op Android, en BLE op iOS. Omdat dit board BLE gebruikt, werkt de app op zowel Android als iOS.

Arduino UNO R4 WiFi Bluetooth Slider Voorbeeld - Dual Slider Besturing via BLE Tutorial

Functies

  • Dual Sliders: Twee onafhankelijke slider besturingen
  • Configureerbaar Bereik: Stel minimum, maximum en stap waarden in
  • Real-Time Updates: Slider waarden verzonden direct bij wijziging
  • PWM Klaar: Koppel slider waarden direct aan PWM-uitgang
  • Werkt op Android & iOS: BLE wordt ondersteund op beide platforms
  • Geen Koppeling Vereist: BLE maakt automatisch verbinding zonder handmatige koppeling
  • Laag Vermogen: BLE verbruikt minder stroom dan Classic Bluetooth

Arduino UNO R4 WiFi Code

Snelle Stappen

Volg deze instructies stap voor stap:

  • Als dit uw eerste keer is met de Arduino UNO R4 WiFi, raadpleeg dan de Arduino UNO R4 WiFi aan de slag gids.
  • Verbind de Arduino UNO R4 WiFi board met uw computer met een USB-kabel.
  • Start de Arduino IDE op uw computer.
  • Selecteer Arduino UNO R4 WiFi board en de juiste COM-poort.
  • Navigeer naar het Libraries icoon op de linkerbalk van de Arduino IDE.
  • Zoek "DIYables Bluetooth", vind dan de DIYables Bluetooth bibliotheek door DIYables
  • Klik Install knop om de bibliotheek te installeren.
Arduino UNO R4 DIYables Bluetooth bibliotheek
  • U wordt gevraagd om enkele andere bibliotheek afhankelijkheden te installeren
  • Klik Install All knop om alle bibliotheek afhankelijkheden te installeren.
Arduino UNO R4 DIYables Bluetooth afhankelijkheid

BLE Code

  • Op Arduino IDE, ga naar File Examples DIYables Bluetooth ArduinoBLE_Slider voorbeeld, of kopieer de bovenstaande code en plak het in de editor van Arduino IDE
/* * DIYables Bluetooth Library - Bluetooth 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: * - Arduino UNO R4 WiFi * - Arduino Nano 33 BLE / BLE Sense * - Arduino Nano 33 IoT * - Arduino MKR WiFi 1010 * - Arduino Nano RP2040 Connect * - Any board supporting the ArduinoBLE library * * Setup: * 1. Upload the sketch to your Arduino * 2. Open Serial Monitor 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_ArduinoBLE.h> // BLE Configuration const char* DEVICE_NAME = "Arduino_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_ArduinoBLE 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 (for LED brightness control example) const int PWM_PIN_1 = 9; const int PWM_PIN_2 = 10; void setup() { Serial.begin(9600); while (!Serial); Serial.println("DIYables Bluetooth - 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!"); // 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 analogWrite(PWM_PIN_1, pwm1); analogWrite(PWM_PIN_2, pwm2); // TODO: Add your control logic here based on slider values // Examples: // - Servo control: servo.write(map(slider1, 0, 100, 0, 180)); // - Motor speed: analogWrite(MOTOR_PIN, 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..."); } void loop() { // Handle Bluetooth server communications bluetoothServer.loop(); // Optional: Update slider positions based on sensor input // Example: Send current values periodically /* static unsigned long lastUpdate = 0; if (millis() - lastUpdate >= 5000) { lastUpdate = millis(); bluetoothSlider.send(currentSlider1, currentSlider2); } */ delay(10); }
  • Klik Upload knop op Arduino IDE om code naar Arduino UNO R4 WiFi te uploaden
  • Open de Serial Monitor
  • Bekijk het resultaat op Serial Monitor. Het ziet eruit zoals hieronder:
COM6
Send
DIYables Bluetooth - Slider Example Waiting for Bluetooth connection...
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Mobiele App

  • Installeer de DIYables Bluetooth App op uw smartphone: Android | iOS

Let op: De DIYables Bluetooth App ondersteunt zowel BLE als Classic Bluetooth op Android, en BLE op iOS. Omdat de Arduino UNO R4 WiFi BLE gebruikt, werkt de app op zowel Android als iOS. Handmatige koppeling is niet nodig voor BLE — scan gewoon en maak verbinding.

  • Open de DIYables Bluetooth App
  • Bij het eerste openen van de app zal het om toestemmingen vragen. Verleen de volgende:
    • Nearby Devices toestemming (Android 12+) / Bluetooth toestemming (iOS) - vereist om Bluetooth-apparaten te scannen en verbinding te maken
    • Location toestemming (alleen Android 11 en lager) - vereist door oudere Android-versies om BLE-apparaten te scannen
  • Zorg ervoor dat Bluetooth is ingeschakeld op uw telefoon
  • Op het startscherm, tik op de Connect knop. De app zal scannen naar BLE-apparaten.
DIYables Bluetooth App - Startscherm met Scan Knop
  • Vind en tik op "Arduino_Slider" in de scanresultaten om verbinding te maken.
  • Eenmaal verbonden gaat de app automatisch terug naar het startscherm. Selecteer de Slider app uit het app-menu.
DIYables Bluetooth App - Startscherm met Slider App

Let op: U kunt op het instellingen icoon op het startscherm tikken om apps op het startscherm te verbergen/tonen. Voor meer details, zie de DIYables Bluetooth App Gebruikershandleiding.

  • Sleep de sliders om waarden te wijzigen
DIYables Bluetooth App - Slider Scherm

Kijk nu terug naar de Serial Monitor op Arduino IDE. U zult zien:

COM6
Send
Bluetooth connected! Slider 1: 50, Slider 2: 0 Slider 1: 75, Slider 2: 0 Slider 1: 100, Slider 2: 25
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Pas de sliders aan en bekijk hoe de waarden real-time veranderen in de Serial Monitor

Creatieve Aanpassing - Pas de Code aan uw Project Aan

Configureer Slider Bereik

// Constructor: DIYables_BluetoothSlider(min, max, step) DIYables_BluetoothSlider bluetoothSlider(0, 100, 1); // Verander bereik tijdens runtime bluetoothSlider.setRange(0, 255); // Verander stapgrootte bluetoothSlider.setStep(5); // Grovere besturing // Lees configuratie int minVal = bluetoothSlider.getMin(); int maxVal = bluetoothSlider.getMax(); int step = bluetoothSlider.getStep();

Behandel Slider Wijzigingen

bluetoothSlider.onSliderValue([](int slider1, int slider2) { currentSlider1 = slider1; currentSlider2 = slider2; Serial.print("Slider 1: "); Serial.print(slider1); Serial.print(", Slider 2: "); Serial.println(slider2); // Koppel aan PWM en bestuur uitgang int pwm1 = map(slider1, 0, 100, 0, 255); analogWrite(PWM_PIN_1, pwm1); });

Verstuur Huidige Waarden naar App

bluetoothSlider.onGetConfig([]() { bluetoothSlider.send(currentSlider1, currentSlider2); }); // Of verstuur op elk moment: bluetoothSlider.send(50, 75); // Stel beide sliders in

Behandel Verbindingsgebeurtenissen

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

Programmeervoorbeelden

LED Helderheidsbesturing

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 Besturing

#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("°"); }); }

Motorsnelheid met Richting

const int MOTOR_SPEED_PIN = 9; const int MOTOR_DIR_PIN = 8; bluetoothSlider.onSliderValue([](int slider1, int slider2) { // Slider 1: snelheid (0-100%) // Slider 2: richtingsdrempel (onder 50 = achteruit, boven 50 = vooruit) 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"); });

Geavanceerde Programmeertechnieken

Slider met Dode Zone

bluetoothSlider.onSliderValue([](int slider1, int slider2) { // Voeg dode zone toe rond het midden (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); } });

Frequentiebeperking

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(); // Verwerk slider waarde analogWrite(PWM_PIN, map(slider1, 0, 100, 0, 255)); } });

Probleemoplossing

Veelvoorkomende Problemen

1. Kan het apparaat niet vinden in de app

  • Zorg ervoor dat de Arduino UNO R4 WiFi is ingeschakeld en de sketch is geüpload
  • Zorg ervoor dat de Bluetooth van uw telefoon is ingeschakeld
  • Op Android 11 en lager, schakel ook Location services in
  • Probeer Bluetooth op uw telefoon opnieuw op te starten

2. Slider wijzigingen niet ontvangen

  • Controleer Bluetooth verbindingsstatus in de app
  • Verifieer dat de onSliderValue callback correct is ingesteld
  • Controleer Serial Monitor voor eventuele foutmeldingen

3. PWM-uitgang werkt niet

  • Verifieer dat de pin PWM ondersteunt (pinnen 3, 5, 6, 9, 10, 11 op UNO R4)
  • Controleer bedradingsverbindingen
  • Test eerst met een eenvoudige analogWrite sketch

4. Slider reset naar 0 bij herverbinding

  • Implementeer onGetConfig callback om opgeslagen waarden te versturen bij herverbinding
  • Sla slider waarden op in variabelen die blijven bestaan tussen verbindingen

5. Verbinding valt vaak weg

  • Ga dichter bij de Arduino staan (verklein afstand)
  • Controleer op interferentie van andere BLE-apparaten
  • Zorg voor stabiele USB-voeding

6. Upload mislukt of board niet herkend

  • Installeer het nieuwste Arduino UNO R4 board pakket via Board Manager
  • Probeer een andere USB-kabel of poort
  • Druk op de reset knop op het board voor uploaden

Projectideeën

Verlichtingsbesturing

  • Dual LED helderheidsregelaar
  • RGB LED kleurmenger (gebruik twee sliders voor tint/verzadiging)
  • LED strip helderheid en kleurtemperatuur
  • Podiumverlichting dimmer

Motorbesturing

  • DC motor snelheidsregelaar
  • Dual servo positionering
  • Pan-tilt camera mount
  • Robot wielsnelheid

Audio

  • Volume besturing
  • Toon frequentie en duur
  • Equalizer banden

Volgende Stappen

Na het beheersen van het Bluetooth Slider voorbeeld, probeer:

  1. Bluetooth Joystick - Voor 2D directionele besturing
  2. Bluetooth Rotator - Voor hoek/rotatie besturing
  3. Bluetooth Temperature - Voor temperatuurmeter weergave
  4. Meerdere Bluetooth Apps - Slider combineren met andere apps

Ondersteuning

Voor aanvullende hulp:

  • Controleer de API Reference documentatie
  • Arduino community forums

※ ONZE BERICHTEN

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