Get value from Sparkfun IMU module, 6-degrees-of-freedom (ITG-3200/ADXL345) Gyro sensor and Accel sensor is included.

Dependencies:   ITG3200 mbed

Committer:
ryought
Date:
Mon Nov 26 05:34:56 2012 +0000
Revision:
0:cda6d9f5a43c
First Commit  It runs.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ryought 0:cda6d9f5a43c 1 #include "ITG3200.h"
ryought 0:cda6d9f5a43c 2 #include "ADXL345_I2C.h"
ryought 0:cda6d9f5a43c 3
ryought 0:cda6d9f5a43c 4 Serial pc(USBTX, USBRX);
ryought 0:cda6d9f5a43c 5 ITG3200 gyro(p9, p10);
ryought 0:cda6d9f5a43c 6 ADXL345_I2C accel(p9, p10);
ryought 0:cda6d9f5a43c 7
ryought 0:cda6d9f5a43c 8 int main() {
ryought 0:cda6d9f5a43c 9 gyro.setWhoAmI(0x68);
ryought 0:cda6d9f5a43c 10 pc.printf("Now starting 6-degrees-of-freedom (ITG-3200 ADXL345) test...\n");
ryought 0:cda6d9f5a43c 11 pc.printf("Accelerometer Device ID is: 0x%02x\n", accel.getDeviceID());
ryought 0:cda6d9f5a43c 12 pc.printf("Gyro Devide ID is: 0x02x\n", gyro.getWhoAmI());
ryought 0:cda6d9f5a43c 13
ryought 0:cda6d9f5a43c 14 int accel_read[3] = {0, 0, 0};
ryought 0:cda6d9f5a43c 15
ryought 0:cda6d9f5a43c 16 // Accel setup
ryought 0:cda6d9f5a43c 17 // These are here to test whether any of the initialization fails. It will print the failure
ryought 0:cda6d9f5a43c 18 if (accel.setPowerControl(0x00)){
ryought 0:cda6d9f5a43c 19 pc.printf("didn't intitialize power control\n");
ryought 0:cda6d9f5a43c 20 return 0; }
ryought 0:cda6d9f5a43c 21 //Full resolution, +/-16g, 4mg/LSB.
ryought 0:cda6d9f5a43c 22 wait(.001);
ryought 0:cda6d9f5a43c 23
ryought 0:cda6d9f5a43c 24 if(accel.setDataFormatControl(0x0B)){
ryought 0:cda6d9f5a43c 25 pc.printf("didn't set data format\n");
ryought 0:cda6d9f5a43c 26 return 0; }
ryought 0:cda6d9f5a43c 27 wait(.001);
ryought 0:cda6d9f5a43c 28
ryought 0:cda6d9f5a43c 29 //3.2kHz data rate.
ryought 0:cda6d9f5a43c 30 if(accel.setDataRate(ADXL345_3200HZ)){
ryought 0:cda6d9f5a43c 31 pc.printf("didn't set data rate\n");
ryought 0:cda6d9f5a43c 32 return 0; }
ryought 0:cda6d9f5a43c 33 wait(.001);
ryought 0:cda6d9f5a43c 34
ryought 0:cda6d9f5a43c 35 //Measurement mode.
ryought 0:cda6d9f5a43c 36
ryought 0:cda6d9f5a43c 37 if(accel.setPowerControl(MeasurementMode)) {
ryought 0:cda6d9f5a43c 38 pc.printf("didn't set the power control to measurement\n");
ryought 0:cda6d9f5a43c 39 return 0;
ryought 0:cda6d9f5a43c 40 }
ryought 0:cda6d9f5a43c 41
ryought 0:cda6d9f5a43c 42 // Gyro setup
ryought 0:cda6d9f5a43c 43 gyro.setLpBandwidth(LPFBW_42HZ);
ryought 0:cda6d9f5a43c 44
ryought 0:cda6d9f5a43c 45 while (1) {
ryought 0:cda6d9f5a43c 46 wait(0.1);
ryought 0:cda6d9f5a43c 47
ryought 0:cda6d9f5a43c 48 accel.getOutput(accel_read);
ryought 0:cda6d9f5a43c 49
ryought 0:cda6d9f5a43c 50 pc.printf("Gyro[%5i, %5i, %5i] Accel[%4i, %4i, %4i]\n",
ryought 0:cda6d9f5a43c 51 gyro.getGyroX(), gyro.getGyroY(), gyro.getGyroZ(),
ryought 0:cda6d9f5a43c 52 (int16_t)accel_read[0], (int16_t)accel_read[1], (int16_t)accel_read[2]);
ryought 0:cda6d9f5a43c 53 }
ryought 0:cda6d9f5a43c 54
ryought 0:cda6d9f5a43c 55 }