@@ -75,52 +75,88 @@ class Adafruit_LSM9DS0
75
75
LSM9DS0_REGISTER_OUT_Z_L_A = 0x2C ,
76
76
LSM9DS0_REGISTER_OUT_Z_H_A = 0x2D ,
77
77
} lsm9ds0MagAccelRegisters_t;
78
+
79
+ typedef enum
80
+ {
81
+ LSM9DS0_ACCELRANGE_2G = (0b000 << 3 ),
82
+ LSM9DS0_ACCELRANGE_4G = (0b001 << 3 ),
83
+ LSM9DS0_ACCELRANGE_6G = (0b010 << 3 ),
84
+ LSM9DS0_ACCELRANGE_8G = (0b011 << 3 ),
85
+ LSM9DS0_ACCELRANGE_16G = (0b100 << 3 )
86
+ } lsm9ds0AccelRange_t;
87
+
88
+ typedef enum
89
+ {
90
+ LSM9DS0_ACCELDATARATE_POWERDOWN = (0b0000 << 4 ),
91
+ LSM9DS0_ACCELDATARATE_3_125HZ = (0b0001 << 4 ),
92
+ LSM9DS0_ACCELDATARATE_6_25HZ = (0b0010 << 4 ),
93
+ LSM9DS0_ACCELDATARATE_12_5HZ = (0b0011 << 4 ),
94
+ LSM9DS0_ACCELDATARATE_25HZ = (0b0100 << 4 ),
95
+ LSM9DS0_ACCELDATARATE_50HZ = (0b0101 << 4 ),
96
+ LSM9DS0_ACCELDATARATE_100HZ = (0b0110 << 4 ),
97
+ LSM9DS0_ACCELDATARATE_200HZ = (0b0111 << 4 ),
98
+ LSM9DS0_ACCELDATARATE_400HZ = (0b1000 << 4 ),
99
+ LSM9DS0_ACCELDATARATE_800HZ = (0b1001 << 4 ),
100
+ LSM9DS0_ACCELDATARATE_1600HZ = (0b1010 << 4 )
101
+ } lm9ds0AccelDataRate_t;
78
102
79
103
typedef enum
80
104
{
81
- /*
82
- LSM9DS0_MAGGAIN_1_3 = 0x20, // +/- 1.3
83
- LSM9DS0_MAGGAIN_1_9 = 0x40, // +/- 1.9
84
- LSM9DS0_MAGGAIN_2_5 = 0x60, // +/- 2.5
85
- LSM9DS0_MAGGAIN_4_0 = 0x80, // +/- 4.0
86
- LSM9DS0_MAGGAIN_4_7 = 0xA0, // +/- 4.7
87
- LSM9DS0_MAGGAIN_5_6 = 0xC0, // +/- 5.6
88
- LSM9DS0_MAGGAIN_8_1 = 0xE0 // +/- 8.1
89
- */
90
- } lsm9ds0MagGain;
105
+ LSM9DS0_MAGGAIN_2GAUSS = (0b00 << 5 ), // +/- 2 gauss
106
+ LSM9DS0_MAGGAIN_4GAUSS = (0b01 << 5 ), // +/- 4 gauss
107
+ LSM9DS0_MAGGAIN_8GAUSS = (0b10 << 5 ), // +/- 8 gauss
108
+ LSM9DS0_MAGGAIN_12GAUSS = (0b11 << 5 ) // +/- 12 gauss
109
+ } lsm9ds0MagGain_t;
110
+
111
+ typedef enum
112
+ {
113
+ LSM9DS0_MAGDATARATE_3_125HZ = (0b000 << 2 ),
114
+ LSM9DS0_MAGDATARATE_6_25HZ = (0b001 << 2 ),
115
+ LSM9DS0_MAGDATARATE_12_5HZ = (0b010 << 2 ),
116
+ LSM9DS0_MAGDATARATE_25HZ = (0b011 << 2 ),
117
+ LSM9DS0_MAGDATARATE_50HZ = (0b100 << 2 ),
118
+ LSM9DS0_MAGDATARATE_100HZ = (0b101 << 2 )
119
+ } lsm9ds0MagDataRate_t;
120
+
121
+ typedef enum
122
+ {
123
+ LSM9DS0_GYROSCALE_245DPS = (0b00 << 4 ), // +/- 245 degrees per second rotation
124
+ LSM9DS0_GYROSCALE_500DPS = (0b01 << 4 ), // +/- 500 degrees per second rotation
125
+ LSM9DS0_GYROSCALE_2000DPS = (0b10 << 4 ) // +/- 2000 degrees per second rotation
126
+ } lsm9ds0GyroScale_t;
91
127
92
128
typedef struct lsm9ds0AccelData_s
93
129
{
94
130
float x;
95
131
float y;
96
132
float z;
97
- } lsm9ds0AccelData ;
133
+ } lsm9ds0AccelData_t ;
98
134
99
135
typedef struct lsm9ds0GyroData_s
100
136
{
101
137
float x;
102
138
float y;
103
139
float z;
104
- } lsm9ds0GyroData ;
140
+ } lsm9ds0GyroData_t ;
105
141
106
142
typedef struct lsm9ds0MagData_s
107
143
{
108
144
float x;
109
145
float y;
110
146
float z;
111
147
float orientation;
112
- } lsm9ds0MagData ;
148
+ } lsm9ds0MagData_t ;
113
149
114
- lsm9ds0AccelData accelData; // Last read accelerometer data will be available here
115
- lsm9ds0MagData magData; // Last read magnetometer data will be available here
116
- lsm9ds0GyroData gyroData; // Last read gyroscope data will be available here
150
+ lsm9ds0AccelData_t accelData; // Last read accelerometer data will be available here
151
+ lsm9ds0MagData_t magData; // Last read magnetometer data will be available here
152
+ lsm9ds0GyroData_t gyroData; // Last read gyroscope data will be available here
117
153
118
- bool begin ( void );
119
- void read ( void );
120
- void setMagGain ( lsm9ds0MagGain gain );
121
- void write8 ( boolean type, byte reg, byte value );
122
- byte read8 ( boolean type, byte reg );
123
- uint8_t spixfer ( uint8_t data );
154
+ bool begin ( void );
155
+ void read ( void );
156
+ void setMagGain ( lsm9ds0MagGain_t gain );
157
+ void write8 ( boolean type, byte reg, byte value );
158
+ byte read8 ( boolean type, byte reg );
159
+ uint8_t spixfer ( uint8_t data );
124
160
125
161
private:
126
162
boolean _i2c;
0 commit comments