#include <Wire.h>                        // Include Wire library (required for I2C devices)
#include <Adafruit_GFX.h>                // Include Adafruit graphics library
#include <Adafruit_SSD1306.h>            // Include Adafruit SSD1306 OLED driver
#include <DHT.h>                         // Include DHT library code

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

#define DHTPIN  0                        // DHT22 data pin is connected to Arduino pin 8
#define DHTTYPE DHT22  
DHT dht(DHTPIN, DHTTYPE);

char temperature[] = " 00.0 C";
char humidity[]    = " 00.0 %";

void setup(void) {
  delay(1000);

  // by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
  display.begin(SSD1306_SWITCHCAPVCC, 0x3D);  // initialize with the I2C addr 0x3D (for the 128x64)
  // init done

  dht.begin();       
 display.clearDisplay();

  display.drawFastHLine(0, 32, SSD1306_LCDWIDTH, WHITE);

  display.setTextSize(1);
  display.setTextColor(WHITE, BLACK);
  display.setCursor(0, 5);
  display.print("TEMPERATURE:");
  display.setCursor(0,20 );
  display.print("HUMIDITY:");
  display.display();
}
void loop() {

  // Read humidity
  int RH = dht.readHumidity() * 10;
  //Read temperature in degree Celsius
  int Temp = dht.readTemperature() * 10;

  if(Temp < 0){
    temperature[0] = '-';
    Temp = abs(Temp);
  }

else
    temperature[0] = ' ';
  temperature[1]  = (Temp / 100) % 10  + 48;
  temperature[2]  = (Temp / 10)  % 10  + 48;
  temperature[4]  =  Temp % 10 + 48;
  if(RH >= 1000)
    humidity[0]   = '1';
  else
    humidity[0]   = ' ';
  humidity[1]     = (RH / 100) % 10 + 48;
  humidity[2]     = (RH / 10) % 10 + 48;
  humidity[4]     =  RH % 10 + 48;
 display.setCursor(70, 05);
  display.print(temperature);
  display.setCursor(50, 20);
  display.print(humidity);
  display.drawRect(102, 5, 3, 3, WHITE);     // Put degree symbol ( ° )
  display.display();

  delay(1000);

}