#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "DHTesp.h"
const int NTC_PIN = 14;
const int DHT_PIN = 15;
// Konfigurasi sensor NTC
const int NTC_REFERENCE_RESISTANCE = 10000; // Resistansi NTC pada suhu referensi (misalnya 25°C)
const int NTC_REFERENCE_TEMPERATURE = 25; // Suhu referensi dalam Celsius
const int NTC_SERIES_RESISTOR = 10000; // Nilai resistor seri NTC
const int BETA = 3950;
Adafruit_SSD1306 display(128, 64, &Wire, -1);
DHTesp dhtSensor;
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
int analogValue = analogRead(NTC_PIN);
float resistance = NTC_SERIES_RESISTOR / (4095.0 / analogValue - 1.0);
float tempK = 1.0 / (1.0 / (NTC_REFERENCE_TEMPERATURE + 273.15) + log(resistance / NTC_REFERENCE_RESISTANCE) / BETA);
float tempC = tempK - 273.15;
//float ntcTemperature = celcius(); // untuk membaca suhu NTC
Serial.println("Temp DHT: " + String(data.temperature, 1) + "°C");
Serial.println("Humidity DHT: " + String(data.humidity, 1) + "%");
Serial.println("Temp NTC: " + String(tempC) + "°C");
//Serial.println("Humidity NTC: " + steinhart + "C");
Serial.println("---");
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("Humidity DHT : ");
display.setCursor(50,10);
display.println(String(data.humidity) + "%");
display.setCursor(0,20);
display.println("Temperature DHT: ");
display.setCursor(50,30);
display.println(String(data.temperature) + "C");
display.setCursor(0,40);
display.println("Temperature NTC: ");
display.println(String(tempC) + "C");
display.display();
delay(2000);
}