LPS25H library

Dependents:   mbed_LPS25H GR-PEACH_TAMORI

See http://developer.mbed.org/users/yasuyuki/notebook/LPS25H/

Committer:
yasuyuki
Date:
Sun Oct 12 02:42:32 2014 +0000
Revision:
0:0d2babe81a04
first release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yasuyuki 0:0d2babe81a04 1 //**********************
yasuyuki 0:0d2babe81a04 2 // LPS25H.cpp for mbed
yasuyuki 0:0d2babe81a04 3 //
yasuyuki 0:0d2babe81a04 4 // LPS25H lps25h(P0_5,P0_4);
yasuyuki 0:0d2babe81a04 5 // or
yasuyuki 0:0d2babe81a04 6 // I2C i2c(P0_5,P0_4);
yasuyuki 0:0d2babe81a04 7 // LPS25H lps25h(i2c);
yasuyuki 0:0d2babe81a04 8 //
yasuyuki 0:0d2babe81a04 9 // (C)Copyright 2014 All rights reserved by Y.Onodera
yasuyuki 0:0d2babe81a04 10 // http://einstlab.web.fc2.com
yasuyuki 0:0d2babe81a04 11 //**********************
yasuyuki 0:0d2babe81a04 12
yasuyuki 0:0d2babe81a04 13 #include "mbed.h"
yasuyuki 0:0d2babe81a04 14 #include "LPS25H.h"
yasuyuki 0:0d2babe81a04 15
yasuyuki 0:0d2babe81a04 16 LPS25H::LPS25H (PinName sda, PinName scl) : _i2c(sda, scl) {
yasuyuki 0:0d2babe81a04 17 init();
yasuyuki 0:0d2babe81a04 18 }
yasuyuki 0:0d2babe81a04 19 LPS25H::LPS25H (I2C& p_i2c) : _i2c(p_i2c) {
yasuyuki 0:0d2babe81a04 20 init();
yasuyuki 0:0d2babe81a04 21 }
yasuyuki 0:0d2babe81a04 22
yasuyuki 0:0d2babe81a04 23 void LPS25H::put(unsigned char a, unsigned char b)
yasuyuki 0:0d2babe81a04 24 {
yasuyuki 0:0d2babe81a04 25 buf[0]=a;
yasuyuki 0:0d2babe81a04 26 buf[1]=b;
yasuyuki 0:0d2babe81a04 27 _i2c.write(LPS25H_ADDR, buf, 2);
yasuyuki 0:0d2babe81a04 28 }
yasuyuki 0:0d2babe81a04 29
yasuyuki 0:0d2babe81a04 30
yasuyuki 0:0d2babe81a04 31 void LPS25H::get(unsigned char a)
yasuyuki 0:0d2babe81a04 32 {
yasuyuki 0:0d2babe81a04 33 buf[0] = a;
yasuyuki 0:0d2babe81a04 34 _i2c.write(LPS25H_ADDR, buf, 1, true); // no stop, repeated
yasuyuki 0:0d2babe81a04 35 _i2c.read( LPS25H_ADDR, buf, 1);
yasuyuki 0:0d2babe81a04 36
yasuyuki 0:0d2babe81a04 37 }
yasuyuki 0:0d2babe81a04 38
yasuyuki 0:0d2babe81a04 39 long LPS25H::pressure()
yasuyuki 0:0d2babe81a04 40 {
yasuyuki 0:0d2babe81a04 41
yasuyuki 0:0d2babe81a04 42 // XL first and H last
yasuyuki 0:0d2babe81a04 43 // get press_xl
yasuyuki 0:0d2babe81a04 44 get(LPS25H_PRESS_POUT_XL_REH);
yasuyuki 0:0d2babe81a04 45 press.byte.LB=buf[0];
yasuyuki 0:0d2babe81a04 46 // get tpress_low
yasuyuki 0:0d2babe81a04 47 get(LPS25H_PRESS_OUT_L);
yasuyuki 0:0d2babe81a04 48 press.byte.HB=buf[0];
yasuyuki 0:0d2babe81a04 49 // get press_high
yasuyuki 0:0d2babe81a04 50 get(LPS25H_PRESS_OUT_H);
yasuyuki 0:0d2babe81a04 51 press.byte.UB=buf[0];
yasuyuki 0:0d2babe81a04 52 return press.Val;
yasuyuki 0:0d2babe81a04 53
yasuyuki 0:0d2babe81a04 54 // hPa = press.Val / 4096
yasuyuki 0:0d2babe81a04 55 // Pa = press.Val / 40.96
yasuyuki 0:0d2babe81a04 56 }
yasuyuki 0:0d2babe81a04 57
yasuyuki 0:0d2babe81a04 58
yasuyuki 0:0d2babe81a04 59 short LPS25H::temperature()
yasuyuki 0:0d2babe81a04 60 {
yasuyuki 0:0d2babe81a04 61
yasuyuki 0:0d2babe81a04 62 // L first and H last
yasuyuki 0:0d2babe81a04 63 // get tpress_low
yasuyuki 0:0d2babe81a04 64 get(LPS25H_TEMP_OUT_L);
yasuyuki 0:0d2babe81a04 65 temp.byte.LB=buf[0];
yasuyuki 0:0d2babe81a04 66 // get press_high
yasuyuki 0:0d2babe81a04 67 get(LPS25H_TEMP_OUT_H);
yasuyuki 0:0d2babe81a04 68 temp.byte.HB=buf[0];
yasuyuki 0:0d2babe81a04 69 return temp.S;
yasuyuki 0:0d2babe81a04 70
yasuyuki 0:0d2babe81a04 71 // C = 42.5 + temp.S / 480
yasuyuki 0:0d2babe81a04 72 // range:0 to 80C
yasuyuki 0:0d2babe81a04 73 // accuracy:+-2C
yasuyuki 0:0d2babe81a04 74 }
yasuyuki 0:0d2babe81a04 75
yasuyuki 0:0d2babe81a04 76
yasuyuki 0:0d2babe81a04 77 void LPS25H::init()
yasuyuki 0:0d2babe81a04 78 {
yasuyuki 0:0d2babe81a04 79 // Power ON Cycle=1Hz
yasuyuki 0:0d2babe81a04 80 put(LPS25H_CTRL_REG1, 0x90);
yasuyuki 0:0d2babe81a04 81 }
yasuyuki 0:0d2babe81a04 82
yasuyuki 0:0d2babe81a04 83