Exemple de curseur Arduino UNO R4 WiFi Bluetooth – Contrôle à deux curseurs via BLE – Tutoriel

Vue d'ensemble

L'exemple Bluetooth Slider offre des contrôles à deux curseurs accessibles via l'application STEM Bluetooth de DIYables. Conçu pour Arduino UNO R4 WiFi utilisant BLE (Bluetooth Low Energy) pour contrôler deux valeurs indépendantes avec une plage et un pas configurables. Idéal pour la luminosité des LED, la vitesse du moteur, le positionnement des servos, et toute application nécessitant une entrée numérique réglable.

Remarque : L'Arduino UNO R4 WiFi ne prend en charge que le BLE (Bluetooth Low Energy). Il ne prend pas en charge le Bluetooth classique. L'application Bluetooth DIYables prend en charge à la fois le BLE et le Bluetooth classique sur Android, et le BLE sur iOS. Comme cette carte utilise le BLE, l'application fonctionne sur Android et iOS.

Exemple de curseur Arduino UNO R4 WiFi Bluetooth - Tutoriel sur le contrôle à double curseur via BLE

Fonctionnalités

  • Deux curseurs: Deux contrôles de curseur indépendants
  • Plage configurable: Définir les valeurs minimales, maximales et le pas
  • Mises à jour en temps réel: Les valeurs des curseurs sont envoyées instantanément lors du changement
  • Prêt pour PWM: Mettre en correspondance directement les valeurs des curseurs avec la sortie PWM
  • Fonctionne sur Android et iOS: BLE pris en charge sur les deux plateformes
  • Aucun appairage nécessaire: BLE se connecte automatiquement sans appairage manuel
  • Faible consommation: Le BLE consomme moins d'énergie que le Bluetooth classique

Arduino UNO R4 WiFi Code

Étapes rapides

Suivez ces instructions étape par étape :

  • Si c'est la première fois que vous utilisez l'Arduino UNO R4 WiFi, consultez le Arduino UNO R4 - Installation du logiciel..
  • Connectez la carte Arduino UNO R4 WiFi à votre ordinateur à l'aide d'un câble USB.
  • Lancez l'IDE Arduino sur votre ordinateur.
  • Sélectionnez la carte Arduino UNO R4 WiFi et le port COM approprié.
  • Accédez à l'icône Libraries dans la barre de gauche de l'IDE Arduino.
  • Recherchez "DIYables Bluetooth", puis trouvez la bibliothèque DIYables Bluetooth par DIYables.
  • Cliquez sur le bouton Install pour installer la bibliothèque.
Bibliothèque Bluetooth DIYables pour Arduino UNO R4
  • On vous demandera d'installer d'autres dépendances de bibliothèque
  • Cliquez sur le bouton Install All pour installer toutes les dépendances de la bibliothèque.
Dépendance Bluetooth pour Arduino UNO R4 DIYables

Code BLE

  • Dans l'IDE Arduino, allez dans Fichier Exemples DIYables Bluetooth ArduinoBLE_Slider exemple, ou copiez le code ci-dessus et collez-le dans l'éditeur de l'IDE Arduino
