6
6
#include < Adafruit_BMP280.h>
7
7
#include < Adafruit_LIS3MDL.h>
8
8
#include < Adafruit_LSM6DS33.h>
9
+ #include < Adafruit_LSM6DS3TRC.h>
9
10
#include < Adafruit_SHT31.h>
10
11
#include < Adafruit_Sensor.h>
11
12
#include < PDM.h>
12
13
13
14
Adafruit_APDS9960 apds9960; // proximity, light, color, gesture
14
15
Adafruit_BMP280 bmp280; // temperautre, barometric pressure
15
16
Adafruit_LIS3MDL lis3mdl; // magnetometer
16
- Adafruit_LSM6DS33 lsm6ds33; // accelerometer, gyroscope
17
+ Adafruit_LSM6DS3TRC lsm6ds3trc; // accelerometer, gyroscope
18
+ Adafruit_LSM6DS33 lsm6ds33;
17
19
Adafruit_SHT31 sht30; // humidity
18
20
19
21
uint8_t proximity;
@@ -24,11 +26,15 @@ float accel_x, accel_y, accel_z;
24
26
float gyro_x, gyro_y, gyro_z;
25
27
float humidity;
26
28
int32_t mic;
29
+ long int accel_array[6 ];
30
+ long int check_array[6 ]={0.00 , 0.00 , 0.00 , 0.00 , 0.00 , 0.00 };
27
31
28
32
extern PDMClass PDM;
29
33
short sampleBuffer[256 ]; // buffer to read samples into, each sample is 16-bits
30
34
volatile int samplesRead; // number of samples read
31
35
36
+ bool new_rev = true ;
37
+
32
38
void setup (void ) {
33
39
Serial.begin (115200 );
34
40
// while (!Serial) delay(10);
@@ -41,6 +47,28 @@ void setup(void) {
41
47
bmp280.begin ();
42
48
lis3mdl.begin_I2C ();
43
49
lsm6ds33.begin_I2C ();
50
+ // check for readings from LSM6DS33
51
+ sensors_event_t accel;
52
+ sensors_event_t gyro;
53
+ sensors_event_t temp;
54
+ lsm6ds33.getEvent (&accel, &gyro, &temp);
55
+ accel_array[0 ] = accel.acceleration .x ;
56
+ accel_array[1 ] = accel.acceleration .y ;
57
+ accel_array[2 ] = accel.acceleration .z ;
58
+ accel_array[3 ] = gyro.gyro .x ;
59
+ accel_array[4 ] = gyro.gyro .y ;
60
+ accel_array[5 ] = gyro.gyro .z ;
61
+ // if all readings are empty, then new rev
62
+ for (int i =0 ; i < 5 ; i++) {
63
+ if (accel_array[i] != check_array[i]) {
64
+ new_rev = false ;
65
+ break ;
66
+ }
67
+ }
68
+ // and we need to instantiate the LSM6DS3TRC
69
+ if (new_rev) {
70
+ lsm6ds3trc.begin_I2C ();
71
+ }
44
72
sht30.begin ();
45
73
PDM.onReceive (onPDMdata);
46
74
PDM.begin (1 , 16000 );
@@ -65,7 +93,12 @@ void loop(void) {
65
93
sensors_event_t accel;
66
94
sensors_event_t gyro;
67
95
sensors_event_t temp;
68
- lsm6ds33.getEvent (&accel, &gyro, &temp);
96
+ if (new_rev) {
97
+ lsm6ds3trc.getEvent (&accel, &gyro, &temp);
98
+ }
99
+ else {
100
+ lsm6ds33.getEvent (&accel, &gyro, &temp);
101
+ }
69
102
accel_x = accel.acceleration .x ;
70
103
accel_y = accel.acceleration .y ;
71
104
accel_z = accel.acceleration .z ;
@@ -77,7 +110,7 @@ void loop(void) {
77
110
78
111
samplesRead = 0 ;
79
112
mic = getPDMwave (4000 );
80
-
113
+
81
114
Serial.println (" \n Feather Sense Sensor Demo" );
82
115
Serial.println (" ---------------------------------------------" );
83
116
Serial.print (" Proximity: " );
@@ -157,4 +190,4 @@ void onPDMdata() {
157
190
158
191
// 16-bit, 2 bytes per sample
159
192
samplesRead = bytesAvailable / 2 ;
160
- }
193
+ }
0 commit comments