201903_14ISEで実際に使用した開放用プログラム. 使用マイコンがNUCLES-F303K8なので注意
Dependencies: mbed Madgwick MPU6050 Kalman BMP180
main.cpp@1:b9ea35d93329, 2016-10-10 (annotated)
- Committer:
- mikawataru
- Date:
- Mon Oct 10 11:21:32 2016 +0000
- Revision:
- 1:b9ea35d93329
- Parent:
- 0:0ff20d8e9090
- Child:
- 2:a4895f7c3058
- Child:
- 3:24a8901befb6
test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mikawataru | 1:b9ea35d93329 | 1 | /* |
mikawataru | 1:b9ea35d93329 | 2 | 説明 |
mikawataru | 1:b9ea35d93329 | 3 | Nucleo-F303K8とBMP180を使った気温・気圧・高度計算のサンプルプログラム |
mikawataru | 1:b9ea35d93329 | 4 | |
mikawataru | 1:b9ea35d93329 | 5 | ライブラリ |
mikawataru | 1:b9ea35d93329 | 6 | https://developer.mbed.org/users/spiridion/code/BMP180/ |
mikawataru | 1:b9ea35d93329 | 7 | |
mikawataru | 1:b9ea35d93329 | 8 | 以下ピン配置 |
mikawataru | 1:b9ea35d93329 | 9 | Nucleo BMP180 |
mikawataru | 1:b9ea35d93329 | 10 | GND-----GND-------0V |
mikawataru | 1:b9ea35d93329 | 11 | +3V3----VIN |
mikawataru | 1:b9ea35d93329 | 12 | D4------SDA |
mikawataru | 1:b9ea35d93329 | 13 | D5------SCL |
mikawataru | 1:b9ea35d93329 | 14 | |
mikawataru | 1:b9ea35d93329 | 15 | */ |
mikawataru | 0:0ff20d8e9090 | 16 | #include "mbed.h" |
mikawataru | 0:0ff20d8e9090 | 17 | #include "math.h" |
mikawataru | 0:0ff20d8e9090 | 18 | #include "BMP180.h" |
mikawataru | 0:0ff20d8e9090 | 19 | #define p0 1013.25f//海面気圧 |
mikawataru | 0:0ff20d8e9090 | 20 | |
mikawataru | 0:0ff20d8e9090 | 21 | DigitalOut myled(LED1); |
mikawataru | 0:0ff20d8e9090 | 22 | Serial pc(USBTX,USBRX); |
mikawataru | 0:0ff20d8e9090 | 23 | BMP180 bmp(PB_7, PB_6); |
mikawataru | 0:0ff20d8e9090 | 24 | Timer timer; |
mikawataru | 0:0ff20d8e9090 | 25 | |
mikawataru | 0:0ff20d8e9090 | 26 | float getAlt(float press, float temp); |
mikawataru | 0:0ff20d8e9090 | 27 | |
mikawataru | 0:0ff20d8e9090 | 28 | int main() { |
mikawataru | 0:0ff20d8e9090 | 29 | float pressure,temperature,altitude; |
mikawataru | 0:0ff20d8e9090 | 30 | float time; |
mikawataru | 0:0ff20d8e9090 | 31 | bmp.Initialize(64,BMP180_OSS_ULTRA_LOW_POWER); |
mikawataru | 0:0ff20d8e9090 | 32 | pc.printf("time, temperature ,pressure, altitude\r\n"); |
mikawataru | 0:0ff20d8e9090 | 33 | timer.start(); |
mikawataru | 0:0ff20d8e9090 | 34 | |
mikawataru | 0:0ff20d8e9090 | 35 | while(1) { |
mikawataru | 0:0ff20d8e9090 | 36 | bmp.ReadData(&temperature,&pressure); |
mikawataru | 0:0ff20d8e9090 | 37 | altitude = getAlt(pressure,temperature); |
mikawataru | 0:0ff20d8e9090 | 38 | time = timer.read(); |
mikawataru | 0:0ff20d8e9090 | 39 | pc.printf("%f, %f, %f, %f \r\n",time, temperature, pressure, altitude); |
mikawataru | 0:0ff20d8e9090 | 40 | myled =! myled; |
mikawataru | 0:0ff20d8e9090 | 41 | wait(1); |
mikawataru | 0:0ff20d8e9090 | 42 | } |
mikawataru | 0:0ff20d8e9090 | 43 | } |
mikawataru | 0:0ff20d8e9090 | 44 | |
mikawataru | 0:0ff20d8e9090 | 45 | float getAlt(float press, float temp){ |
mikawataru | 0:0ff20d8e9090 | 46 | return (pow((p0/press), (1.0f/5.257f))-1.0f)*(temp+273.15f)/0.0065f; |
mikawataru | 0:0ff20d8e9090 | 47 | } |