#include "DHT.h"
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
// OLED
#define OLED_WIDTH 128
#define OLED_HEIGHT 64
#define OLED_ADDR 0x3C
// DHT 22
#define DHTPIN 15 // DHT PIN 2
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
DHT dht(DHTPIN, DHTTYPE);
Adafruit_SSD1306 display(OLED_WIDTH, OLED_HEIGHT, & Wire, -1);
void setup() {
Serial.begin(9600);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("failed to start SSD1306 DISPLAY"));
while (1);}
delay(1000);
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 2);
display.display();
dht.begin();
}
void loop() {
float c = dht.readTemperature();// Read temperature (default in celcius)
float h = dht.readHumidity();// Read humidity percentage
float f, k;
f = 1.8 * c + 32.0;
k = 273.15 + c;
// Check if any reads failed and exit early (to try again).
if (isnan(c) || isnan(h)) {
Serial.println("Failed to read from DHT sensor!"); //Could have connected wrong pin
return;
}
// Show output in IDE
Serial.println("+-------------------------------+");
Serial.println("| ENVIRONTMENT STATUS |");
Serial.println("| Temp in celcius : "+String(c)+"°C |");
Serial.println("| Temp in farenheit : "+String(f)+"°C |");
Serial.println("| Temp in kelvin : "+String(k)+"K |");
Serial.println("| Humidity : "+String(h)+"% |");
Serial.println("+-------------------------------+");
Serial.println("-@-");
// Show output in OLED
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 2);
display.println("Temp : "+String(c)+"°C | "+String(f)+"°F |"+String(k)+" K");
display.print("Humidity : "+String(h)+"%");
display.display();
delay(10000);
}