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
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.
/* * 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