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: Spuštění I2C komunikace

PDF

Piny I2C jsou připojeny k IMU, čidlu tlaku a rozšiřujícím portům.
SDA je na pinu 21 a SCL pin 22. Ty jsou definovány v souboru Mercury_pins.h, takže můžete jednoduše používat názvy SDA a SCL.
Wire.begin(SDA, SCL);

Kód níže zapne napájení čidla, spustí I2C a každých 10 sekund skenuje dostupná zařízení.
Připojte sériový monitor poté, co restartujete Mercury po kompilaci a nahrání, aby jste viděli výstup. 

Používáte Arduino IDE? Náš online programátor standardně zahrnuje 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 I2C Scanner
 * Skenuje sběrnici I2C a hlásí všechna připojená zařízení.
 * Užitečné pro kontrolu adres čidel po montáži.
 */

#include "Wire.h"
#include "Mercury_Pins.h"

void setup() {
    Serial.begin(115200);
    delay(1000);

    Serial.println("Mercury I2C Scanner");
    Serial.println("====================");

    // Zapnutí napájení senzorové lišty
    pinMode(VACC, OUTPUT);
    digitalWrite(VACC, HIGH);
    delay(100);  // Umožnění stabilizace čidel

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

    Serial.println("Napájení čidel: ZAPNUTo");
    Serial.println("Sběrnice I2C připravena (SDA=" + String(SDA) + " SCL=" + String(SCL) + ")");
    Serial.println();
}

void loop() {
    int found = 0;

    Serial.println("Skenování sběrnice I2C...");

    for (int row = 0; row < 128; row += 16) {
        // Označení řádku

        for (int col = 0; col < 16; col++) {
            int addr = row + col;

            // Přeskočit vyhrazené adresy (0x00-0x07 a 0x78-0x7F)
            if (addr < 0x08 || addr > 0x77) {
                continue;
            }

            Wire.beginTransmission(addr);
            int result = Wire.endTransmission();

            if (result == 0) {
                found++;
            } else {
            }
        }
    }

    Serial.println();
    if (found == 0) {
        Serial.println("Nebyla nalezena žádná zařízení. Zkontrolujte zapojení a napájení čidel.");
    } else {
        Serial.println(String(found) + " nalezeno zařízení:");
        // Druhý průchod pro výpis nalezených zařízení s běžnými názvy
        for (int addr = 0x08; addr <= 0x77; addr++) {
            Wire.beginTransmission(addr);
            if (Wire.endTransmission() == 0) {
                Serial.printf("  0x%02X", addr);
                // Identifikace běžných čidel
                switch (addr) {
                    case 0x47: Serial.print(" - BMP581 (Mercury Pressure)"); break;
                    case 0x6B: Serial.print(" - LSM6DSO32 (Mercury IMU)"); break;
                    case 0x77: Serial.print(" - BMP390 (Mercury Pressure)"); break;
                }
                Serial.println();
            }
        }
    }

    Serial.println();
    Serial.println("Další skenování za 10 sekund...");
    Serial.println("---");
    delay(10000);
}

#pragma once
/*
 * Mercury (ESP32-C6) Definice pinů
 * Přiřazení GPIO specifická pro desku
 */

// ââ Indikační LED (NeoPixel) ââ
#define LEDPOWER      3    // Napájení NeoPixelu (nastav HIGH pro aktivaci)
#define LED           2    // Datový signál NeoPixelu

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

// ââ Napájení čidel ââ
#define VACC          20   // Senzorová lišta napájení (nastav HIGH pro aktivaci)

// ââ Porty pro obecné použití ââ
#define GP06          6    // Port GP06
#define GP07          7    // Port GP07

// ââ Výstup s vysokým proudem ââ
#define OUT1          5    // Výstup s vysokým proudem (např. pyro / relé)

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

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

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