以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较精确
第22组—启液—刘杰、马晓英、石洁
模块1:掌握气压传感器的工作原理,完成相关电路图的连接,并能够灵活应用气压传感器测量海拔高度
模块2:探究气压传感器在日常生活中的实际应用。
掌握气压传感器的工作原理,利用arduino进行 *** 作学习,并能测量出教室的海拔高度,学生了解气压传感器在日常生活中的实际应用。
1、激发学生对学习兴趣,培养学生勤思考爱动手的精神;
2、提高学生的动手实践能力和解决问题的能力;
3、培养学生的团队精神和合作交流学习的能力。
我们班有多少同学喜欢爬山呢?那你们在爬山的过程中,怎么知道自己到底爬了多高了?氏察小组讨论,看哪个组想的办法又准确又好!
以上方法呢都是很不错的选择,利用GPS定位系统是我们生活中比较常见的方法,但是由于技术水平的限制,GPS计算的海拔高度,一般误差都会有十米左右。而如果在树林里或者是在悬崖下面时,有时候甚至接收不到GPS卫星信号。这时候,我们就可以考虑测量气压,进而计算高度的方法来实现,而有的手歼旁茄机之所以有这个功能,是因为手机内部有气压传感器。
学生探索
交流分享
教学评价主体应包括,学生自评,小组合作评价以及教师评价三个方面
int Waterbin = A0 // 水压测量脚定义 (0~1023)int ledPin = 13 // 蜂鸣器控制脚定义(0~1)
int setWater = 0 // 设定水位高度值(0~1023)
void setup() {
pinMode(ledPin, OUTPUT) 初明物始化输出脚位
}
void loop() {
if(analogRead(Waterbin)>= setWater) //如果水位≥设定水位时执行以下
{
digitalWrite(ledPin, HIGH)// 高于设定时蜂鸣器响
}
else
{
digitalWrite(ledPin, LOW)//低于设定时蜂鸣器关
}
delay(10 //程序每10ms检测动作一次
}
有什么不懂的再问我把,激肆液我有也是初雹雹学,一起进步。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)