Skip to content

Commit 4fb2429

Browse files
authored
Merge pull request #14 from cparata/master
Rename FIFO sketches and add Hello World sketch
2 parents 2e36778 + 11ff3e7 commit 4fb2429

File tree

3 files changed

+131
-2
lines changed

3 files changed

+131
-2
lines changed

examples/fifo_interrupt.ino renamed to examples/LSM6DSOX_FIFO_Interrupt/LSM6DSOX_FIFO_Interrupt.ino

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/**
22
******************************************************************************
3-
* @file fifo_interrupt.ino
3+
* @file LSM6DSOX_FIFO_Interrupt.ino
44
* @author alvaro-oliver
55
* @version V1.0.0
66
* @date May 2021
@@ -35,6 +35,14 @@
3535
******************************************************************************
3636
*/
3737

38+
/* WIRING
39+
In order to use the Adafruit lsm6dsox sensor with a ST nucleo board,
40+
plug Nucleo "+3.3V" to AdafruitLSM6DOX "VIN",
41+
plug Nucleo "GND" to AdafruitLSM6DOX "GND",
42+
plug Nucleo "SCL"(D15) to AdafruitLSM6DOX "SCL",
43+
plug Nucleo "SDA"(D14) to AdafruitLSM6DOX "SDA",
44+
plug Nucleo "A0" to AdafruitLSM6DOX "I1".*/
45+
3846
#include "LSM6DSOXSensor.h"
3947

4048
#define SR 417.0f // Sample rate. Options are: 12.5, 26, 52, 104, 208, 417, 833, 1667, 3333 and 6667 Hz

examples/fifo_polling.ino renamed to examples/LSM6DSOX_FIFO_Polling/LSM6DSOX_FIFO_Polling.ino

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/**
22
******************************************************************************
3-
* @file fifo_polling.ino
3+
* @file LSM6DSOX_FIFO_Polling.ino
44
* @author alvaro-oliver
55
* @version V1.0.1
66
* @date May 2021
@@ -35,6 +35,13 @@
3535
******************************************************************************
3636
*/
3737

38+
/* WIRING
39+
In order to use the Adafruit lsm6dsox sensor with a ST nucleo board,
40+
plug Nucleo "+3.3V" to AdafruitLSM6DOX "VIN",
41+
plug Nucleo "GND" to AdafruitLSM6DOX "GND",
42+
plug Nucleo "SCL"(D15) to AdafruitLSM6DOX "SCL",
43+
plug Nucleo "SDA"(D14) to AdafruitLSM6DOX "SDA".*/
44+
3845
#include "LSM6DSOXSensor.h"
3946

