#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define DHT_TYPE DHT22
#define DHT_PIN 2
#define LED 8
#define LED2 9
DHT dht(DHT_PIN, DHT_TYPE);
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
dht.begin();
pinMode(LED, OUTPUT);
pinMode(LED2, OUTPUT);
Serial.begin(9600);
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("failed to start SSD1306 OLED"));
while (1);
}
oled.setTextSize(1);
oled.setTextColor(WHITE);
delay(2000);
oled.clearDisplay();
}
void mostrar(float h, float t){
if(t >= 30){
digitalWrite(LED,1);
}else{
digitalWrite(LED,0);
}
oled.setCursor(0, 20);
oled.print("Temperatura");
oled.setCursor(80, 20);
oled.print(t);
oled.setCursor(120,20);
oled.print("C");
oled.setCursor(0,45);
oled.print("Humidade");
oled.setCursor(80,45);
oled.print(h);
oled.setCursor(120,45);
oled.print("%");
oled.display();
}
float tAnt, hAnt;
void loop() {
float t = dht.readTemperature();
float h = dht.readHumidity();
if(h <= 20){
digitalWrite(LED2,!digitalRead(LED2));
}
if (!isnan(h) || !isnan(t)) {
if(t != tAnt || h != hAnt ){
Serial.println("Temperatura: " + String(t) + " oC");
Serial.println("Humidade: " + String(h) + " %");
tAnt = t;
hAnt = h;
mostrar(h,t);
}
}else{
Serial.println("Problema no Sensor de temperatura.");
}
delay(1000);
}