#define DHT_PIN 2
#define DHT_TYPE DHT22
#include <DHT.h>
DHT dht(DHT_PIN, DHT_TYPE);
const int numReadings = 10;
float temperatureReadings[numReadings];
float humidityReadings[numReadings];
int currentIndex = 0;
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
// Membaca sensor kerja
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
//
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
//
temperatureReadings[currentIndex] = temperature;
humidityReadings[currentIndex] = humidity;
//
currentIndex = (currentIndex + 1) % numReadings;
// Menghitung Filter Moving Average
float temperatureAvg = 0;
float humidityAvg = 0;
for (int i = 0; i < numReadings; i++) {
temperatureAvg += temperatureReadings[i];
humidityAvg += humidityReadings[i];
}
temperatureAvg /= numReadings;
humidityAvg /= numReadings;
// Print data to Serial Monitor
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print("°C, Humidity: ");
Serial.print(humidity);
Serial.println("%");
// Plot moving averages on Serial Plotter
Serial.print("Moving Avg Temp: ");
Serial.print(temperatureAvg);
Serial.print("°C, Moving Avg Humidity: ");
Serial.print(humidityAvg);
Serial.println("%");
delay(1000); // Delay
}