Arduino UNO R4 WiFi Bluetooth Joystick Beispiel - 2D-Richtungssteuerung via BLE Tutorial

Überblick

Das Bluetooth Joystick Beispiel bietet eine interaktive 2D-Joystick-Steuerung, die über die DIYables Bluetooth STEM App zugänglich ist. Entwickelt für Arduino UNO R4 WiFi mit BLE (Bluetooth Low Energy), um Echtzeit X/Y-Koordinaten (-100 bis +100) für Richtungssteuerung zu empfangen. Perfekt für Roboternavigation, Pan-Tilt-Servos, Motorsteuerung und Gamecontroller.

Hinweis: Der Arduino UNO R4 WiFi unterstützt nur BLE (Bluetooth Low Energy). Er unterstützt kein Classic Bluetooth. Die DIYables Bluetooth App unterstützt sowohl BLE als auch Classic Bluetooth auf Android und BLE auf iOS. Da dieses Board BLE verwendet, funktioniert die App auf sowohl Android als auch iOS.

Arduino UNO R4 WiFi Bluetooth Joystick Beispiel - 2D-Richtungssteuerung via BLE Tutorial

Funktionen

  • 2D-Steuerung: X- und Y-Achsen mit Bereich -100 bis +100
  • Konfigurierbare Empfindlichkeit: Minimale Bewegungsschwelle zum Auslösen von Updates
  • Auto-Rückkehr-Option: Joystick kann beim Loslassen automatisch zentrieren
  • Echtzeit-Werte: Kontinuierliche Positionsupdates während des Ziehens
  • Funktioniert auf Android & iOS: BLE wird auf beiden Plattformen unterstützt
  • Keine Kopplung erforderlich: BLE verbindet sich automatisch ohne manuelle Kopplung
  • Geringer Stromverbrauch: BLE verbraucht weniger Strom als Classic Bluetooth

Benötigte Hardware

