Skip to main content

new

#include <DHT.h>

#define DHTPIN 2
#define DHTTYPE DHT11

// Inisialisasi sensor DHT
DHT dht(DHTPIN, DHTTYPE);

// Variabel untuk manajemen waktu pembacaan tanpa delay (Non-blocking)
unsigned long previousMillis = 0;
const long interval = 1000; // Interval pengiriman data (1000 ms = 1 detik)

void setup()
{
// Menginisialisasi komunikasi serial dengan Baud Rate 9600
Serial.begin(9600);

// Menginisialisasi sensor DHT11
dht.begin();
}

void loop()
{
// Mendapatkan waktu saat ini dalam milidetik sejak program berjalan
unsigned long currentMillis = millis();

// Memeriksa apakah interval waktu telah terpenuhi
if (currentMillis - previousMillis >= interval)
{
// Memperbarui timestamp eksekusi terakhir
previousMillis = currentMillis;

// Membaca data temperatur dan kelembaban
float suhu = dht.readTemperature();
float hum = dht.readHumidity();

// Validasi data (menghindari error jika sensor gagal merespon / disconnected)
if (isnan(suhu) || isnan(hum))
{
// Mengirimkan pesan log error ke serial untuk mempermudah debugging
// Serial.println("Error: Gagal membaca data dari sensor DHT11");
return;
}

// Mengirimkan data dengan format terstruktur yang dikenali oleh aplikasi C#
// Format keluaran: S:[nilai_suhu],H:[nilai_kelembaban]
Serial.print("S:");
Serial.print(suhu, 1); // Menggunakan 1 angka di belakang koma untuk efisiensi data
Serial.print(",H:");
Serial.println(hum, 1); // Serial.println otomatis menyertakan karakter newline (\n)
}
}