#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
//#include <DHT.h> //Inclusão da biblioteca DHT
#include <DallasTemperature.h>
#define SCREEN_WIDTH 128 // Largura do display OLED
#define SCREEN_HEIGHT 64 // Altura do display OLED
//DHT SensorDHT(13, DHT22);
#define ledTemp 25
const int oneWireBus = 12;
// Configura uma instância oneWire para se comunicar com qualquer dispositivo OneWire
OneWire oneWire(oneWireBus);
// Passe nossa referência oneWire para o sensor de temperatura Dallas
DallasTemperature sensors(&oneWire);
float temperaturaC; //Armazena a temperatura
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire);
void setup() {
// Inicializa o monitor serial
Serial.begin(115200);
sensors.begin();// Inicia o DS18B20 sensor
pinMode(ledTemp, OUTPUT);
// Inicializa o display OLED
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Endereço I2C do display 0x3C
Serial.println(F("Falha ao inicializar o display OLED!"));
// for (;;);
}
display.clearDisplay();
display.setTextSize(1); // Tamanho do texto
display.setTextColor(SSD1306_WHITE); // Cor do texto
display.setCursor(0, 0);
display.println("Inicializando...");
display.display(); // Exibe o texto inicial
delay(2000); // Pausa para a inicialização
}
void loop() {
// Solicita a leitura da temperatura ao sensor
sensors.requestTemperatures();
// Obtém a temperatura em graus Celsius e Fahrenheit
temperaturaC = sensors.getTempCByIndex(0);
if (temperaturaC > 35){
digitalWrite(ledTemp, HIGH);
}
else {
digitalWrite(ledTemp, LOW);
}
//Exibe a temperatura no Serial Monitor
Serial.print("Temperatura: ");
Serial.println(temperaturaC);
Serial.print("°C");
delay(500);
// Exibe o valor no OLED
display.clearDisplay();
display.setCursor(0, 0); // Define a posição inicial
display.setTextSize(1); // Aumenta o tamanho do texto
display.print("Temperatura: ");
display.println(temperaturaC);
display.display(); // Atualiza o display
// Pequena pausa antes da próxima leitura
delay(500);
}