有多個BMP085要同時使用時,可以用XCLR來開關每個模塊,HIGH是開,LOW是關
但是引用Adafruit_BMP085的函式庫時有很多的資料變數混用,所以改寫一下
在Adafruit_BMP085.h增加
public
void bmp085Calibration();
在Adafruit_BMP085.cpp增加
void Adafruit_BMP085::bmp085Calibration() {
ac1 = read16(BMP085_CAL_AC1);
ac2 = read16(BMP085_CAL_AC2);
ac3 = read16(BMP085_CAL_AC3);
ac4 = read16(BMP085_CAL_AC4);
ac5 = read16(BMP085_CAL_AC5);
ac6 = read16(BMP085_CAL_AC6);
b1 = read16(BMP085_CAL_B1);
b2 = read16(BMP085_CAL_B2);
mb = read16(BMP085_CAL_MB);
mc = read16(BMP085_CAL_MC);
md = read16(BMP085_CAL_MD);
}
#include <Wire.h>
#include <Adafruit_BMP085.h>
// VCC --> 5V
// GND --> Gnd
// SCL --> A5
// SDA --> A4
// EOC is not used, it signifies an end of conversion
// XCLR --> D8, D10
Adafruit_BMP085 bmp;
void setup() {
pinMode(8,OUTPUT);
pinMode(10,OUTPUT);
digitalWrite(8,HIGH);
Serial.begin(9600);
if (!bmp.begin()) {
Serial.println("Could not find a valid BMP085 sensor, check wiring!");
while (1) {}
}
}
void loop() {
digitalWrite(8,HIGH);
readBMPData();
digitalWrite(8,LOW);
delay(500);
digitalWrite(10,HIGH);
readBMPData();
digitalWrite(10,LOW);
delay(500);
}
void readBMPData(){
bmp.bmp085Calibration();
Serial.print("BMP8Temperature = ");Serial.print(bmp.readTemperature());Serial.println(" *C");
Serial.print("Pressure = ");Serial.print(bmp.readPressure());Serial.println(" Pa");
// Calculate altitude assuming 'standard' barometric
// pressure of 1013.25 millibar = 101325 Pascal
Serial.print("Altitude = ");Serial.print(bmp.readAltitude());Serial.println(" meters");
Serial.print("Pressure at sealevel (calculated) = ");Serial.print(bmp.readSealevelPressure());Serial.println(" Pa");
// you can get a more precise measurement of altitude
// if you know the current sea level pressure which will
// vary with weather and such. If it is 1015 millibars
// that is equal to 101500 Pascals.
Serial.print("Real altitude = ");Serial.print(bmp.readAltitude(101500));Serial.println(" meters");
}