#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "DHTesp.h"
const int DHT_PIN = 15;
#define SCREEN_WIDTH 128 // OLED width, in pixels
#define SCREEN_HEIGHT 64 // OLED height, in pixels
// create an OLED display object connected to I2C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
DHTesp dhtSensor;
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
// initialize OLED display with I2C address 0x3C
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("failed to start SSD1306 OLED"));
for(;;);
}
pinMode(25, OUTPUT);
pinMode(26, OUTPUT);
pinMode(27, OUTPUT);
delay(2000); // wait two seconds for initializing
display.clearDisplay(); // clear display
display.setTextSize(1); // set text size
display.setTextColor(WHITE); // set text color
display.setCursor(0, 5); // set position to display (x,y)
TempAndHumidity data = dhtSensor.getTempAndHumidity();
delay(100);
}
void loop() {
display.clearDisplay();
display.setCursor(0, 5);
TempAndHumidity data = dhtSensor.getTempAndHumidity();
display.println("Temp: " + String(data.temperature, 2) + "°C");
display.println("Humidity: " + String(data.humidity, 1) + "%");
display.display();
digitalWrite(25,LOW);
digitalWrite(26,LOW);
digitalWrite(27,LOW);
if(data.temperature >= 22){
digitalWrite(25,HIGH);
}
else{
digitalWrite(25,LOW);
}
if(data.temperature <= 18){
digitalWrite(26,HIGH);
}
else{
digitalWrite(26,LOW);
}
if(data.humidity < 40 and (> 50)){
digitalWrite(27,HIGH);
}
else{
digitalWrite(27,LOW);
}
delay(2000); // Wait for a new reading from the sensor (DHT22 has ~0.5Hz sample rate)
digitalWrite(27,HIGH);
}