Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
main.cpp@2:2e35d9358d5e, 2020-05-26 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |