Werte eines BME280 Sensors auf einem Display anzeigen
In diesem kurzen Beitrag zeige ich dir, wie du die 3 Werte des Sensors BME280 auf einem 0,91 Zoll Display anzeigen kannst. Den Sensor BME280 habe ich bereits im Beitrag Arduino Lektion 44: BME280 Temperatur, Luftfeuchtigkeit und Luftdruck Sensor
BME280 - Temperatur, Luftfeuchtigkeit und Luftdruck Sensor
benötigte Bauteile für dieses kleine Projekt
Du benötigst für dieses Projekt: 1x Microcontroller, zbsp. Arduino Nano 328P 1x OLED Display 0,91 Zoll, 1x BME280 Sensor, 1x Breadboard, 400 Pin 8x Breadboardkabel, 20cm, männlich - männlich
Besonderheiten bei Arduino Nano Varianten
Wenn du den Arduino Nano verwendest dann solltest du auf den verwendeten Chip (CPU) achten. Es gibt diesen Microcontroller mit einem ATMEL Mega 328P sowie einem ATMEL Mega 168 Chip. Ein wesentlicher Unterschied dieser beiden Chips sind unter anderem der verfügbare Speicherplatz. Der ATMEL MEGA 328P hat 32KB Speicher (wovon 2KB für den Bootloader reserviert sind) und der ATMEL MEGA 168 hat nur 16KB Speicher (wovon 2KB für den Bootloader reserviert sind). Solltes du also versuchen den Quellcode auf einem ATMEL MEGA 168 hoch zuladen so erscheint die Fehlermeldung das der verfügbare Speicherplatz nicht ausreicht. Der Sketch verwendet 20964 Bytes (146%) des Programmspeicherplatzes. Das Maximum sind 14336 Bytes.text section exceeds available space in board Globale Variablen verwenden 693 Bytes (67%) des dynamischen Speichers, 331 Bytes für lokale Variablen verbleiben. Das Maximum sind 1024 Bytes. Der Sketch ist zu groß; unter http://www.arduino.cc/en/Guide/Troubleshooting#size finden sich Hinweise, um die Größe zu verringern. Fehler beim Kompilieren für das Board Arduino Nano. Jedoch bei einem ATMEL MEGA 328P reicht dieser Speicher locker aus. Der Sketch verwendet 20964 Bytes (68%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes. Globale Variablen verwenden 693 Bytes (33%) des dynamischen Speichers, 1355 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
Aufbau
Der Sensor BME280 sowie das 0,91 Zoll Display kommunizieren über SPI, durch die Unterschiedlichen Adressen können diese sich die Pins A4 & A5 "teilen". Sensor / Aktor Arduino Nano BME280 VIN 3,3V GND GND SCL analoger Pin A5 SDA analoger Pin A4 0,91 Zoll Display GND GND VCC 3,3V SCL analoger Pin A5 SDA analoger Pin A4
Sensor BME280 am Arduino Nano mit 0,91 Zoll Display
Quellcode
Für den nachfolgenden Quellcode benötigst du zusätzlich die Bibliothek http://static.cactus.io/downloads/library/bme280/cactus_io_BME280_I2C.zip. Wie du eine Bibliothek in die Arduino IDE installierst habe ich im gleichnamigen Beitrag Arduino IDE, Einbinden einer Bibliothek erklärt. #include #include "cactus_io_BME280_I2C.h" #include #include #include #include #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); #define NUMFLAKES 10 #define XPOS 0 #define YPOS 1 #define DELTAY 2 #if (SSD1306_LCDHEIGHT != 32) #error("Height incorrect, please fix Adafruit_SSD1306.h!"); #endif BME280_I2C bme(0x76); // I2C using address 0x76 void setup() { Serial.begin(9600); //Setup für den BME280 Sensor if (!bme.begin()) { Serial.println("Es konnte kein BME280 Sensor gefunden werden!"); Serial.println("Bitte überprüfen Sie die Verkabelung!"); while (1); } bme.setTempCal(-1); //Setup für das Display display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.display(); delay(1000); display.clearDisplay(); } void loop() { bme.readSensor(); String tempC = "Temp.:" + String(bme.getTemperature_C()) + "C"; String humidity = "Humidity:" + String(bme.getHumidity()) + "%"; String pressure = "Press.:" + String(bme.getPressure_MB()) + " mPa"; displayText(tempC, humidity, pressure); } void displayText(String row1, String row2, String row3) { delay(1000); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0, 0); display.println(row1); display.setCursor(0, 10); display.println(row2); display.setCursor(0, 20); display.println(row3); display.display(); display.clearDisplay(); } Read the full article















