#include <Wire.h>
#include <DHT.h>
/* ----------------------------------------------------
DHT SENSOR CONFIGURATION
---------------------------------------------------- */
#define DHTPIN 15
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
/* ----------------------------------------------------
SLIDE SWITCH CONFIGURATION
LOW = Celsius
HIGH = Fahrenheit
---------------------------------------------------- */
#define SWITCH_PIN 4
/* ----------------------------------------------------
SETUP FUNCTION
Runs once when the board starts
---------------------------------------------------- */
void setup() {
// Start Serial Monitor
Serial.begin(9600);
// Initialize DHT sensor
dht.begin();
// Set slide switch pin as input
pinMode(SWITCH_PIN, INPUT);
}
/* ----------------------------------------------------
LOOP FUNCTION
Runs continuously
---------------------------------------------------- */
void loop() {
/* -------- Read sensor values -------- */
float temperatureC = dht.readTemperature(); // Celsius
float humidity = dht.readHumidity();
// Check if sensor reading failed
if (isnan(temperatureC) || isnan(humidity)) {
Serial.println("Failed to read from DHT sensor");
return;
}
/* -------- Read slide switch state -------- */
int switchState = digitalRead(SWITCH_PIN);
/* -------- Temperature unit logic -------- */
float displayedTemperature;
String temperatureUnit;
// If switch is LOW → Celsius
if (switchState == LOW) {
displayedTemperature = temperatureC;
temperatureUnit = "C";
}
// If switch is HIGH → Fahrenheit
else {
displayedTemperature = (temperatureC * 9.0 / 5.0) + 32.0;
temperatureUnit = "F";
}
/* -------- Serial Monitor Output -------- */
Serial.print("Temp: ");
Serial.print(displayedTemperature);
Serial.print(" ");
Serial.print(temperatureUnit);
Serial.print(" | Humidity: ");
Serial.print(humidity);
Serial.println(" %");
// Wait before next update
delay(2000);
}