ivan fajar
/
bmp_baru
bmp
main.cpp@0:db75f53b7b2d, 2014-05-08 (annotated)
- Committer:
- ivanff15
- Date:
- Thu May 08 13:32:00 2014 +0000
- Revision:
- 0:db75f53b7b2d
bmp;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ivanff15 | 0:db75f53b7b2d | 1 | #include "mbed.h" |
ivanff15 | 0:db75f53b7b2d | 2 | #include "BMP085.h" |
ivanff15 | 0:db75f53b7b2d | 3 | #include <stdio.h> |
ivanff15 | 0:db75f53b7b2d | 4 | |
ivanff15 | 0:db75f53b7b2d | 5 | #define Pu 76 //cmHg |
ivanff15 | 0:db75f53b7b2d | 6 | #define Po 1009.789 |
ivanff15 | 0:db75f53b7b2d | 7 | |
ivanff15 | 0:db75f53b7b2d | 8 | float q=0.125,p=1.05728,r=10,k=0.10572799; |
ivanff15 | 0:db75f53b7b2d | 9 | |
ivanff15 | 0:db75f53b7b2d | 10 | float toPa(float data) |
ivanff15 | 0:db75f53b7b2d | 11 | { |
ivanff15 | 0:db75f53b7b2d | 12 | float hasil; |
ivanff15 | 0:db75f53b7b2d | 13 | hasil = data/100; |
ivanff15 | 0:db75f53b7b2d | 14 | return hasil; |
ivanff15 | 0:db75f53b7b2d | 15 | } |
ivanff15 | 0:db75f53b7b2d | 16 | |
ivanff15 | 0:db75f53b7b2d | 17 | Serial pc(USBTX,USBRX); |
ivanff15 | 0:db75f53b7b2d | 18 | I2C i2c(p28,p27); |
ivanff15 | 0:db75f53b7b2d | 19 | BMP085 alt_sensor(p28,p27); |
ivanff15 | 0:db75f53b7b2d | 20 | |
ivanff15 | 0:db75f53b7b2d | 21 | float tekanan,tekanan_filter; |
ivanff15 | 0:db75f53b7b2d | 22 | float ketinggian; |
ivanff15 | 0:db75f53b7b2d | 23 | |
ivanff15 | 0:db75f53b7b2d | 24 | float average() |
ivanff15 | 0:db75f53b7b2d | 25 | { |
ivanff15 | 0:db75f53b7b2d | 26 | float tekananx[50], rerata = 0; |
ivanff15 | 0:db75f53b7b2d | 27 | |
ivanff15 | 0:db75f53b7b2d | 28 | for (int i=0 ; i<50 ; i++) |
ivanff15 | 0:db75f53b7b2d | 29 | { |
ivanff15 | 0:db75f53b7b2d | 30 | tekananx[i]=alt_sensor.get_pressure(); |
ivanff15 | 0:db75f53b7b2d | 31 | rerata = rerata +tekananx[i]; |
ivanff15 | 0:db75f53b7b2d | 32 | } |
ivanff15 | 0:db75f53b7b2d | 33 | rerata = rerata / 50; |
ivanff15 | 0:db75f53b7b2d | 34 | return rerata; |
ivanff15 | 0:db75f53b7b2d | 35 | } |
ivanff15 | 0:db75f53b7b2d | 36 | |
ivanff15 | 0:db75f53b7b2d | 37 | int main() |
ivanff15 | 0:db75f53b7b2d | 38 | { |
ivanff15 | 0:db75f53b7b2d | 39 | pc.baud(57600); |
ivanff15 | 0:db75f53b7b2d | 40 | while(1) |
ivanff15 | 0:db75f53b7b2d | 41 | { |
ivanff15 | 0:db75f53b7b2d | 42 | alt_sensor.update(); |
ivanff15 | 0:db75f53b7b2d | 43 | tekanan=alt_sensor.get_pressure(); |
ivanff15 | 0:db75f53b7b2d | 44 | p=p+q; |
ivanff15 | 0:db75f53b7b2d | 45 | k=p/(p+r); |
ivanff15 | 0:db75f53b7b2d | 46 | tekanan_filter=tekanan_filter+k*(tekanan-tekanan_filter); |
ivanff15 | 0:db75f53b7b2d | 47 | ketinggian = 44330*(1.0-pow(tekanan_filter/Po,0.1903)); |
ivanff15 | 0:db75f53b7b2d | 48 | p=(1-k)*p; |
ivanff15 | 0:db75f53b7b2d | 49 | //ketinggian=alt_sensor.get_altitude_m(); |
ivanff15 | 0:db75f53b7b2d | 50 | //pc.printf("%f||%f\n",ketinggian,tekanan); |
ivanff15 | 0:db75f53b7b2d | 51 | pc.printf("%f||%f\n",tekanan,ketinggian); |
ivanff15 | 0:db75f53b7b2d | 52 | wait_ms(100); |
ivanff15 | 0:db75f53b7b2d | 53 | } |
ivanff15 | 0:db75f53b7b2d | 54 | } |