#include "DHT.h"
#include "SSD1306.h"
#include <SD.h>
SSD1306 display(0x3c, 5, 4);
DHT dht(16, DHT22);
float t; // Temperatura
float h; // Umidade
const int chipSelect = 10; // Pino CS do microSD
void setup() {
// Inicializar o sensor DHT
dht.begin();
// Inicializar o display OLED
display.init();
display.clear();
// Inicializar o cartão microSD
if (!SD.begin(chipSelect)) {
display.clear();
display.setFont(ArialMT_Plain_16);
display.drawString(0, 0, "Erro SD!");
display.display();
while (1); // Se falhar, entra em loop infinito
}
display.clear();
}
void loop() {
// Ler a umidade e a temperatura
h = dht.readHumidity();
t = dht.readTemperature();
// Exibir no display OLED
display.clear();
display.drawRect(10, 10, 80, 50);
display.setFont(ArialMT_Plain_16);
display.drawString(20, 14, (String)t + " °C");
display.drawString(20, 35, (String)h + " %");
display.flipScreenVertically();
display.display();
// Abrir o arquivo no microSD e gravar os dados
File dataFile = SD.open("dados.txt", FILE_WRITE);
if (dataFile) {
dataFile.print("Temperatura: ");
dataFile.print(t);
dataFile.print(" °C, ");
dataFile.print("Umidade: ");
dataFile.print(h);
dataFile.println(" %");
dataFile.close(); // Fechar o arquivo
} else {
display.clear();
display.setFont(ArialMT_Plain_16);
display.drawString(0, 0, "Erro gravar SD!");
display.display();
}
delay(1000); // Esperar 1 segundo antes de ler novamente
}