Ohkawara Masahiro / Mbed 2 deprecated RG2012test

Dependencies:   mbed

Committer:
RMWorks
Date:
Thu Mar 07 12:57:23 2013 +0000
Revision:
0:0a596069bd38
Child:
1:2c0d72027a69
You have to get library of SCP1000, ADXL345 and SDFileSystem to run this program.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RMWorks 0:0a596069bd38 1 #include "mbed.h"
RMWorks 0:0a596069bd38 2 #include "ADXL345.h"
RMWorks 0:0a596069bd38 3 #include "SDFileSystem.h"
RMWorks 0:0a596069bd38 4 #include "SCP1000.h"
RMWorks 0:0a596069bd38 5
RMWorks 0:0a596069bd38 6 DigitalOut myled(LED1);
RMWorks 0:0a596069bd38 7 ADXL345 adxl345(p5, p6, p7, p9);
RMWorks 0:0a596069bd38 8 SCP1000 scp1000(p5, p6, p7, p8);
RMWorks 0:0a596069bd38 9 SDFileSystem sd(p5, p6, p7, p10, "sd");
RMWorks 0:0a596069bd38 10 I2C i2c(p28, p27);
RMWorks 0:0a596069bd38 11 LocalFileSystem local("local");
RMWorks 0:0a596069bd38 12 Serial pc(USBTX, USBRX);
RMWorks 0:0a596069bd38 13
RMWorks 0:0a596069bd38 14 float toG(float value) {
RMWorks 0:0a596069bd38 15 return value / 256;
RMWorks 0:0a596069bd38 16 } //ADXL345
RMWorks 0:0a596069bd38 17
RMWorks 0:0a596069bd38 18 float toDeg_Sec(float value) {
RMWorks 0:0a596069bd38 19 //return (value - ((scp1000.readTemperature() + 13200.0) / 280.0 + 35.0)) / 16.4;
RMWorks 0:0a596069bd38 20 return (value - ((20 + 13200.0) / 280.0 + 35.0)) / 16.4; //at 20degC
RMWorks 0:0a596069bd38 21 } //IMU3000
RMWorks 0:0a596069bd38 22
RMWorks 0:0a596069bd38 23
RMWorks 0:0a596069bd38 24 int Xw;
RMWorks 0:0a596069bd38 25 int Yw;
RMWorks 0:0a596069bd38 26 int Zw;
RMWorks 0:0a596069bd38 27
RMWorks 0:0a596069bd38 28 short int read_x_2byte;
RMWorks 0:0a596069bd38 29 short int read_y_2byte;
RMWorks 0:0a596069bd38 30 short int read_z_2byte;
RMWorks 0:0a596069bd38 31
RMWorks 0:0a596069bd38 32 Ticker tick; //Timer IMU3000
RMWorks 0:0a596069bd38 33 double interval = 10; //[ms] IMU3000
RMWorks 0:0a596069bd38 34 const int adrIMU3000 = 0xD0;//8-bit write IMU3000
RMWorks 0:0a596069bd38 35
RMWorks 0:0a596069bd38 36
RMWorks 0:0a596069bd38 37 int main() {
RMWorks 0:0a596069bd38 38
RMWorks 0:0a596069bd38 39 /*FILE *fp = fopen("/sd/Data.txt","a");
RMWorks 0:0a596069bd38 40 fprintf(fp, "X, Y, Z, Xw, Yw, Zw, Pa\n");
RMWorks 0:0a596069bd38 41 fclose(fp);*/
RMWorks 0:0a596069bd38 42
RMWorks 0:0a596069bd38 43 int readings[3] = {0, 0, 0};
RMWorks 0:0a596069bd38 44
RMWorks 0:0a596069bd38 45 adxl345.setPowerControl(0x00); //Go into standby mode to configure the device.
RMWorks 0:0a596069bd38 46 adxl345.setDataFormatControl(0x0B); //Full resolution, +/-16g, 4mg/LSB.
RMWorks 0:0a596069bd38 47 adxl345.setDataRate(ADXL345_3200HZ); //3.2kHz data rate.
RMWorks 0:0a596069bd38 48 adxl345.setPowerControl(0x08); //Measurement mode.
RMWorks 0:0a596069bd38 49
RMWorks 0:0a596069bd38 50 i2c.frequency(400000); //set 400kHz
RMWorks 0:0a596069bd38 51
RMWorks 0:0a596069bd38 52 //pc.baud(115200);
RMWorks 0:0a596069bd38 53
RMWorks 0:0a596069bd38 54 char PWR_M[2] = {0x3E, 0x80};
RMWorks 0:0a596069bd38 55 i2c.write(adrIMU3000, PWR_M, 2, true);
RMWorks 0:0a596069bd38 56 char SMPL[2] = {0x15, 0x00};
RMWorks 0:0a596069bd38 57 i2c.write(adrIMU3000, SMPL, 2, true);
RMWorks 0:0a596069bd38 58 char DLPF[2] = {0x16, 0x18};
RMWorks 0:0a596069bd38 59 i2c.write(adrIMU3000, DLPF, 2, true);
RMWorks 0:0a596069bd38 60 char INT_C[2] = {0x17, 0x05};
RMWorks 0:0a596069bd38 61 i2c.write(adrIMU3000, INT_C, 2, true);
RMWorks 0:0a596069bd38 62 char PWR_M2[2] = {0x3E, 0x00};
RMWorks 0:0a596069bd38 63 i2c.write(adrIMU3000, PWR_M2, 2, true);
RMWorks 0:0a596069bd38 64
RMWorks 0:0a596069bd38 65 char adrIMU3000_y[1];
RMWorks 0:0a596069bd38 66 char readIMU3000[8];
RMWorks 0:0a596069bd38 67
RMWorks 0:0a596069bd38 68 short int read_x_2byte = 0;
RMWorks 0:0a596069bd38 69 short int read_y_2byte = 0;
RMWorks 0:0a596069bd38 70 short int read_z_2byte = 0;
RMWorks 0:0a596069bd38 71
RMWorks 0:0a596069bd38 72 while (1) {
RMWorks 0:0a596069bd38 73
RMWorks 0:0a596069bd38 74 adxl345.getOutput(readings);
RMWorks 0:0a596069bd38 75 float accelX = toG((int16_t)readings[0] ); //13-bit, sign extended values.
RMWorks 0:0a596069bd38 76 float accelY = toG((int16_t)readings[1] );
RMWorks 0:0a596069bd38 77 float accelZ = toG((int16_t)readings[2] );
RMWorks 0:0a596069bd38 78
RMWorks 0:0a596069bd38 79
RMWorks 0:0a596069bd38 80 adrIMU3000_y[0] = 0x1D; //register GYRO_XOUT_H
RMWorks 0:0a596069bd38 81
RMWorks 0:0a596069bd38 82 i2c.write(adrIMU3000, adrIMU3000_y , 1);
RMWorks 0:0a596069bd38 83 i2c.read(adrIMU3000, readIMU3000, 8);
RMWorks 0:0a596069bd38 84
RMWorks 0:0a596069bd38 85 read_x_2byte = ((readIMU3000[0] << 8) + readIMU3000[1]);
RMWorks 0:0a596069bd38 86 read_y_2byte = ((readIMU3000[2] << 8) + readIMU3000[3]);
RMWorks 0:0a596069bd38 87 read_z_2byte = ((readIMU3000[4] << 8) + readIMU3000[5]);
RMWorks 0:0a596069bd38 88 float Xw = toDeg_Sec(read_x_2byte );
RMWorks 0:0a596069bd38 89 float Yw = toDeg_Sec(read_y_2byte );
RMWorks 0:0a596069bd38 90 float Zw = toDeg_Sec(read_z_2byte );
RMWorks 0:0a596069bd38 91
RMWorks 0:0a596069bd38 92
RMWorks 0:0a596069bd38 93 FILE *fp = fopen("/sd/Data.txt","a");
RMWorks 0:0a596069bd38 94 fprintf(fp, "%f, %f, %f, %f, %f, %f, %f, %f\n", accelX, accelY, accelZ, Xw, Yw, Zw, scp1000.readPressure(), scp1000.readTemperature());
RMWorks 0:0a596069bd38 95 myled = 1;
RMWorks 0:0a596069bd38 96 fclose(fp);
RMWorks 0:0a596069bd38 97 myled = 0;
RMWorks 0:0a596069bd38 98
RMWorks 0:0a596069bd38 99 wait(1);
RMWorks 0:0a596069bd38 100
RMWorks 0:0a596069bd38 101 }
RMWorks 0:0a596069bd38 102 }