SSLM1 / Mbed 2 deprecated LPS33HW_v1

Dependencies:   mbed

Committer:
rary
Date:
Tue May 26 03:18:53 2020 +0000
Revision:
2:2e35d9358d5e
Parent:
1:851bc9589d81
addition; /high rate mode; /timer

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rary 0:f072b9d2936d 1 #include "mbed.h"
rary 0:f072b9d2936d 2
rary 1:851bc9589d81 3 LocalFileSystem local("local"); // マウントポイントを定義(ディレクトリパスになる)
rary 2:2e35d9358d5e 4 Timer t; //時間計測
rary 0:f072b9d2936d 5 Serial pc(USBTX, USBRX);
rary 0:f072b9d2936d 6 I2C i2c(p9, p10); //sda,scl
rary 0:f072b9d2936d 7
rary 0:f072b9d2936d 8 //LPS33HW slave address
rary 0:f072b9d2936d 9 #define S_add 0xB8
rary 0:f072b9d2936d 10
rary 0:f072b9d2936d 11 //Check adress
rary 0:f072b9d2936d 12 #define WHO_AM_I 0x0F
rary 0:f072b9d2936d 13
rary 0:f072b9d2936d 14 //CTRL_REG1
rary 0:f072b9d2936d 15 #define CTRL_REG1 0x10
rary 0:f072b9d2936d 16
rary 2:2e35d9358d5e 17 //Start Up
rary 2:2e35d9358d5e 18 #define Normal 0x10 //normal(1Hz)
rary 2:2e35d9358d5e 19 #define High_rate 0x50 //High rate(75Hz)
rary 0:f072b9d2936d 20
rary 0:f072b9d2936d 21 //data register
rary 0:f072b9d2936d 22 #define press_msb 0x2A
rary 0:f072b9d2936d 23 #define press_lsb 0x29
rary 0:f072b9d2936d 24 #define press_xlsb 0x28
rary 0:f072b9d2936d 25
rary 0:f072b9d2936d 26 //define function
rary 0:f072b9d2936d 27 char cmd[2];
rary 0:f072b9d2936d 28
rary 0:f072b9d2936d 29 void i2c_write(int addr,char regist,char data)
rary 0:f072b9d2936d 30 {
rary 0:f072b9d2936d 31 cmd[0]=regist;
rary 0:f072b9d2936d 32 cmd[1]=data;
rary 0:f072b9d2936d 33 i2c.write(addr,cmd,2);
rary 0:f072b9d2936d 34 }
rary 0:f072b9d2936d 35
rary 0:f072b9d2936d 36 char i2c_read(int addr,char regist)
rary 0:f072b9d2936d 37 {
rary 0:f072b9d2936d 38 cmd[0]=regist;
rary 0:f072b9d2936d 39 i2c.write(addr,cmd,1);
rary 0:f072b9d2936d 40 i2c.read(addr,cmd,1);
rary 0:f072b9d2936d 41 return cmd[0];
rary 0:f072b9d2936d 42 }
rary 0:f072b9d2936d 43
rary 0:f072b9d2936d 44 //main program
rary 0:f072b9d2936d 45 int main(){
rary 0:f072b9d2936d 46 unsigned long ID, M, L, XL;
rary 0:f072b9d2936d 47 double press;
rary 0:f072b9d2936d 48 double P;
rary 0:f072b9d2936d 49
rary 0:f072b9d2936d 50 //Communication Check
rary 0:f072b9d2936d 51 ID = i2c_read(S_add, WHO_AM_I);
rary 0:f072b9d2936d 52 pc.printf("ID = 0x%x\r\n", ID);
rary 0:f072b9d2936d 53
rary 0:f072b9d2936d 54 //Start Up
rary 2:2e35d9358d5e 55 i2c_write(S_add, CTRL_REG1, High_rate); //Start
rary 0:f072b9d2936d 56
rary 2:2e35d9358d5e 57 int i = 0; //変数
rary 2:2e35d9358d5e 58 int k = 500; //データ点数
rary 2:2e35d9358d5e 59 double data[k]; //data
rary 2:2e35d9358d5e 60 double T[k]; //Time
rary 1:851bc9589d81 61
rary 2:2e35d9358d5e 62 t.start(); //timer Start
rary 2:2e35d9358d5e 63
rary 2:2e35d9358d5e 64 while(i < k)
rary 0:f072b9d2936d 65 {
rary 0:f072b9d2936d 66 //data read
rary 0:f072b9d2936d 67 M = i2c_read(S_add, press_msb);
rary 0:f072b9d2936d 68
rary 0:f072b9d2936d 69 L = i2c_read(S_add, press_lsb);
rary 0:f072b9d2936d 70
rary 0:f072b9d2936d 71 XL = i2c_read(S_add, press_xlsb);
rary 0:f072b9d2936d 72
rary 0:f072b9d2936d 73 press = (M << 16) | (L << 8) | XL;
rary 2:2e35d9358d5e 74
rary 2:2e35d9358d5e 75 wait(0.001);
rary 0:f072b9d2936d 76
rary 0:f072b9d2936d 77 P = press/4096;
rary 0:f072b9d2936d 78 pc.printf("P = %lf [hPa] \r\n", P);
rary 1:851bc9589d81 79 data[i] = P;
rary 2:2e35d9358d5e 80 T[i] = t.read_ms();
rary 1:851bc9589d81 81
rary 1:851bc9589d81 82 i++;
rary 0:f072b9d2936d 83 }
rary 1:851bc9589d81 84
rary 1:851bc9589d81 85 //データ保存
rary 1:851bc9589d81 86 pc.printf("Save start!\r\n");
rary 2:2e35d9358d5e 87 pc.printf("%lf\r\n",T[99]);
rary 2:2e35d9358d5e 88 t.stop(); //Timer Stop
rary 1:851bc9589d81 89
rary 1:851bc9589d81 90 FILE *fp;
rary 1:851bc9589d81 91
rary 1:851bc9589d81 92 fp = fopen("/local/pressure.csv", "w"); // ファイルを書き込みモードで開く
rary 1:851bc9589d81 93
rary 2:2e35d9358d5e 94 for(i = 0 ; i < k ; i++){
rary 2:2e35d9358d5e 95 fprintf(fp, "%lf,%lf\n", T[i], data[i]);
rary 2:2e35d9358d5e 96 wait(0.01);
rary 1:851bc9589d81 97 }
rary 1:851bc9589d81 98
rary 1:851bc9589d81 99 fclose(fp);
rary 1:851bc9589d81 100
rary 1:851bc9589d81 101 pc.printf("finish!");
rary 1:851bc9589d81 102
rary 0:f072b9d2936d 103 }