MPUとHMCでうごくかもver

Dependencies:   ConfigFile SDFileSystem mbed

Fork of LAURUS_program by hiroya taura

Committer:
YusukeWakuta
Date:
Sat Dec 26 11:44:09 2015 +0000
Revision:
43:3a37e39b234c
Parent:
29:59f4808e2eb6
hmc??????????????????????????????????????????

Who changed what in which revision?

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