Новая библиотека для датчика давления и температуры BMP180

Властелин 24.08.2015

Новая очень удобная и облегченная библиотека для датчика давления и температуры BMP180.

Преимущества библиотеки:

  • Короткий код;
  • Библиотека читает результат по состоянию готовности флага CSO датчика, а не ждет максимально допустимое время регламентированное в datasheet, что ускоряет её работу почти в 2 раза;
  • Для измерения высоты не требуется вводить давление на уровне моря в Паскалях, искать свою высоту над уровнем моря и т.д.

Библиотека сама замеряет высоту при старте и считает её за 0 метров (по умолчанию, но можно изменять, описано в examples)
Дальнейшие показания высоты рассчитываются от этой точки (где было включено питание, например посадочная площадка квадрокоптера).

Пример:

#include <Wire.h>
#include <BMP180.h>
BMP180    sensor;
void setup() {
    Serial.begin(9600);
    delay(1000);
    sensor.begin();
}
void loop() {
    if(sensor.read())    {Serial.println((String)"CEHCOP BMP180: P="+sensor.pres+" MM.PT.CT - T="+sensor.temp+" *C - B="+sensor.alti+" M.");}
    else            {Serial.println(    "CEHCOP BMP180: HET OTBETA");}
    delay(3000);
}
// в библиотеке доступны всего две функции:
// sensor.begin();    ИНИЦИАЛИЗАЦИЯ СЕНСОРА (функция проверяет наличие сенсора и читает из него калибровочные коэффициенты для расчетов)
// sensor.begin(160);    функция может принимать параметр float начальная высота, например над уровнем моря (по умолчанию = 0)
//            функцию достаточно вызвать 1 раз, но не ранее чем через 10мс после подачи напряжения питания на BMP180
// sensor.read();    ЧТЕНИЕ ПАРАМЕТРОВ СЕНСОРА (функция читает данные сенсора и пересчитывает их в соответствии с калибровочными коэффициентами)
// sensor.read(0);    функция может принимать параметр 0 , 1 , 2 или 3 , по умолчанию 3 (точность расчетов 0-минимальная ... 3-максимальная), чем меньше точность, тем быстрее происходит обработка и чтение параметров
//            функция возвращает true или false в зависимости от реакции сенсора. Так же возвращает false если ни разу не вызывалась функция sensor.begin();
// результаты хранятся в следующих переменных:
// sensor.pres        float - давление в мм.рт.ст.
// sensor.temp        float - температура в *С
// sensor.alti        float - высота относительно начальной (например над уровнем моря)

Спасибо автору библиотеки : Панькину Павлу

Обсуждение

Присоединяйся

На главную