Программа

Для теста напишем программу, которая будет выводить значение атмосферного давления, температуру датчика и высоту над уровнем моря в последовательный порт. Используем библиотеку Adafruit_BMP280, которую можно найти в репозитории Arduino IDE. Для начала вариант с I2C интерфейсом.

#include <Adafruit_BMP280.h>

Adafruit_BMP280 bmp;
  
void setup() {
    Serial.begin(9600);
  
    if (!bmp.begin()) { // инициализация датчика
        Serial.println("Error!");
        while (1);
    }
}
  
void loop() {
    // вывод температуры в градусах
    Serial.print("t = ");
    Serial.print(bmp.readTemperature());
    Serial.println(" *C");
    
    // вывод давления в гектопаскалях
    Serial.print("p = ");
    Serial.print(bmp.readPressure() / 100.0F);
    Serial.println(" hPa");

    // вывод высоты над уровнем моря в метрах
    // 1013.25 - высота на уровне моря
    Serial.print("alt = ");
    Serial.print(bmp.readAltitude(1013.25));
    Serial.println(" m");
    
    Serial.println();
    delay(2000);
}

И второй вариант — в случае подключения по SPI. Процедуры setup и loop расписывать не будем, они остаются такими же.

#include <Adafruit_BMP280.h>

#define BMP_CS 10

Adafruit_BMP280 bmp(BMP_CS);
  
void setup() {
...
}
  
void loop() {
...
}

Как видим, для подключения через аппаратный SPI интерфейс достаточно передать дополнительный аргумент — CS (Chip Select) в конструктор объекта bmp. Всё остальное, эквивалентно коду для I2C.

Кстати, библиотека Adafruit_BMP280 позволяет работать и с программным SPI интерфейсом. Для этого в конструктор нужно передать номера всех контактов: CS, MOSI, MISO, SCK.

Adafruit_BMP280 bmp(BMP_CS, BMP_MOSI, BMP_MISO,  BMP_SCK);

Какой бы вариант мы не выбрали, загружаем программу на Ардуино и наблюдаем поток данных в мониторе последовательного порта.

Arduino и BMP280

Готово!


Изменено:

Модуль барометра BMP280: Один комментарий

  1. Сделал корректировку высоты , а в результатах не отображается высота (Approx altitude = inf m), в чем может быть проблема ?

Добавить комментарий

Ваш адрес email не будет опубликован.