Verwendung der Library für BMP280 mit SPI-Schnittstelle

Anstelle über die I2C-Schnittstelle kann der Sensor von der Library auch über die (Hardware-)SPI-Schnittstelle angesprochen werden. Dabei wird bei der Erstellung einer neuen Instanz - anstelle der I2C-Adresse - der gewünschte CS-Pin (Chipselect-Pin) übergeben, sowie eine Variable namens BMP280_SPI. Diese Variable dient nur dafür, dass die Library erkennt, dass mit der ersten Variablen ein Pin übergeben wird und nicht eine I2C-Adresse.

Beispiel:

#include <MyBMP280.h>

MyBMP280 BMP(10, BMP280_SPI);

          

Bild: Luftdrucksensor BMP280 auf einem Adafruit Breakout Board mit I2C- und SPI-Schnittstelle und Pegelwandler für Versorgungs- und Logikspannung von 5 V.

Testaufbau mit SPI-Schnittstelle:

Verwendete Bauteile:

  • 1 Arduino Nano
  • 1 BMP280 Luftdrucksensor von Adafruit


Anschluss des Sensors an Arduino Uno/Nano und Mega:

       Arduino                     Sensor (SPI)

Uno/Nano   Mega

  5V             5V         ->      VIN

  GND          GND      ->      GND

  D13           D52      ->       SCK  (CLK)

  D12           D51      ->       SDO (MISO)

  D11           D50      ->       SDI  (MOSI)

  Dx             Dx        ->       CS    (SS)

Dx: Während die Pins für CLK, MISO und MOSI am Arduino fix vorgegeben sind (Hardware-SPI), kann der SS-Pin (Chipselect CS) softwaremäßig frei vergeben werden. Im nachfolgenden Beispiel wird für Dx der Pin D10 verwendet.



Programmbeispiele MyBMP280 mit SPI-Schnittstelle:

Nachfolgendes Beispiel gibt - sofern ein Sensor erkannt wurde - alle 5 Sekunden Temperatur und Luftdruck am Seriellen Monitor aus:


//Testprogramm für Luftdrucksensor BMP280 mit SPI-Schnittstelle
//Code fuer Arduino
//Author Retian
//Version 1.0


#include <MyBMP280.h>


MyBMP280 BMP(10, BMP280_SPI); //SPI-Interface mit Chipselect-Pin 10


void setup() {
  Serial.begin(115200);

  if (BMP.isReady())
  {
    Serial.println("BMP280 gefunden!");
    BMP.setHandheldLowPower(); //Setzen des Parametersatzes für "Handheld Low Power"
    BMP.init();
  }
  else
  {
    Serial.println("BMP280 nicht gefunden!");
    while (1); //Im Fehlerfall geht's hier nicht weiter!
  }
  Serial.println();
}


void loop() {
  Serial.print("Temperatur: ");
  Serial.print(BMP.readTemp());
  Serial.println(" Grad C");
  Serial.print("Luftdruck : ");
  Serial.print(BMP.readPress());
  Serial.println(" hPa");
  Serial.println();
  delay(5000);
}

Zur Library Luftdrucksensor BMP280 oder zu den Funktionen