#include <OneWire.h>
#include <DallasTemperature.h>

// Definieer de pinnen
#define ONE_WIRE_BUS 4       // Pin voor de DS18B20 data
#define OUTPUT_PIN 11        // De digitale uitgang, bijvoorbeeld een LED op pin 13

// Instellingen voor de sensor en bibliotheken
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

// Definieer de temperatuurdrempels
const float LOWER_THRESHOLD = 5.0;  // Onder deze temperatuur gaat de uitgang hoog
const float UPPER_THRESHOLD = 7.0;  // Boven deze temperatuur gaat de uitgang weer laag

void setup() {
  // Setup de pinmodi
  pinMode(OUTPUT_PIN, OUTPUT);
  digitalWrite(OUTPUT_PIN, LOW);  // Zet de uitgang standaard uit

  // Start seriële communicatie en temperatuursensoren
  Serial.begin(9600);
  sensors.begin();
}

void loop() {
  // Lees de temperatuur van de DS18B20
  sensors.requestTemperatures();
  float temperatureC = sensors.getTempCByIndex(0); // Leest de temperatuur van de eerste sensor

  // Print de temperatuur in de seriële monitor
  Serial.print("Temperatuur: ");
  Serial.print(temperatureC);
  Serial.println(" °C");

  // Controleer of de temperatuur onder de 5°C is
  if (temperatureC < LOWER_THRESHOLD) {
    digitalWrite(OUTPUT_PIN, HIGH); // Zet uitgang hoog
  } 
  // Controleer of de temperatuur boven de 7°C is
  else if (temperatureC > UPPER_THRESHOLD) {
    digitalWrite(OUTPUT_PIN, LOW);  // Zet uitgang laag
  }

  // Wacht een seconde voordat je de temperatuur opnieuw leest
  delay(1000);
}