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














