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,30 @@ 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
+ }
66
+ else {
67
+ new_rev = true ;
68
+ }
69
+ }
70
+ // and we need to instantiate the LSM6DS3TRC
71
+ if (new_rev = true ) {
72
+ lsm6ds3trc.begin_I2C ();
73
+ }
44
74
sht30.begin ();
45
75
PDM.onReceive (onPDMdata);
46
76
PDM.begin (1 , 16000 );
@@ -65,7 +95,12 @@ void loop(void) {
65
95
sensors_event_t accel;
66
96
sensors_event_t gyro;
67
97
sensors_event_t temp;
68
- lsm6ds33.getEvent (&accel, &gyro, &temp);
98
+ if (new_rev = true ) {
99
+ lsm6ds3trc.getEvent (&accel, &gyro, &temp);
100
+ }
101
+ else {
102
+ lsm6ds33.getEvent (&accel, &gyro, &temp);
103
+ }
69
104
accel_x = accel.acceleration .x ;
70
105
accel_y = accel.acceleration .y ;
71
106
accel_z = accel.acceleration .z ;
@@ -77,7 +112,7 @@ void loop(void) {
77
112
78
113
samplesRead = 0 ;
79
114
mic = getPDMwave (4000 );
80
-
115
+
81
116
Serial.println (" \n Feather Sense Sensor Demo" );
82
117
Serial.println (" ---------------------------------------------" );
83
118
Serial.print (" Proximity: " );
@@ -157,4 +192,4 @@ void onPDMdata() {
157
192
158
193
// 16-bit, 2 bytes per sample
159
194
samplesRead = bytesAvailable / 2 ;
160
- }
195
+ }
0 commit comments