#include "DHT.h"
#define DHTPIN 2 // Pin data DHT22 terhubung ke pin D2
#define DHTTYPE DHT22 // Tipe sensor DHT22
DHT dht(DHTPIN, DHTTYPE);
const int numSamples = 10; // Jumlah sampel untuk MA Filter
float temperatureReadings[numSamples]; // Array untuk menyimpan sampel suhu
int index = 0; // Indeks array
float total = 0; // Total nilai sampel
float average = 0; // Rata-rata nilai
void setup() {
Serial.begin(9600);
dht.begin();
// Inisialisasi array dengan nilai awal 0
for (int i = 0; i < numSamples; i++) {
temperatureReadings[i] = 0.0;
}
}
void loop() {
// Baca suhu dari DHT22
float temperature = dht.readTemperature();
// Pastikan pembacaan valid
if (isnan(temperature)) {
Serial.println("Gagal membaca dari sensor DHT!");
return;
}
// Moving Average Filter
total -= temperatureReadings[index]; // Kurangi nilai lama dari total
temperatureReadings[index] = temperature; // Simpan nilai baru ke array
total += temperatureReadings[index]; // Tambahkan nilai baru ke total
average = total / numSamples; // Hitung rata-rata
index = (index + 1) % numSamples; // Pindahkan indeks ke sampel berikutnya
// Tampilkan hasil
Serial.print("Suhu Mentah: ");
Serial.print(temperature);
Serial.print(" °C | Suhu Setelah Filter: ");
Serial.print(average);
Serial.println(" °C");
delay(1000); // Tunggu 1 detik sebelum membaca lagi
}