#include <Arduino.h>
#include <DHT.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// Pin definisi
#define MQ4_PIN PA0
#define PH_PIN PA1
#define SOIL_PIN PA2
#define DHT_PIN PA3
#define DS18B20_PIN PA4 // Pilih pin bebas untuk DS18B20
// Inisialisasi DHT
#define DHTTYPE DHT22
DHT dht(DHT_PIN, DHTTYPE);
// Inisialisasi DS18B20
OneWire oneWire(DS18B20_PIN);
DallasTemperature ds18b20(&oneWire);
void setup() {
Serial.begin(9600);
dht.begin();
ds18b20.begin();
pinMode(MQ4_PIN, INPUT);
pinMode(PH_PIN, INPUT);
pinMode(SOIL_PIN, INPUT);
}
void loop() {
// === 1. Baca nilai analog ===
int mq4ADC = analogRead(MQ4_PIN);
int phADC = analogRead(PH_PIN);
int soilADC = analogRead(SOIL_PIN);
// === 2. Konversi satuan ===
float mq4_ppm = map(mq4ADC, 0, 1023, 200, 10000);
float phValue = (phADC / 1023.0) * 14.0;
float soilPercent = map(soilADC, 1023, 0, 0, 100);
// === 3. Baca DHT22 ===
float tempC = dht.readTemperature();
float humidity = dht.readHumidity();
// === 4. Baca DS18B20 ===
ds18b20.requestTemperatures();
float tempDS = ds18b20.getTempCByIndex(0); // sensor ke-0
// === 5. Tampilkan data ===
Serial.println("=== Hasil Baca Sensor ===");
Serial.print("MQ-4 (Metana): ");
Serial.print(mq4_ppm); Serial.println(" ppm");
Serial.print("pH Air/Tanah : ");
Serial.print(phValue, 2); Serial.println(" pH");
Serial.print("Kelembapan Tanah: ");
Serial.print(soilPercent); Serial.println(" %");
Serial.print("Suhu DHT22 : ");
Serial.print(tempC); Serial.println(" °C");
Serial.print("Suhu DS18B20 : ");
Serial.print(tempDS); Serial.println(" °C");
Serial.print("Kelembapan RH : ");
Serial.print(humidity); Serial.println(" %");
Serial.println("========================\n");
delay(1500);
}