#include <DHT.h>
#define DHTPIN 2 // Pin untuk sensor DHT
#define DHTTYPE DHT22 // Tipe sensor DHT
DHT dht(DHTPIN, DHTTYPE);
volatile float temperatureData[10]; // Array untuk menyimpan data suhu
volatile int dataIndex = 0; // Indeks array
volatile bool dmaTransferComplete = false; // Status transfer DMA
unsigned long lastReadTime = 0; // Waktu pembacaan terakhir
const unsigned long readInterval = 1000; // Interval pembacaan dalam milidetik (1 detik)
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
// Cek apakah sudah waktunya untuk membaca suhu
if (millis() - lastReadTime >= readInterval && dataIndex < 10) {
lastReadTime = millis(); // Update waktu pembacaan terakhir
float temp = dht.readTemperature(); // Baca suhu
if (!isnan(temp)) {
temperatureData[dataIndex++] = temp; // Simpan suhu ke array
}
}
// Ketika 10 data suhu sudah disimpan
if (dataIndex >= 10) {
dmaTransferComplete = true; // Tandai transfer selesai
// Tampilkan data suhu ke Serial Monitor
Serial.println("Data Suhu:");
for (int i = 0; i < dataIndex; i++) {
Serial.println(temperatureData[i]);
}
// Reset untuk pembacaan berikutnya
dmaTransferComplete = false;
dataIndex = 0;
}
}