#include <OneWire.h>
#include <DallasTemperature.h>
#define TEMP_ONE 7
#define TEMP_TWO 8
OneWire oneWireOne(TEMP_ONE);
OneWire oneWireTwo(TEMP_TWO);
DallasTemperature sensorsOne(&oneWireOne);
DallasTemperature sensorsTwo(&oneWireTwo);
float zeroPoint = 0; // Variable to store the zero point temperature
float lastCelsiusTwo = 0; // Variable to store the last temperature of sensor two
void setup() {
sensorsOne.begin();
sensorsTwo.begin();
Serial.begin(9600);
setZeroPoint(); // Set the initial zero point
sensorsTwo.requestTemperatures();
lastCelsiusTwo = sensorsTwo.getTempCByIndex(0); // Initialize the last temperature
}
void loop() {
sensorsOne.requestTemperatures();
sensorsTwo.requestTemperatures();
float CelsiusOne = sensorsOne.getTempCByIndex(0);
float CelsiusTwo = sensorsTwo.getTempCByIndex(0);
// Calculate the temperature difference with sensor one as the main temperature
float tempDifferenceC = CelsiusTwo - zeroPoint;
// Check if the temperature difference is negative
if (tempDifferenceC < 0) {
setZeroPoint(); // Reset the zero point
tempDifferenceC = 0; // Reset the temperature difference
Serial.println("Zero point readjusted due to negative difference.");
}
// Print the temperature difference
Serial.print("Temperature Difference from Sensor One: ");
Serial.print(tempDifferenceC);
Serial.println(" C");
float tempRate = (CelsiusTwo - lastCelsiusTwo); // Temperature change rate in °C/s
if (abs(tempRate) >= 0.5) {
Serial.print("Sudden Temperature Change Detected: ");
Serial.print(tempRate);
Serial.println(" °C/s");
}
// Update the last temperature and time
lastCelsiusTwo = CelsiusTwo;
}
// Function to set the zero point
void setZeroPoint() {
sensorsOne.requestTemperatures();
zeroPoint = sensorsOne.getTempCByIndex(0);
}