気圧センサーモジュール/LPS25H(SPI)のスケッチ
(1)SPI Libraryを参照して、以下のスケッチを作成しました。
//LPS25H-SPI
#include <SPI.h>
const int chipSelectPin = 7;
void setup()
{
pinMode(chipSelectPin, OUTPUT);
Serial.begin(9600);
SPI.begin();
delay(5);
Serial.println(readLPS25H(0x0F),HEX );//通信確認正常ならば0xBDを受信
writeLPS25H( 0x20, 0x90);//パワーオン、1Hzを設定
}
void loop()
{
int i;
long data[5];
float P,T;
for(i=0;i<5;i++)
{
data[i]=readLPS25H(0x28+i);
}
P=( float)(data[2]*256*256+data[1]*256+data[0])/4096.0;
if(data[4]>=128)
{
T=42.5-( float)(65536-(data[4]*256+data[3]))/480.0;
}
else
{
T=42.5+( float)(data[4]*256+data[3])/480.0;
}
Serial.print("Pressure(hPa)=");
Serial.print(P,2);
Serial.print("\t");
Serial.print("Temperature(C)=");
Serial.println(T,2);
delay(1000);
}
byte readLPS25H( byte Register )
{
byte rdata = 0x00;
digitalWrite(chipSelectPin, LOW);
SPI.transfer(0x80 | Register);
rdata=SPI.transfer(0x00);
digitalWrite(chipSelectPin, HIGH);
return rdata;
}
void writeLPS25H(byte Register, byte Value)
{
digitalWrite(chipSelectPin, LOW);
SPI.transfer(0x7F & Register);
SPI.transfer(Value);
digitalWrite(chipSelectPin, HIGH);
}