Bitte den folgenden Code kopieren (strg + c) und in die Arduino-Software einfügen strg + v Anschließend noch die Biblotheken „U8g2lib“ und „DallasTemperature“ einbinden und abschließend den Code auf den Arduino laden.
//OLED-Display
#include <U8g2lib.h> //Bibliothek einbinden
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE); // Display auswählen und verkürzte Bezeichnung festlegen
//DS18B20
#include <DallasTemperature.h> // Bibliotheken einbinden
#include <OneWire.h> // Bibliotheken einbinden
#include <Wire.h> // Bibliotheken einbinden
int Temperatursensor = 2; // Verbindung des Temperatursensors auf Pin 2 des Arduinos
OneWire oneWire(Temperatursensor); // Instanz zur Kommunikation mit dem Temperatursensor
DallasTemperature sensors(&oneWire); // Nutze diese Instanz für die DallasTemperature Bibliothek
//Variable in der die Messwerte gepeichert werden
float messwert = 0.0;
void setup(void) {
// Display starten
u8g2.begin();
// Starte serielle Schnittstelle zur Kommunikation mit dem Arduino
Serial.begin(9600);
// Starte Kommunikation mit dem temerpatursensor
sensors.begin();
}
void anzeige_oled () {
u8g2.firstPage(); // spart Arbeitsspeicher Bildschleife startet
do { // Schleife beginnt
u8g2.setFont(u8g2_font_logisoso24_tf); // Schriftart auswählen
// Das Display besteht aus 128x64 Pixeln (BreitexHöhe)
// Die Schriftart gibt es auch in den Größen 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 38, ..., 62, 78 und 92.
// Die ersten beiden Parameter in der Anweisung u8g2.drawStr geben das Pixel an, an dem gestartet wird.
// Sollten Messwert und Einheit ineinander verschwimmen, muss man statt 70 eine größere zahl wählen.
u8g2.drawStr(0, 30, String(messwert).c_str()); // Der aktuelle Messwert wird auf das Display geschrieben.
u8g2.drawUTF8(70, 30, " °C"); // Die Einheit wird auf das Display geschrieben.
}
while (u8g2.nextPage()); // Änderungen auf Display anzeigen
}
void loop() {
// Frage beim Sensor die Temperatur an
sensors.requestTemperatures();
// Gibt die Temperatur in Grad Celsius auf der seriellen Schnittstelle aus
messwert = sensors.getTempCByIndex(0);
// Der Messwert wird auf der seriellen Schnittselle ausgegeben.
Serial.print(messwert);
Serial.println(" °C");
// Die Funktion anzeige_oled wird ausgeführt
anzeige_oled();
// Warte eine Sekunde
delay(1000);
}