Zum Hauptinhalt springen

Qwiic BME680 sensor

Was dieses Beispiel zeigt​

Lesen Sie Temperatur, Luftfeuchtigkeit und Luftdruck von einem BME680-Sensorboard über Qwiic aus und zeigen Sie die drei Werte, jeweils mit einem Symbol, sowie ein Soldered-Logo auf dem Bildschirm an. Die Werte werden einmal pro Minute aktualisiert.

Sie benötigen ein BME680 Breakout mit einem Qwiic Connector und ein Qwiic-Kabel, um es an das Inkplate anzuschließen. Laut den Kommentaren im Sketch antwortet das Sensorboard auf der I2C-Adresse 0x76, und der Sketch muss sie nicht angeben.

Dieses Beispiel verwendet außerdem die Soldered-BME680-Bibliothek (Soldered-BME280-BME680-Gas-Sensor-Arduino-Library), die nicht Teil der Inkplate-Bibliothek ist. Installieren Sie sie vor dem Kompilieren. Die Symbole und das Logo sind Bitmap-Arrays in icons.h, im selben Beispielordner.

Beispielcode​

Select Board
Inkplate7SPECTRA_Qwiic.ino
#include <BME680-SOLDERED.h> // Soldered library for BME680 Sensor
#include "Inkplate.h" // Include Inkplate library to the sketch
#include "icons.h"

Inkplate inkplate; // Create an object on Inkplate library
BME680 bme680; // Create an object on Soldered BME680 library (with no arguments sent to constructor, that means we are
// using I2C or Qwiic communication for BME680 sensor)

// Add temperature offset to calibrate the sensor
const float temperatureOffset = 0.0;

void setup()
{
Serial.begin(115200);
inkplate.begin(); // Init Inkplate library (you should call this function ONLY ONCE)
inkplate.clearDisplay(); // Clear frame buffer of display
inkplate.setTextSize(1); // Set text scaling to one (normal size)
inkplate.setTextColor(INKPLATE_BLACK);
inkplate.setCursor(0, 0);

// Init. BME680 library. Soldered BME680 sensor board uses 0x76 I2C address for the sensor but doesn't need to
// specify it
if (!bme680.begin())
{
inkplate.println("Sensor init failed!");
inkplate.println("Check sensor wiring/connection!");
inkplate.display();
while (1)
;
}
}

void loop()
{
// Clear frame buffer of the display
inkplate.clearDisplay();

// Set text size to print big numbers for temperature and humidity
inkplate.setTextSize(5);

// Display the temperature icon and measured value
inkplate.setCursor(200, 45);
inkplate.print(bme680.readTemperature() + temperatureOffset);
inkplate.print(" *C");
inkplate.drawBitmap(50, 5, temperature_icon, temperature_icon_w, temperature_icon_h, INKPLATE_RED); // Arguments are: start X, start Y, array variable name, size X, size Y, color


// Display humidity icon and measured value
inkplate.setCursor(200, 180);
inkplate.print(bme680.readHumidity() / 10);
inkplate.print(" %");
inkplate.drawBitmap(43, 140, humidity_icon, humidity_icon_w, humidity_icon_h, INKPLATE_GREEN); // Arguments are: start X, start Y, array variable name, size X, size Y, color


// Display the pressure icon and measured value
inkplate.setTextSize(4);
inkplate.setCursor(200, 315);
inkplate.print(bme680.readPressure() * 10);
inkplate.print(" hPa");
inkplate.drawBitmap(50, 270, pressure_icon, pressure_icon_w, pressure_icon_h, INKPLATE_BLUE); // Arguments are: start X, start Y, array variable name, size X, size Y, color

// Display Soldered logo
inkplate.drawBitmap(425, 401, logo, logo_w, logo_h, INKPLATE_YELLOW); // Arguments are: start X, start Y, array variable name, size X, size Y, color

// This line actually drawing on the Inkplate screen, previous lines just drawing into the frame buffer
inkplate.display();

// Wait a minute bit between readings due to slow refresh rate
delay(60000);

// If you want to save energy, instead of the delay function, you can use deep sleep as we used in DeepSleep
// examples
}

Verwendete Funktionen​

Inkplate()returns None

Erstellt das Inkplate-Objekt. Inkplate 7SPECTRA hat nur einen einzigen Sechs-Farben-Modus, daher erwartet der Konstruktor kein Modusargument.