1×Arduino UNO R4 WiFi
1×Alternativ: DIYables STEM V4 IoT
1×USB-Kabel Type-C
1×Breadboard (Steckplatine)
1×Jumper Wires (Verbindungskabel)
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno R4
1×(Empfohlen) Breadboard-Shield für Arduino Uno R4
1×(Empfohlen) Gehäuse für Arduino Uno R4
1×(Empfohlen) Stromverteiler für Arduino Uno R4
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables STEM V4 IoT Starter-Kit (Arduino enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
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 UNO R4 WiFi Code

Schnelle Schritte

Folgen Sie diesen Anweisungen Schritt für Schritt:

  • Falls Sie zum ersten Mal den Arduino UNO R4 WiFi verwenden, sehen Sie sich den Arduino UNO R4 WiFi Einsteigerleitfaden an.
  • Verbinden Sie das Arduino UNO R4 WiFi Board über ein USB-Kabel mit Ihrem Computer.
  • Starten Sie die Arduino IDE auf Ihrem Computer.
  • Wählen Sie das Arduino UNO R4 WiFi Board und den entsprechenden COM-Port aus.
  • Navigieren Sie zum Bibliotheken-Symbol in der linken Leiste der Arduino IDE.
  • Suchen Sie nach "DIYables Bluetooth" und finden Sie die DIYables Bluetooth Bibliothek von DIYables
  • Klicken Sie auf Installieren, um die Bibliothek zu installieren.
Arduino UNO R4 DIYables Bluetooth Bibliothek
  • Sie werden gefragt, ob Sie einige andere Bibliotheksabhängigkeiten installieren möchten
  • Klicken Sie auf Alle installieren, um alle Bibliotheksabhängigkeiten zu installieren.
Arduino UNO R4 DIYables Bluetooth Abhängigkeit

BLE Code

  • Gehen Sie in der Arduino IDE zu Datei Beispiele DIYables Bluetooth ArduinoBLE_Joystick, oder kopieren Sie den obigen Code und fügen Sie ihn in den Editor der Arduino IDE ein
/* * DIYables Bluetooth Library - Bluetooth Joystick Example * Works with DIYables Bluetooth STEM app on Android and iOS * * This example demonstrates the Bluetooth Joystick feature: * - Interactive joystick control via Bluetooth * - Real-time X/Y coordinate values (-100 to +100) * - Control pins based on joystick position * * 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 the joystick * * Tutorial: https://diyables.io/bluetooth-app * Author: DIYables */ #include <DIYables_BluetoothServer.h> #include <DIYables_BluetoothJoystick.h> #include <platforms/DIYables_ArduinoBLE.h> // BLE Configuration const char* DEVICE_NAME = "Arduino_Joystick"; 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 Joystick app instance // Configure with autoReturn=false and sensitivity=5 (minimum 5% change to trigger updates) DIYables_BluetoothJoystick bluetoothJoystick(false, 5); // Variables to store current joystick values int currentJoystickX = 0; int currentJoystickY = 0; void setup() { Serial.begin(9600); while (!Serial); Serial.println("DIYables Bluetooth - Joystick Example"); // TODO: initialize your hardware pins here // Initialize Bluetooth server with platform-specific implementation bluetoothServer.begin(); // Add joystick app to server bluetoothServer.addApp(&bluetoothJoystick); // Set up connection event callbacks bluetoothServer.setOnConnected([]() { Serial.println("Bluetooth connected!"); }); bluetoothServer.setOnDisconnected([]() { Serial.println("Bluetooth disconnected!"); }); // Set up joystick callback for position changes bluetoothJoystick.onJoystickValue([](int x, int y) { // Store the received values currentJoystickX = x; currentJoystickY = y; // Print joystick position values (-100 to +100) Serial.print("Joystick - X: "); Serial.print(x); Serial.print(", Y: "); Serial.println(y); // TODO: Add your control logic here based on joystick position // Examples: // - Control motors: if (x > 50) { /* move right */ } // - Control servos: servo.write(map(y, -100, 100, 0, 180)); // - Control LEDs: analogWrite(LED_PIN, map(abs(x), 0, 100, 0, 255)); // - Send commands to other devices via Serial, I2C, SPI, etc. }); // Optional: Handle requests for current joystick values (when app loads) bluetoothJoystick.onGetConfig([]() { // Send the stored joystick values back to the app bluetoothJoystick.send(currentJoystickX, currentJoystickY); Serial.print("App requested values - Sent: X="); Serial.print(currentJoystickX); Serial.print(", Y="); Serial.println(currentJoystickY); }); // You can change configuration at runtime: // bluetoothJoystick.setAutoReturn(false); // Disable auto-return // bluetoothJoystick.setSensitivity(10.0); // Only send updates when joystick moves >10% (less sensitive) Serial.println("Waiting for Bluetooth connection..."); } void loop() { // Handle Bluetooth server communications bluetoothServer.loop(); // TODO: Add your main application code here delay(10); }
  • Klicken Sie auf Hochladen in der Arduino IDE, um den Code auf den Arduino UNO R4 WiFi zu übertragen
  • Öffnen Sie den Serial Monitor
  • Überprüfen Sie das Ergebnis im Serial Monitor. Es sieht folgendermaßen aus:
COM6
Send
DIYables Bluetooth - Joystick Example Waiting for Bluetooth connection...
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Mobile App

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

Hinweis: Die DIYables Bluetooth App unterstützt sowohl BLE als auch Classic Bluetooth auf Android und BLE auf iOS. Da der Arduino UNO R4 WiFi BLE verwendet, funktioniert die App auf sowohl Android als auch iOS. Für BLE ist keine manuelle Kopplung erforderlich — einfach scannen und verbinden.

  • Öffnen Sie die DIYables Bluetooth App
  • Beim ersten Öffnen der App werden Berechtigungen angefragt. Bitte gewähren Sie folgende:
    • Geräte in der Nähe Berechtigung (Android 12+) / Bluetooth Berechtigung (iOS) - erforderlich zum Scannen und Verbinden mit Bluetooth-Geräten
    • Standort Berechtigung (nur Android 11 und niedriger) - von älteren Android-Versionen zum Scannen nach BLE-Geräten benötigt
  • Stellen Sie sicher, dass Bluetooth auf Ihrem Telefon aktiviert ist
  • Tippen Sie auf dem Startbildschirm auf Verbinden. Die App scannt nach BLE-Geräten.
DIYables Bluetooth App - Startbildschirm mit Scan-Button
  • Finden Sie "Arduino_Joystick" in den Scan-Ergebnissen und tippen Sie darauf, um sich zu verbinden.
  • Nach der Verbindung kehrt die App automatisch zum Startbildschirm zurück. Wählen Sie die Joystick App aus dem App-Menü.
DIYables Bluetooth App - Startbildschirm mit Joystick App

Hinweis: Sie können das Einstellungssymbol auf dem Startbildschirm antippen, um Apps auf dem Startbildschirm ein-/auszublenden. Für weitere Details siehe das DIYables Bluetooth App Benutzerhandbuch.

  • Ziehen Sie den Joystick in beliebige Richtungen
DIYables Bluetooth App - Joystick Bildschirm

Schauen Sie nun zurück auf den Serial Monitor in der Arduino IDE. Sie werden sehen:

COM6
Send
Bluetooth connected! Joystick - X: 50, Y: 0 Joystick - X: 100, Y: 50 Joystick - X: 0, Y: -75 Joystick - X: 0, Y: 0
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Kreative Anpassung - Code an Ihr Projekt anpassen

Joystick-Werte verarbeiten

bluetoothJoystick.onJoystickValue([](int x, int y) { currentJoystickX = x; currentJoystickY = y; Serial.print("Joystick - X: "); Serial.print(x); Serial.print(", Y: "); Serial.println(y); // TODO: Fügen Sie hier Ihre Steuerungslogik hinzu });

Joystick-Einstellungen konfigurieren

// Konstruktor: DIYables_BluetoothJoystick(autoReturn, sensitivity) DIYables_BluetoothJoystick bluetoothJoystick(false, 5); // Einstellungen zur Laufzeit ändern bluetoothJoystick.setAutoReturn(true); // Auto-Zentrierung beim Loslassen bluetoothJoystick.setSensitivity(10.0); // Nur updaten bei Bewegung >10%

Config-Anfrage verarbeiten

bluetoothJoystick.onGetConfig([]() { bluetoothJoystick.send(currentJoystickX, currentJoystickY); });

Programmierbeispiele

Differential Drive Roboter

const int LEFT_MOTOR_PIN = 9; const int RIGHT_MOTOR_PIN = 10; const int LEFT_DIR_PIN = 7; const int RIGHT_DIR_PIN = 8; bluetoothJoystick.onJoystickValue([](int x, int y) { // Differential Drive: X und Y mischen int leftSpeed = constrain(y + x, -100, 100); int rightSpeed = constrain(y - x, -100, 100); // Richtung setzen digitalWrite(LEFT_DIR_PIN, leftSpeed >= 0 ? HIGH : LOW); digitalWrite(RIGHT_DIR_PIN, rightSpeed >= 0 ? HIGH : LOW); // Geschwindigkeit setzen (PWM) analogWrite(LEFT_MOTOR_PIN, map(abs(leftSpeed), 0, 100, 0, 255)); analogWrite(RIGHT_MOTOR_PIN, map(abs(rightSpeed), 0, 100, 0, 255)); });

Pan-Tilt Servo

#include <Servo.h> Servo panServo, tiltServo; void setup() { panServo.attach(9); tiltServo.attach(10); bluetoothJoystick.onJoystickValue([](int x, int y) { int panAngle = map(x, -100, 100, 0, 180); int tiltAngle = map(y, -100, 100, 0, 180); panServo.write(panAngle); tiltServo.write(tiltAngle); }); }

Richtung mit Totzone

const int DEAD_ZONE = 15; bluetoothJoystick.onJoystickValue([](int x, int y) { if (abs(x) < DEAD_ZONE && abs(y) < DEAD_ZONE) { Serial.println("GESTOPPT"); return; } if (abs(y) > abs(x)) { Serial.println(y > 0 ? "VORWÄRTS" : "RÜCKWÄRTS"); } else { Serial.println(x > 0 ? "RECHTS" : "LINKS"); } });

Fehlerbehebung

Häufige Probleme

1. Gerät kann in der App nicht gefunden werden

  • Stellen Sie sicher, dass der Arduino UNO R4 WiFi eingeschaltet ist und der Sketch hochgeladen wurde
  • Vergewissern Sie sich, dass Bluetooth auf Ihrem Telefon aktiviert ist
  • Auf Android 11 und niedriger aktivieren Sie auch die Standortdienste

2. Joystick reagiert nicht

  • Überprüfen Sie den Bluetooth-Verbindungsstatus in der App
  • Verifizieren Sie, dass der onJoystickValue Callback korrekt eingerichtet ist
  • Prüfen Sie den Serial Monitor auf Verbindungsmeldungen

3. Bewegung fühlt sich träge an

  • Reduzieren Sie den Empfindlichkeitswert für häufigere Updates
  • Stellen Sie sicher, dass bluetoothServer.loop() ohne lange Verzögerungen aufgerufen wird

4. Werte springen oder sind inkonsistent

  • Fügen Sie einen Totzonenfilter für kleine Bewegungen hinzu
  • Überprüfen Sie die Empfindlichkeitseinstellung

5. Verbindung bricht häufig ab

  • Gehen Sie näher zum Arduino (Entfernung reduzieren)
  • Stellen Sie eine stabile USB-Stromversorgung sicher

6. Upload schlägt fehl oder Board wird nicht erkannt

  • Installieren Sie das neueste Arduino UNO R4 Board-Paket über den Board Manager
  • Probieren Sie ein anderes USB-Kabel oder einen anderen Port

Projektideen

  • Drahtloser Roboter-Controller
  • Kamera Pan-Tilt-Halterung
  • Roboterarm 2-Achsen-Steuerung
  • LED-Matrix Positionscontroller
  • Gamecontroller für Arduino-Spiele

Nächste Schritte

Nach dem Beherrschen des Bluetooth Joystick Beispiels probieren Sie:

  1. Bluetooth Slider - Für lineare Wertsteuerung
  2. Bluetooth Rotator - Für Winkelsteuerung
  3. Bluetooth Monitor - Für Status-Feedback
  4. Mehrere Bluetooth Apps - Kombination von Joystick mit anderen Steuerelementen

Support

Für zusätzliche 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!