// TUGAS 4 MIKROKONTROLLER DAN IOT //
// GELVAN FERNANDO PELLAUPESSY //
// 42222025 //
// 2A TRJT //
#define ADC_VREF_mV 3300.0 // Dalam Milivolt untuk ESP32
#define ADC_RESOLUTION 4096.0 // Resolusi ADC ESP32 adalah 12-bit (0 - 4095)
#define PIN_LM35 14
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM232D
DHT dht(DHTPIN, DHTTYPE);
#include <OneWire.h>
#include <DallasTemperature.h>
OneWire oneWire(4);
DallasTemperature sensor(&oneWire);
void setup() {
Serial.begin(115200);
delay(2);
sensor.begin(); // Memulai komunikasi dengan sensor DS18B20
delay(20);
dht.begin(); // Memulai komunikasi dengan sensor DHT22
}
void loop() {
// SCRIPT SENSOR LM35
int adcVal = analogRead(PIN_LM35);
float milliVolt = adcVal * (ADC_VREF_mV / ADC_RESOLUTION); // Mengkonversi Nilai ADC Ke Tegangan Dalam Milivolt
float tempC = milliVolt / 12; // Mengkonversi Tegangan Ke Suhu Dalam Celcius
// SCRIPT SENSOR DHT22
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Cek jika pembacaan sensor DHT22 gagal
if (isnan(temperature) || isnan(humidity)) {
Serial.println(F("Failed to read from DHT sensor!"));
delay(1000);
return;
}
// SCRIPT SENSOR DS18B20
sensor.requestTemperatures(); // Meminta pembacaan suhu dari sensor DS18B20
float tempDS18B20 = sensor.getTempCByIndex(0); // Membaca suhu dari sensor DS18B20
// Mencetak hasil pembacaan sensor
Serial.print("Suhu LM35: ");
Serial.print(tempC);
Serial.println("°C");
Serial.print(F("Kelembapan DHT22: "));
Serial.print(humidity);
Serial.print(F(" ~ Suhu DHT22: "));
Serial.print(temperature);
Serial.println(F("°C "));
Serial.print("Suhu DS18B20: ");
Serial.println(tempDS18B20);
delay(2500);
}