我想使用BMP180来测一测水火箭的发射高度数据,并使用Arduino nano 来记录数据以便用电脑读取数据。可是不知道怎么将BMP连接到Arduino板上去,程序也没有写好 求帮助啊。
以Arduino Uno为ä¾ï¼VCC æ¥3.3vï¼GNDæ¥GNDï¼SCLæ¥A5ï¼SDAæ¥A4
代ç å¦ä¸
#include <SFE_BMP180.h>
#include <Wire.h>
SFE_BMP180 pressure;// å建ä¸ä¸ªæ°å计对象
double baseline; // åºåæ°å
void setup()
{
Serial.begin(9600);
Serial.println("REBOOT");
// åå§åä¼ æå¨
if (pressure.begin())
Serial.println("BMP180 init success");
else
{
// ç³ç³ï¼æ°å计åºé®é¢äºï¼å¤åæ¯è¿çº¿æé®é¢
Serial.println("BMP180 init fail (disconnected?)\n\n");
while(1); // æå
}
//è·å¾åºåæ°å
baseline = getP();
Serial.print("baseline pressure: ");
Serial.print(baseline);
Serial.println(" hPa");
}
void loop()
{
double a,p,t;
p = getP();// è·å¾ä¸ä¸ªæ°åå¼
a = pressure.altitude(p,baseline);//è·å¾åºäºåºåæ°åçé«åº¦å¼
Serial.print("relative altitude: ");
if (a >= 0.0) Serial.print(" "); // è°æ´æ£æ°æ¾ç¤ºæ ¼å¼
Serial.print(a,1);
Serial.print(" meters ");
t = getT();// è·å¾ä¸ä¸ªæ¸©åº¦å¼
Serial.print("temperature: ");
Serial.print(t,1);
Serial.println(" degrees");
delay(500);//å·æ°ç
}
double getP()
{
char status;
double T,P,p0,a;
// You must first get a temperature measurement to perform a pressure reading.
// Start a temperature measurement:
// If request is successful, the number of ms to wait is returned.
// If request is unsuccessful, 0 is returned.
status = pressure.startTemperature();
if (status != 0)
{
// Wait for the measurement to complete:
delay(status);
// Retrieve the completed temperature measurement:
// Note that the measurement is stored in the variable T.
// Use '&T' to provide the address of T to the function.
// Function returns 1 if successful, 0 if failure.
status = pressure.getTemperature(T);
if (status != 0)
{
// Start a pressure measurement:
// The parameter is the oversampling setting, from 0 to 3 (highest res, longest wait).
// If request is successful, the number of ms to wait is returned.
// If request is unsuccessful, 0 is returned.
status = pressure.startPressure(3);
if (status != 0)
{
// Wait for the measurement to complete:
delay(status);
// Retrieve the completed pressure measurement:
// Note that the measurement is stored in the variable P.
// Use '&P' to provide the address of P.
// Note also that the function requires the previous temperature measurement (T).
// (If temperature is stable, you can do one temperature measurement for a number of pressure measurements.)
// Function returns 1 if successful, 0 if failure.
status = pressure.getPressure(P,T);
if (status != 0)
{
return P;
}
else Serial.println("error retrieving pressure measurement\n");
}
else Serial.println("error starting pressure measurement\n");
}
else Serial.println("error retrieving temperature measurement\n");
}
else Serial.println("error starting temperature measurement\n");
}
double getT()
{
char status;
double T,p0;
status = pressure.startTemperature();
if (status != 0)
{
delay(status);
status = pressure.getTemperature(T);
if (status != 0)
{
status = pressure.startPressure(3);
return T;
}
else Serial.println("error retrieving temperature measurement\n");
}
else Serial.println("error starting temperature measurement\n");
}
注æï¼ä¸²å£ä¼åæ¶è¾åºä¸¤ç»æ°æ®ï¼Aè¾ç²¾ç¡®