Tem­pe­ra­tur­sen­sor DS18B20 (TO92)

// benötigte Bibliotheken
#include "OneWire.h"
#include "DallasTemperature.h"
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"

// Bildschirmgröße definieren
#define BildschirmBreite 128  
#define BildschirmHoehe 64  

#define OLED_RESET 4  

// Adresse: 0x3C oder 0x3D
#define Adresse 0x3c  

// Name des Displays und Startparameter
Adafruit_SSD1306 oled(BildschirmBreite, BildschirmHoehe, &Wire, OLED_RESET);

// Pin des Sensors an OneWire übergeben
#define ONE_WIRE_BUS 9

// oneWire-Instanz erstellen
OneWire oneWire(ONE_WIRE_BUS);

// oneWire-Instanz an den Sensor übergeben
DallasTemperature TemperaturSensor(&oneWire);

void setup()
{
  // Temperatursensor starten
  TemperaturSensor.begin();

   // OLED starten
  oled.begin(SSD1306_SWITCHCAPVCC, Adresse);
  oled.clearDisplay();

  // Schriftfarbe und -größe
  oled.setTextColor(WHITE);
  oled.setTextSize(3);

  // erweiterte Codepage (255 Zeichen)
  oled.cp437(true);
  Serial.begin(9600);
}

void loop()
{
  TemperaturSensor.requestTemperatures(); 
  
  // getTempCByIndex(0) -> 0 = 1. angeschlossener Sensor
  float TemperaturLesen = TemperaturSensor.getTempCByIndex(0);

  // überprüfen, ob das Lesen der Temperatur erfolgreich war
  if (TemperaturLesen != DEVICE_DISCONNECTED_C)
  {
    String Temperatur  = String(TemperaturLesen);

    // . in , umwandeln
    Temperatur.replace(".", ",");
   
    // Temperatur anzeigen
    oled.clearDisplay();
    oled.setCursor(0, 0);
    oled.print(Temperatur + "");

    // Sonderzeichen ° anzeigen
    oled.write(248);
    oled.write("C");
    oled.display();

    // kurzes delay zu Demozwecken
    delay(3000);

    // Ausgabe Serieller Plotter
    Serial.print("Temperatur:");
    Serial.print(Temperatur);
    Serial.println(",");
  }
  else
  {
    Serial.println("Temperatur nicht lesbar!");
  }
}

Letzte Aktualisierung: Jun 26, 2024 @ 7:56