Příručka Mercury V1
Zjistěte, jak létat rychle a snadno, připojte svůj výškoměr pro nahrávání na webové stránky Altimeter Cloud a využijte všechny pokročilé funkce. Pokud jste v nouzi nebo teprve začínáte, jste tu správně.

Příklad kódu: LSM6DSO32 akcelerometr a gyroskop

PDF

Tento příklad ukazuje, jak se připojit k IMU LSM6DSO32 (Akcelerometr & Gyroskop) a číst hodnoty.
Musíte zajistit, abyste senzory aktivovali pomocí pinu VACC podle tohoto kódu.

Po nahrání stiskněte tlačítko napájení a restartujte Mercury, poté připojte sériový monitor.

Používáte Arduino IDE? Náš online programátor standardně obsahuje Mercury_Pins.h, takže názvy pinů fungují bez problémů. Pokud používáte Arduino IDE nebo jiný programátor, zkopírujte obsah záložky Mercury_Pins.h a vložte jej na začátek vašeho programu.
/*
 * Mercury LSM6DSO32 Příklad
 * Čte data akcelerometru a gyroskopu z IMU LSM6DSO32
 * a výstup na Serial každých 500ms.
 *
 * Zapojení: Připojte LSM6DSO32 na I2C port (SDA/SCL)
 * I2C adresa: 0x6B (SDO/SA0 HIGH na desce Mercury)
 *
 * Knihovna: Adafruit LSM6DS (automaticky instalována kompilátorem)
 */

#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("Příklad LSM6DSO32 IMU");
    Serial.println("=====================");

    // Zapnutí senzorové sběrnice
    pinMode(VACC, OUTPUT);
    digitalWrite(VACC, HIGH);
    delay(100);

    // Spuštění I2C na Mercury pinech
    Wire.begin(SDA, SCL);

    // Inicializace IMU na adrese 0x6B
    if (!imu.begin_I2C(0x6B)) {
        Serial.println("CHYBA: LSM6DSO32 nebyl nalezen na adrese 0x6B!");
        Serial.println("Spusťte příklad I2C Scanner a zkontrolujte vaši adresu.");
        while (1) delay(100);
    }

    Serial.println("LSM6DSO32 připojen na adrese 0x6B");

    // ââ Nastavení akcelerometru ââ
    // Možnosti rozsahu: 4G, 8G, 16G, 32G
    imu.setAccelRange(LSM6DSO32_ACCEL_RANGE_16_G);

    // Možnosti datového toku: 12.5, 26, 52, 104, 208, 416, 833, 1660, 3330, 6660 Hz
    imu.setAccelDataRate(LSM6DS_RATE_104_HZ);

    // ââ Nastavení gyroskopu ââ
    // Možnosti rozsahu: 125, 250, 500, 1000, 2000 stupňů za sekundu
    imu.setGyroRange(LSM6DS_GYRO_RANGE_250_DPS);

    // Datový tok (stejné možnosti jako akcelerometr)
    imu.setGyroDataRate(LSM6DS_RATE_104_HZ);

    Serial.println("Akcelerometr: rozsah 16G | Gyroskop: rozsah 250 dps | Frekvence: 104Hz");
    Serial.println();
}

void loop() {
    // Přečtěte všechna data senzoru v jednom volání
    sensors_event_t accel, gyro, temp;
    imu.getEvent(&accel, &gyro, &temp);

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

    // Oddělovač
    Serial.print("    |    ");

    // Gyroskop (stupňů za sekundu)
    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) Definice pinů
 * Přiřazení GPIO specifické pro desku
 */

// ââ LED stavu (NeoPixel) ââ
#define LEDPOWER      3    // Napájení NeoPixelu (napište HIGH pro aktivaci)
#define LED           2    // Datový signál NeoPixelu

// ââ I2C sběrnice ââ
#define SDA           21   // I2C data
#define SCL           22   // I2C hodiny

// ââ Napájení senzoru ââ
#define VACC          20   // Senzorová sběrnice napájení (napište HIGH pro aktivaci)

// ââ Universální porty ââ
#define GP06          6    // Port GP06
#define GP07          7    // Port GP07

// ââ Vysokoproudý výstup ââ
#define OUT1          5    // Vysokoproudý výstup (např. pyro / relé)

// ââ LED indikátory baterie ââ
#define BL1           4    // LED baterie 1 (nejnižší)
#define BL2           14   // LED baterie 2
#define BL3           15   // LED baterie 3
#define BL4           18   // LED baterie 4
#define BL5           19   // LED baterie 5 (nejvyšší)

// ââ Indikátory ââ
#define DISK          8    // LED aktivity disku

// ââ Analog / Detekce ââ
#define BATIN         0    // Napětí baterie (dělič 1:1)
#define USBDETECT     1    // Detekce USB napájení (HIGH = USB přítomno)
#define BUTTON        9    // TLAČÍTKO na desce, spouštěcí tlačítko ale lze jej používat