Skip to main content

Osnovna očitanja

Što prikazuje ovaj primjer​

Očitavanje akceleracije na sve tri osi, pretvorene u g, otprilike 50 puta u sekundi. Ovo je najjednostavniji primjer iz biblioteke i onaj koji koristi Brzi početak.

Kôd primjera​

Select Board
basicReadings.ino
/**
**************************************************
*
* @file basicReadings.ino
*
* @brief Example showing how to read X, Y, Z acceleration data
* from the Soldered BMA400 Accelerometer breakout over I2C
*
* @link solde.red/333419 : Soldered BMA400 Accelerometer breakout
*
* @authors SparkFun Electronics, modified by Soldered Electronics
***************************************************/
#include <BMA400-SOLDERED.h>

// Create an instance of the BMA400 sensor
Soldered_BMA400 accelerometer;

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

// Initialize I2C bus
Wire.begin();

// Check if sensor is connected and initialize it.
// Address is optional, defaults to 0x14
while (accelerometer.begin() != BMA400_OK)
{
Serial.println("Error: BMA400 not connected, check wiring and I2C address!");
delay(1000);
}

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

void loop()
{
// Get new measurements from the sensor. This must be called before
// accessing the acceleration data, otherwise it will never update
accelerometer.getSensorData();

// Print acceleration data in g's
Serial.print("Acceleration in g's");
Serial.print("\t");
Serial.print("X: ");
Serial.print(accelerometer.data.accelX, 3);
Serial.print("\t");
Serial.print("Y: ");
Serial.print(accelerometer.data.accelY, 3);
Serial.print("\t");
Serial.print("Z: ");
Serial.println(accelerometer.data.accelZ, 3);

// Print 50x per second
delay(20);
}

Očekivani rezultat, s pločicom spojenom na NULA DeepSleep (IO8 na SDA, IO9 na SCL) i položenom vodoravno:

Serial MonitorAutoscrollShow timestampNewline115200 baud
Message (Enter to send message to the board)
BMA400 Example - Basic Readings
BMA400 connected!
Acceleration in g's X: 0.007 Y: -0.022 Z: 0.996
Acceleration in g's X: 0.011 Y: -0.025 Z: 1.000
Acceleration in g's X: 0.014 Y: -0.026 Z: 1.004
Acceleration in g's X: 0.016 Y: -0.013 Z: 0.994
Acceleration in g's X: 0.012 Y: -0.015 Z: 1.001

Nakon dva uvodna retka slijedi po jedan redak za svako očitanje, oko 50 u sekundi: Acceleration in g's, zatim X:, Y: i Z:, svaka os u g s tri decimale, odvojene tabulatorima. Dok senzor ne odgovara, skica jednom u sekundi ispisuje Error: BMA400 not connected, check wiring and I2C address! umjesto BMA400 connected!.

Korištene funkcije​

Soldered_BMA400()returns none

Konstruktor. Stvara objekt senzora; ne komunicira sa senzorom dok ne pozovete begin().

ReturnsKonstruktor; nema povratne vrijednosti.

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

Pokreće senzor preko I2C-a: programski resetira BMA400, provjerava njegov ID čipa i postavlja ga u normalni način rada. Prvo pozovite Wire.begin(), kao u primjeru.

ReturnsBMA400_OK (0) u slučaju uspjeha, inače negativan kôd pogreške. Adresa različita od 0x14 ili 0x15 vraća BMA400_E_INVALID_CONFIG.

Parametri

TipNazivOpis
uint8_taddressI2C adresa. BMA400_I2C_ADDRESS_DEFAULT (0x14, zadana) ili BMA400_I2C_ADDRESS_SECONDARY (0x15).
TwoWire &wirePortI2C sabirnica koja se koristi. Zadano je Wire.
int8_t getSensorData(bool sensorTime = false)returns int8_t

Čita novo mjerenje i pretvara ga u g koristeći trenutno mjerno područje. Rezultati se spremaju u accelerometer.data: accelX, accelY i accelZ (float, u g). Pozovite je prije čitanja podataka, inače se vrijednosti nikad ne ažuriraju.

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

Parametri

TipNazivOpis
boolsensorTimeKada je true, u data.sensorTimeMillis upisuje se i vlastiti brojač vremena senzora, u milisekundama. Zadano je false.

Sve zajedno​

begin() se nalazi u petlji while, pa skica ponovno pokušava jednom u sekundi sve dok senzor ne odgovori. Biblioteka pri pokretanju ne mijenja mjerno područje ni brzinu podataka, pa nakon vlastitog resetiranja BMA400 mjeri u području ±4 g i pri 200 Hz. Svaki prolaz loop() poziva getSensorData() i ispisuje tri polja iz accelerometer.data s tri decimale.

Za korištenje druge adrese promijenite jumper (pogledajte Jumperi) i pozovite accelerometer.begin(BMA400_I2C_ADDRESS_SECONDARY).