気圧センサLPS331AP
説明書を見ながら間に合わせな感じでハンダ付け.
精度はかなり良いみたいです.
Arduinoでプログラミング.
気圧センサがちゃんと動きました.
3バイト読みだしてシフトしながら処理すると気圧が読み取れます.
1022.XX hPa の値が読み出せています.
データシートはこちら↓ アドレス0x20に書き込むデータで更新頻度が変えられます.
http://strawberry-linux.com/pub/DM00036196.pdf
スケッチはこちら↓
#include < Wire.h> int sensorAddress = 0xB8 >> 1; // LPS331APのアドレス,SA0=GNDで0xB8,SA0=VDDで0xBA unsigned long read2a, read29, read28; float reading= 0; // I2Cで指定したセンサの指定アドレスから1バイト読み出す int i2cReadByte(int deviceAddress, int registerAddress){ Wire.beginTransmission(deviceAddress); Wire.write(registerAddress); Wire.endTransmission(); Wire.requestFrom(deviceAddress, 1); return(Wire.read()); } // I2Cで指定したセンサの指定アドレスに1バイト書き込む void i2cWriteByte(int deviceAddress, int registerAddress, int data){ Wire.beginTransmission(deviceAddress); Wire.write(registerAddress); Wire.write(data); Wire.endTransmission(); } void setup() { Serial.begin(9600); Wire.begin(); Serial.println( i2cReadByte(sensorAddress, 0x0f), HEX); // 気圧センサのテスト,0f番地からBBが読めれば正常 i2cWriteByte(sensorAddress, 0x20, 0xa0); // 0xa0で7Hz,0x90にすると1Hzで気圧を更新 delay(1000); } void loop(){ read2a = i2cReadByte(sensorAddress, 0x2a); // 気圧の上位バイト read29 = i2cReadByte(sensorAddress, 0x29); // 気圧の中位バイト read28 = i2cReadByte(sensorAddress, 0x28); // 気圧の下位バイト reading =(read2a<<16) + (read29<<8) + read28; reading /=4096; // hPa単位に直す Serial.print(read2a,HEX); Serial.print(" "); Serial.print(read29,HEX); Serial.print(" "); Serial.print(read28,HEX); Serial.print(" "); Serial.println(reading ); // 気圧をシリアル出力 delay(100); }
ESP32 Wifi Bluetooth開発ボード |
Arduino Nano Every |
Raspberry Pi pico |
FPGA XILINX Artix-7 |