ReturnsKonstruktor; kein Rückgabewert.

BME680()returns None

Soldered-BME680-Bibliothek: erstellt das Sensorobjekt. Ohne Argumente aufgerufen, verwendet es I2C, was der Qwiic-Verbindung entspricht.

ReturnsKonstruktor; kein Rückgabewert.

bme680.begin()returns bool

Soldered-BME680-Bibliothek: startet den Sensor. Der Sketch zeigt Sensor init failed! auf dem Bildschirm an und hält an, wenn die Funktion false zurückgibt.

Returnstrue, wenn der Sensor gestartet wurde.

bme680.readTemperature()returns float

Soldered-BME680-Bibliothek: liest die Temperatur aus. Der Sketch addiert temperatureOffset (0.0) und gibt den Wert gefolgt von *C aus.

ReturnsDer Temperaturwert.

bme680.readHumidity()returns float

Soldered-BME680-Bibliothek: liest die Luftfeuchtigkeit aus. Der Sketch teilt sie durch 10 und gibt sie gefolgt von % aus.

ReturnsDer Luftfeuchtigkeitswert.

bme680.readPressure()returns float

Soldered-BME680-Bibliothek: liest den Luftdruck aus. Der Sketch multipliziert ihn mit 10 und gibt ihn gefolgt von hPa aus.

ReturnsDer Luftdruckwert.

inkplate.begin()returns void

Initialisiert die Bibliothek, die Peripherie und den Framebuffer. Rufen Sie sie einmal in setup() auf.

ReturnsNichts.

inkplate.clearDisplay()returns void

Füllt den Framebuffer mit Weiß. Das Panel wird dadurch nicht verändert.

ReturnsNichts.

inkplate.setTextSize(uint8_t s)returns void

Legt die Textvergrößerung fest: 5 für Temperatur und Luftfeuchtigkeit, 4 für den Luftdruck.

ReturnsNichts.

inkplate.setTextColor(uint16_t c)returns void

Legt die Textfarbe fest, hier INKPLATE_BLACK.

ReturnsNichts.

inkplate.setCursor(int16_t x, int16_t y)returns void

Legt fest, wo der nächste ausgegebene Text beginnt.

ReturnsNichts.

inkplate.print(value)returns size_t

Gibt Text oder eine Zahl in den Framebuffer aus, wie Serial.print().

ReturnsAnzahl der ausgegebenen Bytes.

inkplate.println(text)returns size_t

Gibt Text in den Framebuffer aus und wechselt in die nächste Zeile. Der Sketch verwendet sie für die beiden Fehlerzeilen.

ReturnsAnzahl der ausgegebenen Bytes.

inkplate.drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t color)returns void

Zeichnet eine einfarbige Bitmap mit ihrer oberen linken Ecke bei (x, y) in der angegebenen Farbe. Der Sketch zeichnet das Temperatursymbol in Rot, das Luftfeuchtigkeitssymbol in Grün, das Luftdrucksymbol in Blau und das Logo in Gelb.

ReturnsNichts.

inkplate.display(bool _leaveOn = 0)returns void

Sendet den gesamten Framebuffer an das Panel und aktualisiert es.

ReturnsNichts.

Serial.begin(115200)returns void

Arduino-Core-Funktion: startet die serielle Schnittstelle mit 115200 Baud. Der Sketch gibt darüber nichts aus.

ReturnsNichts.

delay(ms)returns void

Arduino-Core-Funktion: wartet die angegebene Anzahl von Millisekunden, hier 60000.

ReturnsNichts.

Was zu erwarten ist​

Der Bildschirm zeigt die Temperatur mit der Beschriftung *C neben einem roten Symbol, die Luftfeuchtigkeit mit der Beschriftung % neben einem grünen Symbol, den Luftdruck mit der Beschriftung hPa neben einem blauen Symbol und unten rechts ein gelbes Soldered-Logo. Er wird einmal pro Minute aktualisiert. Der Sketch gibt nichts im Serial Monitor aus.

Wird der Sensor nicht gefunden, zeigt der Bildschirm Sensor init failed! und Check sensor wiring/connection! an, und der Sketch hält an.

🔗Vollständiges Beispiel öffnen

examples/Inkplate7SPECTRA/Advanced/Communications/Inkplate7SPECTRA_Qwiic

→