/* * 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); }
  • Cliquez sur le bouton Upload dans l'IDE Arduino pour téléverser le code vers l'Arduino UNO R4 WiFi
  • Ouvrez le Moniteur série
  • Consultez le résultat dans le Moniteur série. Il ressemble à ce qui suit :
COM6
Send
DIYables Bluetooth - Slider Example Waiting for Bluetooth connection...
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Application mobile

  • Installez l'application Bluetooth DIYables sur votre smartphone : Android | iOS

Note : L'application Bluetooth de DIYables prend en charge à la fois le BLE et le Bluetooth classique sur Android, et le BLE sur iOS. Comme l'Arduino UNO R4 WiFi utilise le BLE, l'application fonctionne sur Android et iOS. Aucun appairage manuel n'est nécessaire pour le BLE — il suffit de scanner et de se connecter.

  • Ouvrez l'application Bluetooth de DIYables
  • Lors de la première ouverture de l'application, elle demandera des autorisations. Veuillez accorder ce qui suit :
    • Périphériques à proximité autorisation (Android 12+) / Bluetooth autorisation (iOS) - nécessaire pour rechercher et se connecter à des périphériques Bluetooth
    • Localisation autorisation (Android 11 et versions antérieures uniquement) - nécessaire sur les anciennes versions d'Android pour scanner les périphériques BLE
  • Assurez-vous que Bluetooth est activé sur votre téléphone
  • Sur l'écran d'accueil, touchez le bouton Connecter. L'application va rechercher des périphériques BLE.
Application Bluetooth DIYables - Écran d'accueil avec bouton de balayage
  • Localisez et touchez "Arduino_Slider" dans les résultats de balayage pour vous connecter.
  • Une fois connecté, l'application retourne automatiquement à l'écran d'accueil. Sélectionnez l'application Slider dans le menu des applications.
DIYables Bluetooth App - Écran d'accueil avec l'application Slider

Remarque : Vous pouvez toucher l’icône des paramètres sur l’écran d’accueil pour masquer ou afficher les applications sur l’écran d’accueil. Pour plus de détails, consultez le Manuel utilisateur de l’application Bluetooth DIYables.

  • Faites glisser les curseurs pour changer les valeurs.
Application Bluetooth DIYables - Écran du curseur

Regardez maintenant le Moniteur série dans l'IDE Arduino. Vous verrez :

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  
  • Ajustez les curseurs et observez les valeurs qui changent en temps réel dans le moniteur série

Personnalisation créative - Adaptez le code à votre projet

Configurer la plage du curseur

// 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();

Gérer les changements des curseurs

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); });

Envoyer les valeurs actuelles à l'application

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

Gérer les événements de connexion

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

Exemples de programmation

Contrôle de la luminosité des LED

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); });

Contrôle du servomoteur

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

Vitesse du moteur avec direction

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

Techniques avancées de programmation

Curseur avec zone morte

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); } });

Limitation du débit

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)); } });

Dépannage

Problèmes courants

1. Impossible de trouver l'appareil dans l'application

  • Assurez-vous que l'Arduino UNO R4 WiFi est sous tension et que le sketch est téléversé
  • Assurez-vous que le Bluetooth de votre téléphone est activé
  • Sur Android 11 et les versions antérieures, activez également les services de localisation
  • Essayez de redémarrer le Bluetooth sur votre téléphone

2. Les modifications du curseur ne sont pas reçues

  • Vérifier l'état de la connexion Bluetooth dans l'application
  • Vérifier que le callback onSliderValue est correctement configuré
  • Vérifier le moniteur série pour tout message d'erreur

3. La sortie PWM ne fonctionne pas

  • Vérifier que les broches prennent en charge le PWM (broches 3, 5, 6, 9, 10, 11 sur l'UNO R4)
  • Vérifier les branchements
  • Testez d’abord avec un croquis analogWrite simple

4. Le curseur se réinitialise à 0 lors de la reconnexion

  • Implémenter la fonction de rappel onGetConfig pour envoyer les valeurs stockées lors de la reconnexion
  • Stocker les valeurs des curseurs dans des variables qui persistent entre les connexions

5. La connexion se coupe fréquemment

  • Rapprochez-vous de l'Arduino (réduire la distance)
  • Vérifier les interférences d'autres appareils BLE
  • Assurer une alimentation USB stable

6. Échec du téléversement ou carte non reconnue

  • Installez le dernier paquet de cartes Arduino UNO R4 via le gestionnaire de cartes
  • Essayez un câble USB ou un port différent
  • Appuyez sur le bouton de réinitialisation de la carte avant de téléverser

Idées de projets

Contrôle de l'éclairage

  • Contrôleur de luminosité LED double
  • Mélangeur de couleur LED RVB (utilisez deux curseurs pour la teinte et la saturation)
  • Luminosité et température de couleur du ruban LED
  • Gradateur d'éclairage scénique

Contrôle moteur

  • Contrôleur de vitesse pour moteur à courant continu
  • Positionnement à double servomoteur
  • Montage caméra pan-tilt
  • Vitesse des roues du robot

Audio

  • Contrôle du volume
  • Fréquence et durée du ton
  • Bandes d'égaliseur

Étapes suivantes

Après avoir maîtrisé l'exemple du curseur Bluetooth, essayez :

  1. Joystick Bluetooth - Pour le contrôle directionnel en 2D
  2. Rotateur Bluetooth - Pour le contrôle angulaire/rotatif
  3. Température Bluetooth - Pour l'affichage de l'indicateur de température
  4. Plusieurs applications Bluetooth - Combiner le curseur avec d'autres applications

Assistance

Pour obtenir de l'aide supplémentaire :

  • Consultez la documentation de référence de l’API
  • Forums de la communauté Arduino

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !