#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "DHTesp.h"
const int DHT_PIN = 15;
const int LED_PIN = 13;
const float TEMP_THRESHOLD = 25.0;
DHTesp dht;
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
dht.setup(DHT_PIN, DHTesp::DHT22);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("Échec d'allocation de l'écran OLED"));
for(;;);
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
}
void loop() {
TempAndHumidity data = dht.getTempAndHumidity();
if (isnan(data.temperature) || isnan(data.humidity)) {
Serial.println("Échec de la lecture du DHT22 !");
display.clearDisplay();
display.setCursor(0, 0);
display.println("Erreur de lecture");
display.display();
delay(2000);
return;
}
Serial.println("Température : " + String(data.temperature, 2) + "°C");
Serial.println("Humidité : " + String(data.humidity, 1) + "%");
display.clearDisplay();
display.setCursor(0, 0);
display.println("Temperature: " + String(data.temperature, 2) + " C");
display.println("Humidity: " + String(data.humidity, 1) + " %");
if (data.temperature < TEMP_THRESHOLD) {
digitalWrite(LED_PIN, HIGH);
display.println("Heating: ON");
} else {
digitalWrite(LED_PIN, LOW);
display.println("Heating: OFF");
}
display.display();
delay(2000);
}