148707 ランダム
 ホーム | 日記 | プロフィール 【フォローする】 【ログイン】

何でもヲ屋ジ

PR

キーワードサーチ

▼キーワード検索

プロフィール


オドリー南の島

フリーページ

2010年12月08日
XML
カテゴリ:カテゴリ未分類
ArduinoにMPL115A2を使った事例が見つからない。
そこで、適当に書いてみた。

読み込んだ数値の使い方が難しい。
適切な処理をしている自信はないが、真の気圧の上下には連動して変化する。
動作確認用程度に使って欲しい。

<>を半角にしてね。

#include <Wire.h>
#define I2C_ADDRESS 0x60
short sic11,sic12,sic22,sib1,sib2,sia0;
long sic11l,sic12l,sic22l,sib1l,sib2l,sia0l;
//
void setup()
{
Wire.begin();
Serial.begin(9600);
//
Wire.beginTransmission(I2C_ADDRESS);
Wire.send(0x04);
Wire.endTransmission();
Wire.requestFrom(I2C_ADDRESS, 12); // request seven bytes
//
if(Wire.available()) {
short sia0MSB=Wire.receive();
short sia0LSB= Wire.receive();
sia0 = sia0MSB <<8; //s16 type //Shift to MSB
sia0 |= sia0LSB & 0x00FF; //Add LSB to 16bit number
sia0l = sia0;
//coeff b1 16bit
short sib1MSB= Wire.receive();
short sib1LSB= Wire.receive();
sib1 = sib1MSB <<8; //Shift to MSB
sib1 |= sib1LSB & 0x00FF; //Add LSB to 16bit number
sib1l = sib1;
//coeff b2 16bit
short sib2MSB= Wire.receive();
short sib2LSB= Wire.receive();
sib2 = sib2MSB <<8; //Shift to MSB
sib2 |= sib2LSB & 0x00FF; //Add LSB to 16bit number
sib2 &= 0xFFFF;
sib2l = sib2;
//coeff c12 14bit
short sic12MSB= Wire.receive();
short sic12LSB= Wire.receive();
sic12 = sic12MSB <<8; //Shift to MSB only by 8 for MSB
sic12 |= sic12LSB & 0x00FF;
sic12l = sic12;
//coeff c11 11bit
short sic11MSB= Wire.receive();
short sic11LSB= Wire.receive();
sic11 = sic11MSB <<8; //Shift to MSB only by 8 for MSB
sic11 |= sic11LSB & 0x00FF;
sic11l = sic11;
//coeff c22 11bit
short sic22MSB= Wire.receive();
short sic22LSB= Wire.receive();
sic22 = sic22MSB <<8; //Shift to MSB only by 8 for MSB
sic22 |= sic22LSB & 0x00FF;
sic22l = sic22;
}
//
}
//
//
//
void loop()
{
Wire.beginTransmission(I2C_ADDRESS);
Wire.send(0x12);
Wire.send(0x01);
Wire.endTransmission();
delay(5);
Wire.beginTransmission(I2C_ADDRESS);
Wire.send(0x00);
Wire.endTransmission();
Wire.requestFrom(I2C_ADDRESS, 4); // request 4 bytes
//
if(Wire.available()) {
short uiPadcw1 = Wire.receive();
short uiPadcw2 = Wire.receive();
long uiPadc = uiPadcw1 << 8;
uiPadc |= uiPadcw2;
uiPadc &= 0xFFFF;
uiPadc >>=6;
//
short uiTadcw1 = Wire.receive();
short uiTadcw2 = Wire.receive();
long uiTadc = uiTadcw1 << 8;
uiTadc |= uiTadcw2;
uiTadc &= 0xFFFF;
uiTadc >>=6;
//
long a1 = sib1l + (sic11l*uiPadc /2.0/2.0/2.0/2.0/2.0/2.0/2.0/2.0/2.0/2.0/2.0/2.0/2.0/2.0) + (sic12l*uiTadc/2.0/2.0/2.0/2.0/2.0/2.0/2.0/2.0/2.0/2.0/2.0);
long a2 = (sib2l/2.0) + (sic22l*uiTadc/2.0/2.0/2.0/2.0/2.0/2.0/2.0/2.0/2.0/2.0/2.0/2.0/2.0/2.0/2.0);
float pcomp = sia0l/8.0 + (a1*uiPadc + a2*uiTadc)/8192.0;

float hPa = (1150.0-500.0)/1023.0*pcomp + 500.0;

Serial.println(hPa);
//
//
}
}






最終更新日  2010年12月08日 21時28分18秒
コメント(0) | コメントを書く

バックナンバー

・2019年01月
・2018年12月
・2018年11月
・2018年10月
・2018年09月

カテゴリ

カレンダー

お気に入りブログ

コメント新着

burarigo@ Re:品不足で、普段食わないものを買って食べて、(03/18) そうなりそうです。冷凍庫に眠っていた菓…
mokomokono@ はじめまして オドリー南の島さんみたいにはっきり意見…
angelsatomi@ Re:マドンナ madonna の miles away の 和訳(07/18) はぁ~ あの歌詞ってそんな内容だったん…

ニューストピックス


Copyright (c) 1997-2019 Rakuten, Inc. All Rights Reserved.