Funktionen der Library MyBME280
MyBME280 MyBME280(byte i2cAdd)
Funktion: Erzeugt eine neue Instanz mit der I2C-Schnittstelle
Parameter: i2cAdd: I2C-Adresse des Sensors
MyBME280 MyBME280(byte cs, byte interface)
Funktion: Erzeugt eine neue Instanz mit der Hardware-SPI-Schnittstelle (Uno-Pins: 11-13)
Parameter: cs: Chipselect-Pin (beim Uno: 1 <= cs <= 10)
interface: BMP280_SPI (nur zur Unterscheidung zur Instanz mit I2C-Schnittstelle)
Bemerkung: 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 BME280_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. Nicht für Attiny realisiert!
Beispiel:
#include <MyBME280.h>
MyBME280 BME(10, BME280_SPI);
bool isReady(void)
Funktion: Überprüft, ob der Sensor ansprechbar ist, indem die Chip-Identifikationsnummer (0x60) abgefragt wird
Parameter: keine
Rückgabe: TRUE, wenn Sensor ansprechbar ist, sonst FALSE
Bemerkung: Die Funktion prüft nur, ob in einem I2C-Bus der Bauteil ansprechbar bzw. vorhanden ist. Es wird vorausgesetzt, dass der I2C-Bus technisch prinzipiell funktioniert (keine offenen Busleitungen, Pullup-Widerstände richtig, kein Kurzschluss oder Masseschluss, etc.).
void init(void)
Funktion: Auslesen der Kalibrierungskoeffizienten aus dem Sensor und Setzen der in der Library voreingestellten Standardparameter oder der vor der init()-Funktion gesetzten Parameter oder Parametersätze
Parameter: keine
Rückgabe: keine
Bemerkung: Wenn vor der init()-Funktion keine Parameter oder Parametersätze gesetzt wurden, werden folgende Standardparameter beim Aufruf der Funktion gesetzt:
- NORMAL_MODE
- P_OVERSAMPLING_x8
- T_OVERSAMPLING_x2
- H_OVERSAMPLING_x8
- STANDBY_TIME_1000
- FILTER_COEFF_4
Bemerkung: Vor der init()_Funktion können einzelne Parameter geändert oder ein neuer Parametersatz gesetzt werden!
Beispiel:
//Aendern einzelner Parameter
BME.setMode(BME280_FORCED_MODE);
BME.setPressOversampling(BME280_P_OVERSAMPLING_x4);
//oder setzen eines Parametersatzes
BME.setWeatherMonitoring();
BME.init();
void startSingleMeas(void)
Funktion: Startet eine Einzelmessung und wechselt dann in den Sleep-Modus
Parameter: keine
Rückgabe: keine
float readTemp(void)
Funktion: Liest die gemessenen Rohwerte aus dem Sensor aus und berechnet mit Hilfe der Kalibrierungskoeffizienten die Temperatur
Parameter: keine
Rückgabe: Umgebungstemperatur [°C]
Achtung: Beim Aufruf der Funktion wird keine neue Messung durchgeführt, es werden nur die Rohwerte aus dem Speicherbereich des Sensors neu ausgelesen. Messungen selbst werden im Normal-Modus im Hintergrund zyklisch in Abhängigkeit der Einstellung der Parameter und im Forced-Modus bei Aufruf der Funktion startSingleMeas() ausgeführt!
float readPress(void)
Funktion: Liest die gemessenen Rohwerte aus dem Sensor aus und berechnet mit Hilfe der Kalibrierungskoeffizienten Druck und Temperatur (für die Berechnung des Drucks wird auch die Temperatur benötigt)
Parameter: keine
Rückgabe: Luftdruck [hPa] (Hektopascal) bzw. [mbar] (Millibar)
Achtung: Beim Aufruf der Funktion wird keine neue Messung durchgeführt, es werden nur die Rohwerte aus dem Speicherbereich des Sensors neu ausgelesen. Messungen selbst werden im Normal-Modus im Hintergrund zyklisch in Abhängigkeit der Einstellung der Parameter und im Forced-Modus bei Aufruf der Funktion startSingleMeas() ausgeführt!
float readHumidity(void)
Funktion: Liest die gemessenen Rohwerte aus dem Sensor aus und berechnet mit Hilfe der Kalibrierungskoeffizienten Luftfeuchte und Temperatur (für die Berechnung der Luftfeuchte wird auch die Temperatur benötigt)
Parameter: keine
Rückgabe: Luftfeuchte [%]
Achtung: Beim Aufruf der Funktion wird keine neue Messung durchgeführt, es werden nur die Rohwerte aus dem Speicherbereich des Sensors neu ausgelesen. Messungen selbst werden im Normal-Modus im Hintergrund zyklisch in Abhängigkeit der Einstellung der Parameter und im Forced-Modus bei Aufruf der Funktion startSingleMeas() ausgeführt!
float readReducedPress(int hoehe)
Funktion: Liest die gemessenen Rohwerte aus dem Sensor aus, berechnet mit Hilfe der Kalibrierungskoeffizienten Temperatur und Druck (für die Berechnung des Drucks wird auch die Temperaturberechnung benötigt) und berechnet anschließend daraus den - auf Meereshöhe - reduzierten Luftdruck
Parameter: hoehe: Höhe des Standortes über Meeresspiegel [m]
Rückgabe: Reduzierter Luftdruck [hPa] (Hektopascal) bzw. [mbar] (Millibar)
Achtung: Beim Aufruf der Funktion wird keine neue Messung durchgeführt, es werden nur die Rohwerte aus dem Speicherbereich des Sensors neu ausgelesen. Messungen selbst werden im Normal-Modus im Hintergrund zyklisch in Abhängigkeit der Einstellung der Parameter und im Forced-Modus bei Aufruf der Funktion startSingleMeas() ausgeführt!
void setMode(byte mode)
Funktion: Setzen des Betriebsmodus des Sensors
Parameter: mode: BME280_NORMAL_MODE
BME280_FORCED_MODE -> SLEEP MODUS
BME280_SLEEP_MODE
Rückgabe: keine
Bemerkung:
Wird der Sensor in den Forced-Modus gesetzt, vebleibt er für genau eine Messung in diesem Modus und wechselt dann in den Sleep-Modus!
Das Setzen von einzelnen Parametern muss vor der init()-Funktion erfolgen!
void setPressOversampling(byte osrs_p)
Funktion: Setzen des Wertes für Druck-Oversampling oder ausschalten der Druckmessung
Parameter: osrs_p: BME280_P_OVERSAMPLING_x0 Druckmessung ausgeschaltet
BME280_P_OVERSAMPLING_x1 Auflösung 16 Bit
BME280_P_OVERSAMPLING_x2 Auflösung 17 Bit
BME280_P_OVERSAMPLING_x4 Auflösung 18 Bit
BME280_P_OVERSAMPLING_x8 Auflösung 19 Bit
BME280_P_OVERSAMPLING_x16 Auflösung 20 Bit
Rückgabe: keine
Bemerkung: Das Setzen von einzelnen Parametern muss vor der init()-Funktion erfolgen!
void setTempOversampling(byte osrs_t)
Funktion: Setzen des Wertes für Temperatur-Oversampling oder ausschalten der Temperaturmessung
Parameter: osrs_t: BME280_T_OVERSAMPLING_x0 Temperaturmessung ausgeschaltet
BME280_T_OVERSAMPLING_x1 Auflösung 16 Bit
BME280_T_OVERSAMPLING_x2 Auflösung 17 Bit
BME280_T_OVERSAMPLING_x4 Auflösung 18 Bit
BME280_T_OVERSAMPLING_x8 Auflösung 19 Bit
BME280_T_OVERSAMPLING_x16 Auflösung 20 Bit
Rückgabe: keine
Bemerkung: Das Setzen von einzelnen Parametern muss vor der init()-Funktion erfolgen!
void setHumidityOversampling(byte osrs_h)
Funktion: Setzen des Wertes für Feuchte-Oversampling oder ausschalten der Feuchtemessung
Parameter: osrs_h: BME280_H_OVERSAMPLING_x0 Feuchtemessung ausgeschaltet
BME280_H_OVERSAMPLING_x1 Auflösung 16 Bit
BME280_H_OVERSAMPLING_x2 Auflösung 17 Bit
BME280_H_OVERSAMPLING_x4 Auflösung 18 Bit
BME280_H_OVERSAMPLING_x8 Auflösung 19 Bit
BME280_H_OVERSAMPLING_x16 Auflösung 20 Bit
Rückgabe: keine
Bemerkung: Das Setzen von einzelnen Parametern muss vor der init()-Funktion erfolgen!
void setStandbyTime(byte t_sb)
Funktion: Setzen des Wertes für die Standby-Zeit. Das ist jene Zeit, wo im Normal-Modus der Sensor nach einer Messung nicht aktiv ist, also keine Messungen durchgeführt werden:
Parameter: t_sb: BME280_STANDBY_TIME_0p5 Standby Zeit = 0,5 ms
BME280_STANDBY_TIME_10 Standby Zeit = 10 ms
BME280_STANDBY_TIME_20 Standby Zeit = 20 ms
BME280_STANDBY_TIME_62p5 Standby Zeit = 62,5 ms
BME280_STANDBY_TIME_125 Standby Zeit = 125 ms
BME280_STANDBY_TIME_250 Standby Zeit = 250 ms
BME280_STANDBY_TIME_500 Standby Zeit = 500 ms
BME280_STANDBY_TIME_1000 Standby Zeit = 1000 ms
Rückgabe: keine
Bemerkung: Das Setzen von einzelnen Parametern muss vor der init()-Funktion erfolgen!
void setFilterCoeff(byte filter)
Funktion: Setzen des Filter-Koeffizienten. Gibt an, wie viele Abtastungen (samples) erforderlich sind, bis - bei einer sprunghaften Änderung des Messwertes - die Datenausgabe mindestens 75 % der Änderung gefolgt ist:
Parameter: filter: BME280_FILTER_COEFF_0 1 Abtastung (Filter ausgeschaltet)
BME280_FILTER_COEFF_2 2 Abtastungen
BME280_FILTER_COEFF_4 5 Abtastungen
BME280_FILTER_COEFF_8 11 Abtastungen
BME280_FILTER_COEFF_16 22 Abtastungen
Rückgabe: keine
Bemerkung: Das Setzen von einzelnen Parametern muss vor der init()-Funktion erfolgen!
void setWeatherMonitoring(void)
Funktion: Setzen des Parametersatzes für "Weather Monitoring"
Parameter: keine
Rückgabe: keine
Bemerkung: Wird ein Parametersatz gesetzt, muss danach immer die init()-Funktion ausgeführt werden!
Folgende Parameter werden gesetzt:
- FORCED_MODE
- P_OVERSAMPLING_x1
- T_OVERSAMPLING_x1
- H_OVERSAMPLING_x1
- FILTER_COEFF_0
- STANDBY_TIME_xxxx (Standby time im Forced Mode ohne Bedeutung)
Bemerkung:
Bei Aufruf der Funktion und Übernahme der Parameter mit init() im Forced-Modus, führt der Sensor eine Druck- und Temperatur-Messung aus und speichert die Ergebnisse als Rohwerte. Danach befindet sich der Sensor im Sleep-Modus. Im Anwenderprogramm muss dann mit der Funktion "startSingleMeas()" der Forced-Modus z.B. einmal pro Minute aktiviert werden, wobei dann wiederum jeweils genau eine Messung durchgeführt wird. Nach jeder Messung geht der Sensor wieder in den Sleep-Modus zurück.
Das Setzen eines Parametersatzes muss vor der init()-Funktion erfolgen!
void setHumiditySensing(void)
Funktion: Setzen des Parametersatzes für "Humidity sensing"
Parameter: keine
Rückgabe: keine
Bemerkung: Folgende Parameter werden gesetzt:
- FORCED_MODE
- P_OVERSAMPLING_x0 (Luftdruckmessung ausgeschaltet)
- T_OVERSAMPLING_x1
- H_OVERSAMPLING_x1
- FILTER_COEFF_0
- STANDBY_TIME_xxxx (Standby time im Forced Mode ohne Bedeutung)
Bemerkung: Das Setzen eines Parametersatzes muss vor der init()-Funktion erfolgen!
void setIndoorNavigation(void)
Funktion: Setzen des Parametersatzes für "Indoor Navigation"
Parameter: keine
Rückgabe: keine
Bemerkung: Folgende Parameter werden gesetzt:
- NORMAL_MODE
- P_OVERSAMPLING_x16
- T_OVERSAMPLING_x2
- H_OVERSAMPLING_x1
- FILTER_COEFF_16
- STANDBY_TIME_0p5
Bemerkung: Das Setzen eines Parametersatzes muss vor der init()-Funktion erfolgen!
void setGaming(void)
Funktion: Setzen des Parametersatzes für "Gaming"
Parameter: keine
Rückgabe: keine
Bemerkung: Folgende Parameter werden gesetzt:
- NORMAL_MODE
- P_OVERSAMPLING_x4
- T_OVERSAMPLING_x1
- H_OVERSAMPLING_x0
- FILTER_COEFF_16
- STANDBY_TIME_0p5
Bemerkung: Das Setzen eines Parametersatzes muss vor der init()-Funktion erfolgen!
byte readControlReg(void)
Funktion: Liest den Wert des Kontrollregister des Sensors (Adresse: 0xF4) aus
Parameter: keine
Rückgabe: Inhalt des Kontrollregisters (die Bedeutung der einzelnen Bits sind hier zu sehen oder dem Sensor-Datenblatt zu entnehmen)
byte readConfigReg(void)
Funktion: Liest den Wert des Konfigurationsregisters des Sensors (Adresse: 0xF5) aus
Parameter: keine
Rückgabe: Inhalt des Konfigurationsregisters (die Bedeutung der einzelnen Bits sind hier zu sehen oder dem Sensor-Datenblatt zu entnehmen)
byte readHumidityControlReg(void)
Funktion: Liest den Wert des Humidity-Kontrollregisters des Sensors (Adresse: 0xF2) aus
Parameter: keine
Rückgabe: Inhalt des Humidity-Kontrollregisters (die Bedeutung der einzelnen Bits sind hier zu sehen oder dem Sensor-Datenblatt zu entnehmen)