Skip to main content

Osnovna očitanja

Što ovaj primjer prikazuje​

Očitanje kompenziranog magnetskog polja na sve tri osi, u µT, te temperature senzora, u petlji otprilike 10 puta u sekundi. Ovo je najjednostavniji primjer iz biblioteke i onaj koji se koristi u Brzom početku.

Kod primjera​

Select Board
basicReadings.ino
/**
**************************************************
*
* @file basicReadings.ino
*
* @brief Example showing how to read compensated magnetometer and
* temperature data from the Soldered BMM350 Geomagnetic
* Sensor breakout over I2C
*
* @link solde.red/333359 : Soldered BMM350 Geomagnetic Sensor breakout
*
* @authors Soldered Electronics
***************************************************/
#include <BMM350-SOLDERED.h>

// Create an instance of the BMM350 sensor
Soldered_BMM350 magSensor;

void setup()
{
// Initialize serial for output
Serial.begin(115200);
Serial.println("BMM350 Example - Basic Readings");

// Initialize I2C bus
Wire.begin();

// Check if sensor is connected and initialize it.
// Address is optional, defaults to 0x14 (ADSEL tied low on this breakout)
while (magSensor.begin() != BMM350_OK)
{
Serial.println("Error: BMM350 not connected, check wiring and I2C address!");
delay(1000);
}

Serial.println("BMM350 connected!");
}

void loop()
{
// Get new measurements from the sensor. This must be called before
// accessing the magX/magY/magZ/temperature data, otherwise it will never update
if (magSensor.getSensorData() == BMM350_OK)
{
Serial.print("X: ");
Serial.print(magSensor.magX, 2);
Serial.print(" uT\t");
Serial.print("Y: ");
Serial.print(magSensor.magY, 2);
Serial.print(" uT\t");
Serial.print("Z: ");
Serial.print(magSensor.magZ, 2);
Serial.print(" uT\t");
Serial.print("Temperature: ");
Serial.print(magSensor.temperature, 2);
Serial.println(" degC");
}

// Print 10x per second
delay(100);
}

Ovaj primjer koristi i Wire, Serial i delay(), koji dolaze s Arduino jezgrom i nisu dio biblioteke BMM350. delay() pauzira program na zadani broj milisekundi: delay(1000) čeka jednu sekundu između pokušaja povezivanja, a delay(100) određuje tempo od otprilike 10 očitanja u sekundi.

Očekivani rezultat, pri 115200 baud: dva početna retka, zatim po jedan redak za svako očitanje, otprilike svakih 100 ms: X:, Y: i Z:, svaki u uT s dvije decimale, zatim Temperature: u degC, odvojeno tabulatorima.

Serial MonitorAutoscrollShow timestampNewline115200 baud
Message (Enter to send message to the board)
BMM350 Example - Basic Readings
BMM350 connected!
X: 12.84 uT Y: -21.37 uT Z: -38.52 uT Temperature: 24.61 degC
X: 12.91 uT Y: -21.30 uT Z: -38.47 uT Temperature: 24.62 degC
X: 12.79 uT Y: -21.42 uT Z: -38.55 uT Temperature: 24.61 degC
X: 12.88 uT Y: -21.35 uT Z: -38.49 uT Temperature: 24.63 degC

Ako senzor ne odgovori, program jednom u sekundi ispisuje Error: BMM350 not connected, check wiring and I2C address!.

Korištene funkcije​

Soldered_BMM350()returns Soldered_BMM350

Konstruktor. Stvara objekt senzora; ništa se ne šalje senzoru dok se ne pozove begin().

ReturnsObjekt senzora.

int8_t begin(uint8_t address = 0x14, TwoWire &wirePort = Wire)returns int8_t

Inicijalizira senzor preko I2C-a, zatim postavlja izlaznu brzinu podataka od 100 Hz s usrednjavanjem 4 uzorka, omogućuje osi X, Y i Z i pokreće normalni način rada.

ReturnsBMM350_OK (0) u slučaju uspjeha, inače kôd pogreške.

Parametri

TipNazivOpis
uint8_taddressI2C adresa. Zadano je 0x14; koristite 0x15 kada se JP5 premjesti.
TwoWire &wirePortI2C sabirnica koja se koristi. Zadano je Wire.
int8_t getSensorData()returns int8_t

Čita kompenzirane podatke magnetometra i temperature te ih sprema u članove magX, magY i magZ (µT) i član temperature (°C). Pozovite je prije čitanja tih članova, inače se nikada ne ažuriraju.

ReturnsBMM350_OK (0) u slučaju uspjeha, inače kôd pogreške.

Sve zajedno​

begin() vraća BMM350_OK kada je senzor postavljen, pa petlja while u setup() ponovno pokušava svake sekunde dok senzor ne odgovori. Svaki prolaz kroz loop() poziva getSensorData() i ispisuje magX, magY, magZ i temperature samo kada vrati BMM350_OK.

Za pločicu s JP5 premještenim na 0x15 pokrenite senzor pomoću magSensor.begin(0x15).