Log in op je Altimeter Cloud account
Nog geen account? Maak er een aan
We sturen een bevestigingslink naar je e-mail. Controleer je spammap als je deze niet ontvangt.
Heb je al een account? Inloggen
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.
/* * 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