4047
#define SR 417 // Sample rate. Options are: 12.5, 26, 52, 104, 208, 417, 833, 1667, 3333 and 6667 Hz.
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
/**
2+
******************************************************************************
3+
@file LSM6DSOX_HelloWorld.ino
4+
@author Benhalor
5+
@version V1.0.1
6+
@date January 2020
7+
@brief Basic example for using the LSM6DSOX library .
8+
******************************************************************************
9+
@attention
10+
<h2><center>&copy; COPYRIGHT(c) 2019 STMicroelectronics</center></h2>
11+
Redistribution and use in source and binary forms, with or without modification,
12+
are permitted provided that the following conditions are met:
13+
1. Redistributions of source code must retain the above copyright notice,
14+
this list of conditions and the following disclaimer.
15+
2. Redistributions in binary form must reproduce the above copyright notice,
16+
this list of conditions and the following disclaimer in the documentation
17+
and/or other materials provided with the distribution.
18+
3. Neither the name of STMicroelectronics nor the names of its contributors
19+
may be used to endorse or promote products derived from this software
20+
without specific prior written permission.
21+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
25+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31+
******************************************************************************
32+
*/
33+
34+
/* WIRING
35+
In order to use the Adafruit lsm6dsox sensor with a ST nucleo board,
36+
plug Nucleo "+3.3V" to AdafruitLSM6DOX "VIN",
37+
plug Nucleo "GND" to AdafruitLSM6DOX "GND",
38+
plug Nucleo "SCL"(D15) to AdafruitLSM6DOX "SCL",
39+
plug Nucleo "SDA"(D14) to AdafruitLSM6DOX "SDA".*/
40+
41+
#include "LSM6DSOXSensor.h"
42+
43+
// Declare LSM6DSOX sensor. Sensor address can have 2 values LSM6DSOX_I2C_ADD_L (corresponds to 0x6A I2C address) or LSM6DSOX_I2C_ADD_H (corresponds to 0x6B I2C address)
44+
// On Adafruit lsm6dsox sensor, LSM6DSOX_I2C_ADD_L is the default address
45+
LSM6DSOXSensor lsm6dsoxSensor = LSM6DSOXSensor(&Wire, LSM6DSOX_I2C_ADD_L);
46+
47+
void setup() {
48+
Serial.begin(115200);
49+
Wire.begin();
50+
51+
// Default clock is 100kHz. LSM6DSOX also supports 400kHz, let's use it
52+
Wire.setClock(400000);
53+
54+
// Init the sensor
55+
lsm6dsoxSensor.begin();
56+
57+
// Enable accelerometer and gyroscope, and check success
58+
if (lsm6dsoxSensor.Enable_X() == LSM6DSOX_OK && lsm6dsoxSensor.Enable_X() == LSM6DSOX_OK) {
59+
Serial.println("Success enabling accelero and gyro");
60+
} else {
61+
Serial.println("Error enabling accelero and gyro");
62+
}
63+
64+
// Read ID of device and check that it is correct
65+
uint8_t id;
66+
lsm6dsoxSensor.ReadID(&id);
67+
if (id != LSM6DSOX_ID) {
68+
Serial.println("Wrong ID for LSM6DSOX sensor. Check that device is plugged");
69+
} else {
70+
Serial.println("Receviced correct ID for LSM6DSOX sensor");
71+
}
72+
73+
// Set accelerometer scale at +- 2G. Available values are +- 2, 4, 8, 16 G
74+
lsm6dsoxSensor.Set_X_FS(2);
75+
76+
// Set gyroscope scale at +- 125 degres per second. Available values are +- 125, 250, 500, 1000, 2000 dps
77+
lsm6dsoxSensor.Set_G_FS(125);
78+
79+
80+
// Set Accelerometer sample rate to 208 Hz. Available values are +- 12.0, 26.0, 52.0, 104.0, 208.0, 416.0, 833.0, 1667.0, 3333.0, 6667.0 Hz
81+
lsm6dsoxSensor.Set_X_ODR(208.0f);
82+
83+
84+
// Set Gyroscope sample rate to 208 Hz. Available values are +- 12.0, 26.0, 52.0, 104.0, 208.0, 416.0, 833.0, 1667.0, 3333.0, 6667.0 Hz
85+
lsm6dsoxSensor.Set_G_ODR(208.0f);
86+
87+
88+
}
89+
90+
void loop() {
91+
92+
// Read accelerometer
93+
uint8_t acceleroStatus;
94+
lsm6dsoxSensor.Get_X_DRDY_Status(&acceleroStatus);
95+
if (acceleroStatus == 1) { // Status == 1 means a new data is available
96+
int32_t acceleration[3];
97+
lsm6dsoxSensor.Get_X_Axes(acceleration);
98+
// Plot data for each axe in mg
99+
Serial.print("AccelerationX="); Serial.print(acceleration[0]); Serial.print("mg, AccelerationY="); Serial.print(acceleration[1]); Serial.print("mg, AccelerationZ="); Serial.print(acceleration[2]); Serial.println("mg");
100+
}
101+
102+
// Read gyroscope
103+
uint8_t gyroStatus;
104+
lsm6dsoxSensor.Get_G_DRDY_Status(&gyroStatus);
105+
if (gyroStatus == 1) { // Status == 1 means a new data is available
106+
int32_t rotation[3];
107+
lsm6dsoxSensor.Get_X_Axes(rotation);
108+
// Plot data for each axe in milli degres per second
109+
Serial.print("RotationX="); Serial.print(rotation[0]); Serial.print("mdps, RotationY="); Serial.print(rotation[1]); Serial.print("mdps, RotationZ="); Serial.print(rotation[2]); Serial.println("mdps");
110+
}
111+
112+
delay(10);
113+
114+
}

0 commit comments

Comments
 (0)