/***************** DHT ******************/
#define DHTPIN 8
#include "DHTStable.h" // DHT library test sketch for DHT22/DHT11 && Arduino "AUTHOR: Rob Tillaart"
// URL: https://github.com/RobTillaart/DHTstable
DHTStable DHT; // Initialize the DHT Library
int HUM = 0;
int TEMP = 0;
/***************************************/
/**************** OLED *****************/
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
/***************************************/
void setup()
{
Serial.begin(115200);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64
Serial.println(F("SSD1306 allocation failed"));
for(;;);
};
}
void loop()
{
/****** For DHT22 *******/
//int chk = DHT.read22(DHTPIN);
/************************/
/****** For DHT11 *******/
int chk = DHT.read11(DHTPIN);
/************************/
HUM = DHT.getHumidity(); // Read the humidity
TEMP = DHT.getTemperature(); // Read the temperature
/**** Display Data *****/
Serial.print("Humidity");Serial.println(HUM);
Serial.print("Temperature");Serial.println(TEMP);
display.clearDisplay();
oledDisplayHeader();
oledDisplay(3,5,28,HUM,"%"); // Display humidity
oledDisplay(2,70,16,TEMP,"C");// Display temperature
display.display();
/************************/
delay(2000);
}
/*************** Generate OLED Header ***************/
void oledDisplayHeader()
{
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.print("Humidity");
display.setCursor(60, 0);
display.print("Temperature");
}
/*************** Generate OLED Display ***************/
void oledDisplay(int size, int x,int y, float value, String unit)
{
int charLen = 12;
int xo = x + charLen*3.2;
int xunit = x + charLen*3.6;
int xval = x;
display.setTextSize(size);
display.setTextColor(WHITE);
if (unit=="%"){
display.setCursor(x, y);
display.print(value,0);
display.print(unit);
} else {
if (value>99){ xval = x; }
else { xval = x + charLen; };
display.setCursor(xval, y);
display.print(value,0);
display.drawCircle(xo, y + 2, 2, WHITE); // Print degree symbols
display.setCursor(xunit, y);
display.print(unit);
};
}