Melden Sie sich bei Ihrem Altimeter Cloud Konto an
Noch kein Konto? Registrieren
Wir senden Ihnen einen Bestätigungslink per E-Mail. Prüfen Sie auch Ihren Spam-Ordner.
Haben Sie bereits ein Konto? Anmelden
Dieses Beispiel zeigt, wie Sie sich mit dem LSM6DSO32 IMU (Beschleunigungsmesser & Gyroskop) verbinden und die Werte auslesen können.
Sie müssen sicherstellen, dass Sie die Sensoren über den VACC-Pin wie in diesem Code aktivieren.
Nach dem Programmieren drücken Sie die Power-Taste, um Mercury neu zu starten, und verbinden Sie dann einen Seriellen Monitor.
/* * Mercury LSM6DSO32 Beispiel * Liest Beschleunigungsmesser- und Gyroskopdaten vom LSM6DSO32 IMU * und gibt diese alle 500 ms über Serial aus. * * Verdrahtung: Verbinden Sie LSM6DSO32 mit dem I2C-Port (SDA/SCL) * I2C-Adresse: 0x6B (SDO/SA0 HIGH auf Mercury Board) * * Bibliothek: Adafruit LSM6DS (vom Compiler automatisch installiert) */ #include "Wire.h" #include "Adafruit_LSM6DS.h" #include "Adafruit_LSM6DSO32.h" #include "Mercury_Pins.h" Adafruit_LSM6DSO32 imu; void setup() { Serial.begin(115200); delay(1000); Serial.println("LSM6DSO32 IMU Beispiel"); Serial.println("======================"); // Sensoranschluss einschalten pinMode(VACC, OUTPUT); digitalWrite(VACC, HIGH); delay(100); // I2C auf Mercury-Pins starten Wire.begin(SDA, SCL); // Initialisieren Sie das IMU unter der Adresse 0x6B if (!imu.begin_I2C(0x6B)) { Serial.println("FEHLER: LSM6DSO32 nicht unter 0x6B gefunden!"); Serial.println("Führen Sie das I2C Scanner Beispiel aus, um Ihre Adresse zu überprüfen."); while (1) delay(100); } Serial.println("LSM6DSO32 verbunden unter 0x6B"); // ââ Beschleunigungsmesser-Setup ââ // Bereichsoptionen: 4G, 8G, 16G, 32G imu.setAccelRange(LSM6DSO32_ACCEL_RANGE_16_G); // Datensatzoptionen: 12.5, 26, 52, 104, 208, 416, 833, 1660, 3330, 6660 Hz imu.setAccelDataRate(LSM6DS_RATE_104_HZ); // ââ Gyroskop-Setup ââ // Bereichsoptionen: 125, 250, 500, 1000, 2000 Grad pro Sekunde imu.setGyroRange(LSM6DS_GYRO_RANGE_250_DPS); // Datensatzrate (gleiche Optionen wie Beschleunigungsmesser) imu.setGyroDataRate(LSM6DS_RATE_104_HZ); Serial.println("Beschl.: 16G-Bereich | Gyroskop: 250 dps-Bereich | Rate: 104 Hz"); Serial.println(); } void loop() { // Alle Sensordaten in einem Durchgang lesen sensors_event_t accel, gyro, temp; imu.getEvent(&accel, &gyro, &temp); // Beschleunigungsmesser (m/s^2) Serial.printf("Beschleunigungsmesser (X/Y/Z) m/s2: %+7.2f %+7.2f %+7.2f", accel.acceleration.x, accel.acceleration.y, accel.acceleration.z); // Trennzeichen Serial.print(" | "); // Gyroskop (Grad pro Sekunde) Serial.printf("Gyroskop (X/Y/Z) dps: %+7.2f %+7.2f %+7.2f\n", gyro.gyro.x, gyro.gyro.y, gyro.gyro.z); delay(500); }#pragma once /* * Mercury (ESP32-C6) Pin-Definitionen * Board-spezifische GPIO-Zuweisungen */ // ââ Status-LED (NeoPixel) ââ #define LEDPOWER 3 // NeoPixel-Stromversorgung (HIGH fahren zum Aktivieren) #define LED 2 // NeoPixel-Datensignal // ââ I2C-Bus ââ #define SDA 21 // I2C-Daten #define SCL 22 // I2C-Takt // ââ Sensor-Stromversorgung ââ #define VACC 20 // Sensoranschluss (HIGH fahren zum Aktivieren) // ââ Universelle Anschlüsse ââ #define GP06 6 // GP06-Anschluss #define GP07 7 // GP07-Anschluss // ââ Hochstrom-Ausgang ââ #define OUT1 5 // Hochstrom-Ausgang (z. B. Sprengstoff / Relais) // ââ Akku-Balken-LEDs ââ #define BL1 4 // Akku-LED 1 (niedrigste) #define BL2 14 // Akku-LED 2 #define BL3 15 // Akku-LED 3 #define BL4 18 // Akku-LED 4 #define BL5 19 // Akku-LED 5 (höchste) // ââ Indikatoren ââ #define DISK 8 // Disk-Aktivitäts-LED // ââ Analog / Erkennung ââ #define BATIN 0 // Akkuspannung (1:1 Teiler) #define USBDETECT 1 // USB-Stromerkennung (HIGH = USB vorhanden) #define BUTTON 9 // BUTTON auf dem Board, Boot-Button aber kann verwendet werden