Mercury V1 handleiding
Ontdek hoe je snel en eenvoudig kunt vliegen, verbind je altimeter om te uploaden naar de Altimeter Cloud website en gebruik ook alle geavanceerde functies. Als je vastloopt of net begint, dan ben je hier op de juiste plek.

Codevoorbeeld: LSM6DSO32 accelerometer en gyroscoop

PDF

Dit voorbeeld laat zien hoe je verbinding kunt maken met de LSM6DSO32 IMU (Versnellingsmeter & Gyroscoop) en de waarden kunt uitlezen.
Je moet ervoor zorgen dat je de sensoren inschakelt met behulp van de VACC-pin zoals in deze code.

Druk nadat het programma is geladen op de aan/uit-knop om de Mercury opnieuw op te starten en verbind vervolgens een seriële monitor.

Gebruik je Arduino IDE? Onze online programmer voegt Mercury_Pins.h standaard in, zodat de pinnamen zonder problemen werken. Als je Arduino IDE of een ander programma gebruikt, kopieer je de inhoud van het Mercury_Pins.h-tabblad en plak je het aan het begin van je programma.
/*
 * Mercury LSM6DSO32 Voorbeeld
 * Leest versnellings- en gyroscoopgegevens uit de LSM6DSO32 IMU
 * en voert elke 500ms uit naar Serial.
 *
 * Bedrading: Verbind LSM6DSO32 met de I2C-poort (SDA/SCL)
 * I2C-adres: 0x6B (SDO/SA0 HIGH op Mercury-board)
 *
 * Bibliotheek: Adafruit LSM6DS (automatisch geïnstalleerd door compiler)
 */

#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 Voorbeeld");
    Serial.println("=======================");

    // Schakel de sensorvoedingsrail in
    pinMode(VACC, OUTPUT);
    digitalWrite(VACC, HIGH);
    delay(100);

    // Start I2C op Mercury-pinnen
    Wire.begin(SDA, SCL);

    // Initialiseer de IMU op adres 0x6B
    if (!imu.begin_I2C(0x6B)) {
        Serial.println("FOUT: LSM6DSO32 niet gevonden op 0x6B!");
        Serial.println("Voer het I2C Scanner-voorbeeld uit om je adres te controleren.");
        while (1) delay(100);
    }

    Serial.println("LSM6DSO32 verbonden op 0x6B");

    // ââ Versnellingsmeter instellen ââ
    // Bereikopties: 4G, 8G, 16G, 32G
    imu.setAccelRange(LSM6DSO32_ACCEL_RANGE_16_G);

    // Gegevenssnelheid opties: 12.5, 26, 52, 104, 208, 416, 833, 1660, 3330, 6660 Hz
    imu.setAccelDataRate(LSM6DS_RATE_104_HZ);

    // ââ Gyroscoop instellen ââ
    // Bereikopties: 125, 250, 500, 1000, 2000 graden per seconde
    imu.setGyroRange(LSM6DS_GYRO_RANGE_250_DPS);

    // Gegevenssnelheid (dezelfde opties als versnellingsmeter)
    imu.setGyroDataRate(LSM6DS_RATE_104_HZ);

    Serial.println("Versneller: 16G bereik | Gyro: 250 dps bereik | Snelheid: 104Hz");
    Serial.println();
}

void loop() {
    // Lees alle sensorgegevens in één oproep
    sensors_event_t accel, gyro, temp;
    imu.getEvent(&accel, &gyro, &temp);

    // Versnellingsmeter (m/s^2)
    Serial.printf("Versnellingsmeter (X/Y/Z) m/s2: %+7.2f  %+7.2f  %+7.2f",
        accel.acceleration.x,
        accel.acceleration.y,
        accel.acceleration.z);

    // Scheidingsteken
    Serial.print("    |    ");

    // Gyroscoop (graden per seconde)
    Serial.printf("Gyro (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-definities
 * Board-specifieke GPIO-toewijzingen
 */

// ââ Status-LED (NeoPixel) ââ
#define LEDPOWER      3    // NeoPixel-voeding (drive HIGH om in te schakelen)
#define LED           2    // NeoPixel-datasignaal

// ââ I2C-bus ââ
#define SDA           21   // I2C-data
#define SCL           22   // I2C-klok

// ââ Sensorvoeding ââ
#define VACC          20   // Sensorvoedingsrail (drive HIGH om in te schakelen)

// ââ Algemene doeleinden poorten ââ
#define GP06          6    // GP06-poort
#define GP07          7    // GP07-poort

// ââ Uitgaande hoge stroomsterkte ââ
#define OUT1          5    // Uitgaande hoge stroomsterkte (bijv. pyro / relais)

// ââ Batterij-LED's ââ
#define BL1           4    // Batterij-LED 1 (laagste)
#define BL2           14   // Batterij-LED 2
#define BL3           15   // Batterij-LED 3
#define BL4           18   // Batterij-LED 4
#define BL5           19   // Batterij-LED 5 (hoogste)

// ââ Indicatoren ââ
#define DISK          8    // Schijfactiviteit-LED

// ââ Analoog / detectie ââ
#define BATIN         0    // Batterijspanning (1:1 deler)
#define USBDETECT     1    // USB-stroomdetectie (HIGH = USB aanwezig)
#define BUTTON        9    // BUTTON op het board, bootknop maar kan gebruikt worden