#include <OneWire.h>// Library for communication with OneWire devices
#include <DallasTemperature.h> // Library for the Dallas temperature sensors
#define ONE_WIRE_BUS 7
OneWire oneWire(ONE_WIRE_BUS); // Setup a oneWire instance to communicate with devices
DallasTemperature sensors(&oneWire); // Pass oneWire reference to Dallas temperature sensor
//DS18B20 temperature sensor
void setup() {
Serial.begin(9600);
sensors.begin(); // Initialize the Dallas temperature sensor
sensors.setResolution(12);// there are 4 diffrent resulutions to choose from, this determines the temperature increments
// 9 = 0.5°C
// 10 = 0.25°C
// 11 = 0.125°C
// 12 = 0.0625°C
//assigns the pins 2-4 to be OUTPUT and set to LOW
for (int pinNumber = 2; pinNumber < 5; pinNumber++) {
pinMode(pinNumber, OUTPUT);
digitalWrite(pinNumber, LOW);
}
delay(5000); // Extended delay to allow sensor initialization
}
// Main loop to read temperature and control pins based on temperature range
void loop() {
sensors.requestTemperatures();// Request temperature from the sensor
float temp = sensors.getTempCByIndex(0);
if(temp == DEVICE_DISCONNECTED_C) {
Serial.println("Error: Could not read temperature data");
return;
}
Serial.println(temp); // Print the temperature reading
Serial.flush();// Clear the serial buffer
// Control pins based on temperature range
if(temp >= 15 && temp <= 25){ // Stabil
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
} else if(temp > 25 && temp < 30){ //intermediate step, still "stabil"
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
} else if(temp >= 30 && temp <= 40){ // Hög
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
} else if(temp <= 15){ // Låg
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
}
//60 000 ms = 1 min
//600 000 ms = 10 min
delay(6000); // Delay for 6 seconds before the next loop iteration
}