For Hepta-Sat Lite
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 I2C i2c(PB_7, PB_6); 00003 Serial pc(USBTX, USBRX, 9600); 00004 const int addr_accel_gyro = 0xD0; 00005 const int addr_compus = 0x18; 00006 00007 00008 char cmd[2]; 00009 char data[1]; 00010 char adata[1]; 00011 char mxl[1], mxh[1], myl[1], myh[1], mzl[1], mzh[1] , st[1]; 00012 double mg_x, mg_y, mg_z, MX, MY, MZ; 00013 00014 int main() { 00015 pc.printf("Start detectiong magnetism\r\n"); 00016 wait(1.0); 00017 i2c.frequency(100000); 00018 00019 cmd[0]=0x6B; 00020 cmd[1]=0x00; 00021 i2c.write(addr_accel_gyro,cmd,2); 00022 cmd[0] = 0x37; 00023 cmd[1] = 0x02; 00024 i2c.write(addr_accel_gyro,cmd,2); 00025 00026 //write address of compus 00027 adata[0] = 0x0A; 00028 adata[1] = 0x12; 00029 i2c.write(addr_compus,adata,2); 00030 i2c.stop(); 00031 wait(1); 00032 00033 while(1) { 00034 00035 //=========== x =========== 00036 //read mxl 00037 adata[0] = 0x03; 00038 i2c.write(addr_compus,adata,1); 00039 i2c.read(addr_compus|0x01,mxl,1); 00040 00041 //read mxh 00042 adata[0] = 0x04; 00043 i2c.write(addr_compus,adata,1); 00044 i2c.read(addr_compus|0x01,mxh,1); 00045 00046 00047 //=========== y =========== 00048 adata[0] = 0x05; 00049 i2c.write(addr_compus,adata,1); 00050 i2c.read(addr_compus|0x01,myl,1); 00051 00052 adata[0] = 0x06; 00053 i2c.write(addr_compus,adata,1); 00054 i2c.read(addr_compus|0x01,myh,1); 00055 00056 00057 //=========== z =========== 00058 adata[0] = 0x07; 00059 i2c.write(addr_compus,adata,1); 00060 i2c.read(addr_compus|0x01,mzl,1); 00061 00062 adata[0] = 0x08; 00063 i2c.write(addr_compus,adata,1); 00064 i2c.read(addr_compus|0x01,mzh,1); 00065 00066 //status 00067 adata[0] = 0x09; 00068 i2c.write(addr_compus,adata,1); 00069 i2c.read(addr_compus|0x01,st,1); 00070 00071 00072 00073 mg_x = short((mxh[0]<<8)|(mxl[0])); 00074 mg_y = short((myh[0]<<8)|(myl[0])); 00075 mg_z = short((mzh[0]<<8)|(mzl[0])); 00076 MX = mg_x*0.15; 00077 MY = mg_y*0.15; 00078 MZ = mg_z*0.15; 00079 pc.printf("MX= %f,MY= %f,MZ= %f\r\n",MX,MY,MZ); 00080 00081 wait(0.5); 00082 00083 } 00084 00085 }
Generated on Thu Sep 1 2022 18:44:28 by
1.7.2