Mercury V1 Handbuch
Finden Sie heraus, wie Sie schnell und einfach fliegen können, verbinden Sie Ihr Altimeter für den Upload zur Altimeter Cloud Website und nutzen Sie auch alle erweiterten Funktionen. Wenn Sie feststecken oder gerade erst anfangen, sind Sie hier richtig.

Codebeispiel: LSM6DSO32 Beschleunigungsmesser und Gyroskop

PDF

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.

Verwenden Sie Arduino IDE? Unser Online-Programmierer bindet Mercury_Pins.h standardmäßig ein, sodass die Pin-Namen ohne Probleme funktionieren. Wenn Sie Arduino IDE oder einen anderen Programmierer verwenden, kopieren Sie den Inhalt des Mercury_Pins.h-Tabs und fügen ihn oben in Ihr Programm ein.
/*
 * 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