Přihlaste se ke svému účtu Altimeter Cloud
Nemáte účet? Vytvořit účet
Pošleme vám potvrzovací odkaz e-mailem. Zkontrolujte složku se spamem, pokud ho neobdržíte.
Již máte účet? Přihlásit se
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.
/* * 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