Skip to content

Commit b1c891a

Browse files
authored
Merge pull request adafruit#1149 from kattni/st-combo-board-ino-example
Adding combo board ino example
2 parents 4123134 + fe47aa0 commit b1c891a

File tree

2 files changed

+252
-0
lines changed

2 files changed

+252
-0
lines changed

ST_Combo_Boards/.uno.test.only

Whitespace-only changes.
Lines changed: 252 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,252 @@
1+
// Basic demo for accelerometer, gyro, and magnetometer readings from the Adafruit
2+
// LSM6DSOX+LIS3MDL Breakout or FeatherWing and the LSM6DSOX+LIS3MDL Breakout
3+
4+
#include <Adafruit_LSM6DSOX.h>
5+
Adafruit_LSM6DSOX lsm6ds;
6+
7+
// To use with the LSM6DS33+LIS3MDL breakout, uncomment these two lines
8+
// and comment out the lines referring to the LSM6DSOX above
9+
//#include <Adafruit_LSM6DS33.h>
10+
//Adafruit_LSM6DS33 lsm6ds;
11+
12+
#include <Adafruit_LIS3MDL.h>
13+
14+
Adafruit_LIS3MDL lis3mdl;
15+
16+
void setup(void) {
17+
Serial.begin(115200);
18+
while (!Serial)
19+
delay(10); // will pause Zero, Leonardo, etc until serial console opens
20+
21+
Serial.println("Adafruit LSM6DS+LIS3MDL test!");
22+
23+
bool lsm6ds_success, lis3mdl_success;
24+
25+
// hardware I2C mode, can pass in address & alt Wire
26+
27+
lsm6ds_success = lsm6ds.begin_I2C();
28+
lis3mdl_success = lis3mdl.begin_I2C();
29+
30+
if (!lsm6ds_success){
31+
Serial.println("Failed to find LSM6DS chip");
32+
}
33+
if (!lis3mdl_success){
34+
Serial.println("Failed to find LIS3MDL chip");
35+
}
36+
if (!(lsm6ds_success && lis3mdl_success)) {
37+
while (1) {
38+
delay(10);
39+
}
40+
}
41+
42+
Serial.println("LSM6DS and LIS3MDL Found!");
43+
44+
// lsm6ds.setAccelRange(LSM6DS_ACCEL_RANGE_2_G);
45+
Serial.print("Accelerometer range set to: ");
46+
switch (lsm6ds.getAccelRange()) {
47+
case LSM6DS_ACCEL_RANGE_2_G:
48+
Serial.println("+-2G");
49+
break;
50+
case LSM6DS_ACCEL_RANGE_4_G:
51+
Serial.println("+-4G");
52+
break;
53+
case LSM6DS_ACCEL_RANGE_8_G:
54+
Serial.println("+-8G");
55+
break;
56+
case LSM6DS_ACCEL_RANGE_16_G:
57+
Serial.println("+-16G");
58+
break;
59+
}
60+
61+
// lsm6ds.setAccelDataRate(LSM6DS_RATE_12_5_HZ);
62+
Serial.print("Accelerometer data rate set to: ");
63+
switch (lsm6ds.getAccelDataRate()) {
64+
case LSM6DS_RATE_SHUTDOWN:
65+
Serial.println("0 Hz");
66+
break;
67+
case LSM6DS_RATE_12_5_HZ:
68+
Serial.println("12.5 Hz");
69+
break;
70+
case LSM6DS_RATE_26_HZ:
71+
Serial.println("26 Hz");
72+
break;
73+
case LSM6DS_RATE_52_HZ:
74+
Serial.println("52 Hz");
75+
break;
76+
case LSM6DS_RATE_104_HZ:
77+
Serial.println("104 Hz");
78+
break;
79+
case LSM6DS_RATE_208_HZ:
80+
Serial.println("208 Hz");
81+
break;
82+
case LSM6DS_RATE_416_HZ:
83+
Serial.println("416 Hz");
84+
break;
85+
case LSM6DS_RATE_833_HZ:
86+
Serial.println("833 Hz");
87+
break;
88+
case LSM6DS_RATE_1_66K_HZ:
89+
Serial.println("1.66 KHz");
90+
break;
91+
case LSM6DS_RATE_3_33K_HZ:
92+
Serial.println("3.33 KHz");
93+
break;
94+
case LSM6DS_RATE_6_66K_HZ:
95+
Serial.println("6.66 KHz");
96+
break;
97+
}
98+
99+
// lsm6ds.setGyroRange(LSM6DS_GYRO_RANGE_250_DPS );
100+
Serial.print("Gyro range set to: ");
101+
switch (lsm6ds.getGyroRange()) {
102+
case LSM6DS_GYRO_RANGE_125_DPS:
103+
Serial.println("125 degrees/s");
104+
break;
105+
case LSM6DS_GYRO_RANGE_250_DPS:
106+
Serial.println("250 degrees/s");
107+
break;
108+
case LSM6DS_GYRO_RANGE_500_DPS:
109+
Serial.println("500 degrees/s");
110+
break;
111+
case LSM6DS_GYRO_RANGE_1000_DPS:
112+
Serial.println("1000 degrees/s");
113+
break;
114+
case LSM6DS_GYRO_RANGE_2000_DPS:
115+
Serial.println("2000 degrees/s");
116+
break;
117+
case ISM330DHCT_GYRO_RANGE_4000_DPS:
118+
break; // unsupported range for the DSOX
119+
}
120+
// lsm6ds.setGyroDataRate(LSM6DS_RATE_12_5_HZ);
121+
Serial.print("Gyro data rate set to: ");
122+
switch (lsm6ds.getGyroDataRate()) {
123+
case LSM6DS_RATE_SHUTDOWN:
124+
Serial.println("0 Hz");
125+
break;
126+
case LSM6DS_RATE_12_5_HZ:
127+
Serial.println("12.5 Hz");
128+
break;
129+
case LSM6DS_RATE_26_HZ:
130+
Serial.println("26 Hz");
131+
break;
132+
case LSM6DS_RATE_52_HZ:
133+
Serial.println("52 Hz");
134+
break;
135+
case LSM6DS_RATE_104_HZ:
136+
Serial.println("104 Hz");
137+
break;
138+
case LSM6DS_RATE_208_HZ:
139+
Serial.println("208 Hz");
140+
break;
141+
case LSM6DS_RATE_416_HZ:
142+
Serial.println("416 Hz");
143+
break;
144+
case LSM6DS_RATE_833_HZ:
145+
Serial.println("833 Hz");
146+
break;
147+
case LSM6DS_RATE_1_66K_HZ:
148+
Serial.println("1.66 KHz");
149+
break;
150+
case LSM6DS_RATE_3_33K_HZ:
151+
Serial.println("3.33 KHz");
152+
break;
153+
case LSM6DS_RATE_6_66K_HZ:
154+
Serial.println("6.66 KHz");
155+
break;
156+
}
157+
158+
lis3mdl.setDataRate(LIS3MDL_DATARATE_155_HZ);
159+
// You can check the datarate by looking at the frequency of the DRDY pin
160+
Serial.print("Magnetometer data rate set to: ");
161+
switch (lis3mdl.getDataRate()) {
162+
case LIS3MDL_DATARATE_0_625_HZ: Serial.println("0.625 Hz"); break;
163+
case LIS3MDL_DATARATE_1_25_HZ: Serial.println("1.25 Hz"); break;
164+
case LIS3MDL_DATARATE_2_5_HZ: Serial.println("2.5 Hz"); break;
165+
case LIS3MDL_DATARATE_5_HZ: Serial.println("5 Hz"); break;
166+
case LIS3MDL_DATARATE_10_HZ: Serial.println("10 Hz"); break;
167+
case LIS3MDL_DATARATE_20_HZ: Serial.println("20 Hz"); break;
168+
case LIS3MDL_DATARATE_40_HZ: Serial.println("40 Hz"); break;
169+
case LIS3MDL_DATARATE_80_HZ: Serial.println("80 Hz"); break;
170+
case LIS3MDL_DATARATE_155_HZ: Serial.println("155 Hz"); break;
171+
case LIS3MDL_DATARATE_300_HZ: Serial.println("300 Hz"); break;
172+
case LIS3MDL_DATARATE_560_HZ: Serial.println("560 Hz"); break;
173+
case LIS3MDL_DATARATE_1000_HZ: Serial.println("1000 Hz"); break;
174+
}
175+
176+
lis3mdl.setRange(LIS3MDL_RANGE_4_GAUSS);
177+
Serial.print("Range set to: ");
178+
switch (lis3mdl.getRange()) {
179+
case LIS3MDL_RANGE_4_GAUSS: Serial.println("+-4 gauss"); break;
180+
case LIS3MDL_RANGE_8_GAUSS: Serial.println("+-8 gauss"); break;
181+
case LIS3MDL_RANGE_12_GAUSS: Serial.println("+-12 gauss"); break;
182+
case LIS3MDL_RANGE_16_GAUSS: Serial.println("+-16 gauss"); break;
183+
}
184+
185+
lis3mdl.setPerformanceMode(LIS3MDL_MEDIUMMODE);
186+
Serial.print("Magnetometer performance mode set to: ");
187+
switch (lis3mdl.getPerformanceMode()) {
188+
case LIS3MDL_LOWPOWERMODE: Serial.println("Low"); break;
189+
case LIS3MDL_MEDIUMMODE: Serial.println("Medium"); break;
190+
case LIS3MDL_HIGHMODE: Serial.println("High"); break;
191+
case LIS3MDL_ULTRAHIGHMODE: Serial.println("Ultra-High"); break;
192+
}
193+
194+
lis3mdl.setOperationMode(LIS3MDL_CONTINUOUSMODE);
195+
Serial.print("Magnetometer operation mode set to: ");
196+
// Single shot mode will complete conversion and go into power down
197+
switch (lis3mdl.getOperationMode()) {
198+
case LIS3MDL_CONTINUOUSMODE: Serial.println("Continuous"); break;
199+
case LIS3MDL_SINGLEMODE: Serial.println("Single mode"); break;
200+
case LIS3MDL_POWERDOWNMODE: Serial.println("Power-down"); break;
201+
}
202+
203+
lis3mdl.setIntThreshold(500);
204+
lis3mdl.configInterrupt(false, false, true, // enable z axis
205+
true, // polarity
206+
false, // don't latch
207+
true); // enabled!
208+
209+
}
210+
211+
void loop() {
212+
213+
sensors_event_t accel, gyro, mag, temp;
214+
215+
// /* Get new normalized sensor events */
216+
lsm6ds.getEvent(&accel, &gyro, &temp);
217+
lis3mdl.getEvent(&mag);
218+
219+
/* Display the results (acceleration is measured in m/s^2) */
220+
Serial.print("\t\tAccel X: ");
221+
Serial.print(accel.acceleration.x, 4);
222+
Serial.print(" \tY: ");
223+
Serial.print(accel.acceleration.y, 4);
224+
Serial.print(" \tZ: ");
225+
Serial.print(accel.acceleration.z, 4);
226+
Serial.println(" \tm/s^2 ");
227+
228+
/* Display the results (rotation is measured in rad/s) */
229+
Serial.print("\t\tGyro X: ");
230+
Serial.print(gyro.gyro.x, 4);
231+
Serial.print(" \tY: ");
232+
Serial.print(gyro.gyro.y, 4);
233+
Serial.print(" \tZ: ");
234+
Serial.print(gyro.gyro.z, 4);
235+
Serial.println(" \tradians/s ");
236+
237+
/* Display the results (magnetic field is measured in uTesla) */
238+
Serial.print(" \t\tMag X: ");
239+
Serial.print(mag.magnetic.x, 4);
240+
Serial.print(" \tY: ");
241+
Serial.print(mag.magnetic.y, 4);
242+
Serial.print(" \tZ: ");
243+
Serial.print(mag.magnetic.z, 4);
244+
Serial.println(" \tuTesla ");
245+
246+
Serial.print("\t\tTemp :\t\t\t\t\t");
247+
Serial.print(temp.temperature);
248+
Serial.println(" \tdeg C");
249+
Serial.println();
250+
delay(1000);
251+
252+
}

0 commit comments

Comments
 (0)