#include // Include the microDS18B20 library MicroDS18B20<26> sensor1; // DS18B20 sensor on GPIO 26 MicroDS18B20<27> sensor2; // DS18B20 sensor on GPIO 27 const int ledPin = 22; // LED on GPIO 22 bool overrideActive = false; // Flag: are we in override mode? bool overrideState = LOW; // Forced LED state when overridden void setup() { Serial.begin(9600); // Start serial at 9600 baud (no banners) pinMode(ledPin, OUTPUT); // Configure LED pin as output } void loop() { // 1) Start a new temperature conversion on both sensors sensor1.requestTemp(); sensor2.requestTemp(); // 2) Wait for conversion to complete (12-bit ≈750 ms; wait 1 s to be sure) delay(1000); // 3) Read temperatures (in °C) from the sensors float t1 = sensor1.getTemp(); float t2 = sensor2.getTemp(); // 4) Compute the mean of the two readings float meanTemp = (t1 + t2) / 2.0; // 5) Check for an incoming override command ('1' or '0') if (Serial.available() > 0) { char cmd = Serial.read(); if (cmd == '1') { overrideActive = true; overrideState = HIGH; } else if (cmd == '0') { overrideActive = true; overrideState = LOW; } } // 6) Control the LED: override if active, else auto on mean ≥23 °C if (overrideActive) { digitalWrite(ledPin, overrideState); } else { if (meanTemp >= 23.0) digitalWrite(ledPin, HIGH); else digitalWrite(ledPin, LOW); } // 7) Send one CSV line: mean;t1;t2\n (two decimals, no extra text) Serial.print(meanTemp, 2); Serial.print(';'); Serial.print(t1, 2); Serial.print(';'); Serial.print(t2, 2); Serial.print('\n'); }