#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);
}